#parrot Parrot 2.2.0 "Like Clockwork" Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Improve Rakudo rx and buildtime performance | Fix HLL bugs (TT #389, #1040) | Prioritize Rakudo Needs and roadmap items
Set by moderator on 30 March 2010.
00:06 rt7 joined 00:33 cottoo joined 00:36 lucian joined
eric_j x 00:49
00:52 abqar joined 00:53 cotto joined 01:18 Andy joined 01:30 tcurtis joined 01:31 leprevost joined 01:49 mikehh joined 01:50 cotto joined
Austin I think that shall never envision 01:51
an op unlovely as division.
An op whose answer must be guessed,
and then, through multiply, assessed.
An op for which we dearly pay
in cycles wasted every day. 01:52
chromatic Accuracy thrown upon the floor
Thanks to IEEE seven eight four
davidfetter but that's sane. if you want mental 01:54
try some functions transcendental
01:55 Psyche^ joined 02:06 lucian joined 02:17 theory joined
dalek rrot: r45375 | jkeenan++ | trunk/t/steps/auto/arch-01.t:
Because of they way in which the determination of cpuarch has changed on

passing. Temporarily commenting out all tests simulating Darwin until we can devise a workaround.
02:22
02:23 JimmyZ joined 02:28 theory joined
dalek rrot: r45376 | jkeenan++ | trunk/config/auto/arch.pm:
Correct incorrect commenting out.
02:38
rrot: r45377 | jkeenan++ | trunk/t/steps/auto/arch-01.t:
Correct incorrect commenting out.
rrot: r45378 | jkeenan++ | trunk/config/auto/arch.pm:
Revert to previous version. Last commit was premature.
02:41 janus joined 02:49 atrodo joined
GeJ_ Hello all. 02:50
purl It's a crazy world, but hello to you too!
GeJ Did anyone report a recent test failure in t/compilers/imcc/syn/regressions.t 02:52
nopaste "GeJ" at 202.171.79.135 pasted "Recent t/compilers/imcc/syn/regressions.t (not there earlier this week)" (10 lines) at nopaste.snit.ch/20160 02:55
GeJ "failure" you moron! "Recent t/compilers/imcc/syn/regressions.t failure." 02:56
chromatic There are updates in TT #641 on that recently. 02:57
Coke (not there because the test that is failing was just added.) 03:02
it has since been todo'd, I thought.
also: it doesn't fail for me, so I can't fix it. =-)
GeJ Dammit! Sorry about the noise. Should have checked that myself since it was in the error message. Apologies.
03:04 elmex joined, bubaflub joined
Coke ... it is sad to me that it is easier to write PIR than NQP still. 03:15
sorear I find writing assembly easier than writing Perl 03:21
it just takes longer
03:40 theory_ joined, ash_ joined
dalek rtcl-nqp: 553213c | Coke++ | (2 files):
move test into 'make test' and todo the one failing test.
03:45
rtcl-nqp: ff2c4f1 | Coke++ | (2 files):
move test into 'make test' and todo the one failing test.
rtcl-nqp: 9bd6294 | Coke++ | (2 files):
todo the tests we fail, but run this file with 'make test'
rtcl-nqp: 6fc8b70 | Coke++ | (3 files):
Translate partcl's PIR-based [foreach] into NQP.
Austin Mmm.. the full backup is going to take more than 24 hours.. gotta love USB... 03:47
usb--
ash_ firewire++? or usb 3.0, or e-sata? 03:52
Austin It's a laptop. 03:53
NAS would be my best bet.
But usb storage is cheap.
And it's only once a month...
ash_ i try to do a backup every 3-5 days, just cause i use a laptop all the time and had 1 harddrive go bad on me already, don't wana loose anything again 03:54
03:56 bubaflub left
ash_ so... do you think doing PAST optimizations or working on an llvm stack frame builder would be more beneficial? i am trying to figure out my proposal for a GSOC 03:57
Austin Heh. Me too - I run incrementals every day. 03:59
I thought your original proposal was for the stack frame builder. That seems like the safer investment to me - "safer" meaning that it's likely to last longer without getting obsoleted. 04:00
ash_ yeah, i just think it might not take me the whole time
i guess i could do libffi too, to replace the current NCI system 04:01
i was talking to whiteknight a while back, he was saying AST level optimizations might be useful, (see irclog.perlgeek.de/parrot/2010-03-31#i_2178629 ) 04:06
Austin They'd be useful, no doubt. But there are too many projects pulling in too many directions for me to consider doing it anything but risky. 04:07
As for not taking the whole time, it has never been my experience that software development takes less time than you think it will...
ash_ yeah, thats kinda what i was thinking
yeah, thats also my thinking
it doesn't seem like it will take me the whole time to do the llvm stack frame builder, but i know it will take longer than i expect 04:08
sorear ponders a POSIX stack frame builder 04:10
ash_ especially since i'd be working with stuff i am not greatly familiar with, but whiteknight thought it wouldn't take me that long, i think plobsing said he didn't think it would be to much work, he did a stack frame builder for libjit, but i'd expect it to take me at least half the time, if not more
but i don't really know the internals of parrot enough to say i'd be working on XXX module for week 1-2, YYY module for 3-4, etc. which is something they'd like in the propsal
Austin If you don't know that, then you can't really make an estimate. 04:11
And, of course, you have to add "learn all that crap" to the front of the project schedule.
ash_ sorear: by POSIX you mean? .... 04:12
sorear ash_: POSIX.1-2008, www.opengroup.org/onlinepubs/009695399/
er, .2004
POSIX provides for a C99 compiler and dlopen 04:13
that's all we need
ash_ i have been working with the llvm for my project i am doing right now, a compiler independent study, i am trying to implement some of nqp, (nq-nqp is what i am calling it, i think i can get most things to work except regexs)
sorear non-portable stuff like libffi will be much faster of course
*a C99 compiler available at runtime 04:14
ash_ libffi is pretty cross platform, as far as i can tell 04:15
sorear What is the standard meaning of 'cheats' in PCT-based compilers? 04:16
Austin Stuff in pir
Stuff that you can't do in nqp, or in regex, or whatever. 04:17
Basically, the stuff that has to be hacked together to get the rest of the system to work.
04:20 plobsing joined 04:25 theory joined
sorear Can you write a tailcall in NQP? 04:39
Austin No 04:40
You can emit pir that does it, if you're careful.
Q:PIR { ... pir code .. };
sorear is rewriting some predates-NQP PIR code that doesn't actually still need to be PIR 04:41
it's littered with tailcalls, because they're typing-efficient in PIR
Austin Heh 04:42
sorear Adding all these extra stack frames stings a little 04:45
Austin: Is it possible to use perldoc with NQP-rx? 04:59
Austin Questionable.
sorear my PIR has lots of 5-POD
Austin NQP has pod support, but it tries to be pod6.
So you'll have to surround everything with =begin =end 05:00
sorear POD6? I would have thought that POD was good enough if anything in Perl was
Austin And =cut is dead.
Don't get me started.
Pod6 is xml with equal signs.
chromatic POD was never good enough. 05:01
Austin True. 05:02
And now POD6 is, too.
05:18 ash_ joined 06:52 eiro joined, eiro_ joined, eiro joined 06:55 theory joined 07:32 bubaflub joined
sorear Does PIR have a line continuation syntax? 07:42
07:48 jjore joined 07:49 jjore joined 08:03 dalek joined
sorear I keep forgetting to wait for dalek before big pushes 08:04
dalek izkost: b6cfbb4 | sorear++ | perl5.pir:
Use the actual symbolic constants
08:05
izkost: 4efce50 | sorear++ | perl5.pir:
Use an actual attribute for the interpreter cache
izkost: 98818c9 | sorear++ | examples/tk.pl:
Work around a NQP limitation caught by jnthn++
izkost: 929684b | sorear++ | perl5.pir:
Eliminate the deparse-reparse from module loading
08:09 bwk joined
bwk \\quit 08:09
08:13 iblechbot joined
dalek izkost: 5145ceb | sorear++ | (2 files):
Switch to PDD-31 style load_module

seem to imply parse_name is unimplementable for Perl 5. It will probably be gone in my PDD-31 replacement draft.
08:27
08:53 fperrad joined 10:07 clinton joined
mikehh codetest failure - t/codingstd/pir_code_coda.t - for file t/profiling/profiling.t which is in fact nqp so the test is wrong 10:37
all other tests PASS (pre/post-config, make corevm/make coretest, smoke (#32966), fulltest) at r45378 - Ubuntu 9.10 i386 (g++ with --optimize)
dalek rrot: r45379 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] fix install on *nix
10:38
p-rx: 31b97cc | sorear++ | (2 files):
Implement paragraph and abbreviated Pod comments

for the multiline declaration comment (left out on purpose, it's useless without a metamodel) and paragraph blocks which are terminated by the start of a delimited block (a corner case that STD fails too).
11:10
rrot: r45380 | jkeenan++ | trunk (2 files):
Reinstate tests to simulate Darwin.
11:12
11:13 kid51 joined 11:18 riffraff joined
dalek kudo: 1c57374 | moritz++ | src/core/metaops.pm:
implement 0-ary infix operators, to be used as the degenerated case by the reduce meta operator
11:23
mikehh getting a Segmentation fault in t/compilers/imcc/syn/regressions.t - Failed test: 18 on g++ (no --optimize) which I don't get on g++ with --optimize - Ubuntu 9.04 i386 11:35
get the same results with gcc the test passes with --optimize and fails without 11:47
11:56 payload joined 11:58 payload joined 12:03 snarkyboojum joined 12:13 Whiteknight joined
Whiteknight good morning, #parrot 12:14
12:32 Mokurai1 joined 12:34 jsut joined 12:44 atrodo joined 12:48 payload joined 12:52 M_o_C joined 13:03 payload joined 13:07 lucian joined
dalek kudo: dd2043b | moritz++ | t/spectest.data:
we pass 4 more tests
13:22
13:29 patspam joined 13:52 khairul joined
dalek rrot: r45381 | NotFound++ | trunk/compilers/imcc/pbc.c:
use Parrot_pmc_new_init_int in mk_multi_sig
14:01
14:19 Themeruta joined 14:20 theory joined
dalek rrot: r45382 | NotFound++ | trunk (3 files):
new function Parrot_pmc_new_constant_init_int, use it in mmd_build_type_tuple_from_type_list
15:22
15:35 ash_ joined
dalek rrot: r45383 | NotFound++ | trunk/src/multidispatch.c:
use init_int in mmd_cvt_to_types
15:39
15:42 Andy joined 15:54 Chandon joined
dalek rrot: r45384 | NotFound++ | trunk/src/pmc (2 files):
some more init_int usages
15:55
15:56 iblechbot joined
Chandon Good morning, all. I'm Nat, and I'm looking to to a GSoC project this summer. Whiteknight's mutable strings thing looks like it could be interesting. Any thoughts? 15:56
moritz hopes they are immutable strings :-) 15:58
Chandon Yea, that's totally what I meant.
moritz I'm not much of a parrot hacker, more a parrot user. And as a user I'd like to have those 15:59
Chandon Aside from performance, what differences are you thinking of from a user perspective?
moritz concurrency 16:00
purl concurrency is a bitch
moritz it's much easier to share immutable objects between threads
ash_ concurrency still fails in parrot, last i checked it doesn't handle hll's right still
moritz because you don't need any locking
ash_: yes, but it's still a step in the right direction
ash_ yeah, immutable strings would help 16:01
moritz ash_: and Chandon didn't want the "performance" answer :-)
Chandon The existing copy-on-write mechanism doesn't give you most of that?
moritz doesn't seem to
btw, Perl 6 specifies strings as immutable, so it would be a closer fit that way 16:02
ash_ a lot of languages make strings immutable, python does the same thing 16:03
Chandon It does make it interesting for languages that do allow string mutation, but that's the fun of the project I guess.
moritz one can always have a string container object that can throw away old strings and allocate new strings 16:04
to pretend mutability
ash_ that takes a performance hit though, since you have to make so many throw away objects
moritz sure; you'll suffer one way or the other
ash_ you could use a mutable array to pretend to be a string, think char[]
moritz sure 16:05
or even a tree structure
ash_ but thats not what the issue is for parrot, parrot would certainly benefit from immutable string semantics
Chandon What's the state of concurrency in Parrot now? 16:06
moritz broken
Chandon You can't even get two concurrent execution paths running? 16:07
16:07 mikehh joined
ash_ in pure parrot code some concurrency is possible, but not well tested and most certainly buggy 16:09
if you import a hll or some shared libraries it crashes
(hll = high level language, like rakudo)
Chandon That sounds like it needs some work done. 16:10
Any idea what's breaking?
moritz cloning of classes 16:11
or namespaces
purl well, namespaces is www.plover.com/~mjd/perl/FAQs/Namespaces.html or www.w3.org/TR/REC-xml-names/
moritz at least last I looked
ash_ svn.parrot.org/parrot/trunk/t/pmc/threads.t might be worth running
moritz and somebody brave wrote up patches for it, but nobody from the core developers reviewed them (either no time, or no expertise in that area of parrot)
Chandon Where are the patches waiting? 16:16
moritz somewhere in trac 16:17
don't find it anymore 16:18
16:19 joeri joined
ash_ trac.parrot.org/parrot/ticket/757 i think is what moritz is referring to 16:23
moritz right
I've asked on two or three #parrotsketch meetings for review
tewk I have patches too, maybe I'll look at them today 16:24
16:31 eric_j joined
Chandon I wonder if "pound my head on concurrency for a couple months" would be a valid GSoC project topic. 16:31
moritz well, you'd have to come up with some plan of sorts
ash_ maybe explain how you plan on finding problems with the current system and how you'd address some common threading issues 16:33
moritz and if possible, talk to allison first - I think she has some kind of rough plan 16:34
Chandon Sounds reasonable. 16:35
I should probably come up with a plan for the immutable string thing first. If I got approved on that it would hurt less and would give me the background to work on concurrency. 16:37
16:42 hercynium joined 16:48 he__ joined 16:51 AndyA joined 16:55 riffraff joined 16:56 cotto_work joined 17:06 payload joined 17:27 payload joined 17:30 mikehh joined 17:31 payload joined 17:32 payload joined
dalek rrot: r45385 | NotFound++ | trunk/compilers/imcc/pbc.c:
off-by-one array dim in build_key, fix TT #641
17:33
mikehh Notfound: r45385 seems to work for me 17:36
17:48 elmex joined 18:03 cotto_work joined
Chandon How does garbage get collected with multiple threads right now? 18:03
moritz by stopping them all, I think 18:05
18:06 Whiteknight joined
moritz the GC as as stop-the-world as can be 18:07
Chandon Probably don't want to be relying on it staying that way. 18:08
moritz aye
Chandon Hey Whiteknight, it's Nat Tuck, I'm working on this GSoC app for immutable strings - hoping to get something posted to the mailing list today.
Whiteknight hello Chandon, nice to talk to you again 18:09
18:09 mikehh joined
Whiteknight Chandon: I want to warn you, some other prospective GSoC students, and even some impatent developers are talking about doing Immutable strings too. You will definitely want to have a back-up plan ready 18:09
Chandon I keep getting distracted by concurrency issues, so I'm thinking of coming up with some sort of make-threading-work proposal. 18:11
18:14 lucian joined
Whiteknight Chandon: If I were doing GSoC myself this year, threading would be my project 18:15
so it's a good one to do, if you have the chops for it 18:16
Chandon Have a project proposal I can steal? =P
Whiteknight somebody was putting together a proposal for an overhaul. I think it was tewk 18:17
his idea was for multiple levels of threads: OS threads internally which could be used transparently for a variety of things, and "Parrot" threads which would be the high-level ones that the user used directly 18:18
Chandon Where the latter is multiplexed onto the former?
Whiteknight I'm not sure about the details of it. 18:19
There is a definite need to make threading cheaper, to be able to share data between threads, and to properly handle asynchronous callbacks in a sane way 18:20
that could all be broken up into multiple projects
so don't think you would need to propose to fix everything 18:21
Chandon In the current code how does threading work? I've seen some evidence that a thread = a copy of the interpreter like Perl5. 18:22
Whiteknight yes, that's it exactly
Chandon That should probably get fixed.
Whiteknight Well, for PIR-level threads, that's really the way to do it 18:23
you need an interpreter to keep track of bytecode and everything
what we need is a good system for sharing data between two interpreters, so we can be cheaper about creating and running them
docs.parrot.org/parrot/latest/html/...y.pod.html 18:24
Chandon What does an interpreter have in it more than, say, a stack and registers?
Whiteknight (that's the current design document, which would need an overhaul anyway
no stack
trac.parrot.org/parrot/browser/trun...erpreter.h 18:25
contains pointer to the current bytecode file in memory, pointer to the list of classes, pointer to the namespaces, pointer to the op library, list of global variables, and other stuff 18:26
parrot_interp_t 18:27
Anyway, I have to unplug for a while. Feel free to send me any questions via email, or send any ideas or questions to the mailing list 18:28
talk to you later
Chandon Interesting. The only problem with a threading project is that step 1 is to understand basically the whole codebase pretyt well.
Later.
18:37 GodFather joined
dalek kudo: 8f35ce2 | (Solomon Foster)++ | src/core/metaops.pm:
Add new reducewith sub intended to be the backend for [op] (though that is not wired up yet).
18:41
18:42 chromatic joined
dalek kudo: 0ccaf6c | moritz++ | src/core/metaops.pm:
implement :$chaining in reducewith()
18:58
18:58 ash_ joined
sorear Chandon: What do you need explained? (This is my chance to see if I actually know what I think I know) 19:09
also are you familiar with zero-byte mutex technology? that could be an interesting addition to parrot 19:10
Chandon Nope. How do you put a mutex in zero bytes?
As for explanations, how are there multiple tasks in an interpreter and also one continuation pointer? Wouldn't only one of those things make sense? 19:11
sorear There is 1 interpreter per task 19:12
two distinct interpreters are not always completely separate
they can share a PMC heap, for instance
it's kinda like the perl 5 threading model, but PMCs etc remain shared unless you explicitly request to clone them 19:13
and then you have PMCs that can be accessed from >1 interpreter 19:14
which is a pretty nonobvious property, and if you ask me, likely the source of 75% of our threading bugs
Chandon How does locking work in this story?
sorear every PMC has a mutex field
you're supposed to lock PMCs before doing stuff with them 19:15
Chandon So mutex_init gets called whenever a PMC is allocated?
sorear I mostly stopped trying to understand the threading system after I realized it didn't work, since I'm just an extensions programmer
yes
you put a mutex in zero bytes by locking on the /address/ 19:16
set up a global hash table of fixed size
Chandon Does every PMC get its lock twiddled every time it gets touched even in single threaded code?
sorear when you want to lock a mutex, hash the address, then lock the hash table entry
optionally, if you need better recursion properties, dangle a list of locked addresses off the hash table entry and only keep the entry itself locked momentarily
Chandon Doesn't that make it harder to reason about deadlock, since you don't know which mutex you're locking? 19:17
sorear Chandon: We would use vtable magic to only lock variables when there are multiple interpreters sharing the current heap 19:18
dalek kudo: bcdee8e | moritz++ | src/core/metaops.pm:
reducewith with triangle; implement combination of chaining and right-assoc
sorear I'm using the hypothetical mood here because working threads don't actually exist
I can't describe the operations of things that don't exist, except in the hypothetical 19:19
chromatic ... for various definitions of "working" and "exist"
sorear bad: are good: could be
Chandon: Yes, which is probably why it hasn't been done 19:21
I first saw the technique in the FreeBSD kernel... they use it all over
see also the "optionally, if you need better properties" 19:22
Chandon The only way I can think to make it safe would be a "never hold two locks" rule.
sorear right 19:23
tewk I'm convinced that locks are the wrong model. 19:31
19:34 bubaflub joined
Chandon tewk: What's the right model then? 19:36
tewk message passing between threads.
purl Sorry, I've never seen passing before.
particle isn't that why that's what the PDDs spec? 19:38
Chandon To do that, you either need to deep copy everything, have everything be immutable, or get clever with locks under the hood, right?
Also, there's some algorithms you can't implement in that world, so you still want to give users access to locks when they need them. 19:39
eric_j Chandon, what algorithms? 19:40
tewk Chandon, I think we should support locks.
I would say that algorithms that require locks don't scale. 19:41
dalek kudo: eaf92e0 | moritz++ | docs/ChangeLog:
[docs] start ChangeLog for next release
Chandon eric_j: My best example is randomized best first minimax search on game trees, but there are probably simpler examples. 19:42
sorear (If message passing is strictly better than locks, why do SMP computers exist?)
eric_j thanks
tewk But getting locks right is an endless task. Locks are espcially brittle as you evolve a code base. 19:43
sorear, any large SMP machine is doing message passing in hardware via NUMA. 19:44
sorear I thought SMP and NUMA were antonyms 19:48
19:48 Andy joined
Chandon Is that really any different than saying that any SMP machine is doing message passing in hardware via its cache coherency protocal? 19:48
tewk Chandon, I wouldn't call a single bank of memory and snoopying protocols message passing. 19:51
Chandon That's probably reasonable, but it sure looks that way if you're standing in an L1 cache. 19:52
It's not unreasonable to pretend that the NUMA memory is level-4 cache for some imaginary single memory bank. 19:53
tewk Chandon, you can pretend, but you don't get scaling by pretending.
Chandon It's just another higher latency, the same as any other cache miss. 19:56
tewk The last project I heard about(a couple of years ago) had to use special purpose library calls to make sure memory allocations occured in the memory bank next to the chips where the computation was going to occur to get good scalability
Coke skips review. 19:57
Chandon The OS still isn't doing that automatically?
tewk Chandon, most parallel codes are memory bandwidth bound, placing memory close to computation improves overall memory bandwidht. 19:59
Chandon Right. I'd just expect a numa-aware scheduler to know that. I guess with Linux we're still in the land where it'll happily reschedule you to a different processor board. 20:00
sorear sure, message passing is better in the large
but what about the small
on a 2010 dual core / single main memory board, how much do you lose by requiring message passing and nonshared heaps?
Coke seen austin? 20:02
purl austin was last seen on #parrot 14 hours, 59 minutes and 54 seconds ago, saying: And now POD6 is, too.
Chandon It really depends on the application and the algorithm. For some things, nothing, for others, everything. 20:03
Coke anyone know how to override a vtable from NQP?
20:03 lucian joined
ash_ can you override vtable's in nqp? 20:03
dalek kudo: fc30fad | moritz++ | docs/release_guide.pod:
[docs] the Copenhagen release has already happend; colomon++ voluntueered for May
20:05
sorear Coke: using the metamodel 20:07
Coke sorear: 20:08
:?
purl : is the path separator
sorear P6metaclass.get_parrotclass($class).add_vtable_override('name', &code) 20:10
from kakapo
Coke is that available ins traight nqp-rx ? 20:14
sorear yes
Coke ash_: here's another one: can I have a .panic in a grammar that intepolates values? 20:19
er, variables.
ash_ doesn't panic cause it to die? 20:20
dalek kudo: cfc139f | moritz++ | src/core/Rat.pm:
trivial Rat.new() without arguments (returns 0/1)
20:22
p-rx: 67a8eaf | jonathan++ | src/Regex/P6Regex/Actions.pm:
Correct action methods for \\e and \\f sequences in regexes.
20:24
p-rx: e3f10da | jonathan++ | src/HLL/ (2 files):
Add detection of unknown backslash sequences and fix the \\$ bug along the way. masak++ too. :-)
p-rx: b17415a | jonathan++ | src/HLL/ (2 files):
Properly implement \\f, \\e and \\0 escapes in strings.
p-rx: 88873ca | jonathan++ | src/stage0/ (3 files):
Update the bootstrap.
moritz Coke: github.com/rakudo/rakudo/blob/maste...ar.pm#L120 something like this?
Coke moritz: except in a grammar, not in a method. 20:26
like...
github.com/partcl/partcl-nqp/blob/m...mar.pm#L72 20:27
moritz Coke: it's a method in a grammar, and can be called with <.obs('foo', 'bar')>
Coke ah. so you just push the code somewhere where you /can/ do variable subst. 20:28
moritz aye 20:30
Coke hurm. 20:33
I have something like \\S+ <.panic "..."> - how can I pass the contents of the \\S+ into the .Method I'm defining?
20:33 particle joined
Coke $<extra>=(\\S+) <.badList($extra)> fails... 20:33
20:35 tetragon joined
dalek rrot: r45386 | jonathan++ | trunk/ext/nqp-rx/src/stage0 (3 files):
[nqp-rx] Update to latest nqp-rx to get various fixes to escape handling.
20:35
moritz Coke: <.badList($<extra>)> maybe? 20:36
Coke: if that doesn't work, maybe you need to fall back to closure in the regex, like in github.com/rakudo/rakudo/blob/maste...ar.pm#L273 20:37
nopaste "coke" at 72.228.52.192 pasted "moritz..." (15 lines) at nopaste.snit.ch/20163 20:40
Coke moritz: closures work in nqp-rx?
moritz Coke: aye 20:41
Coke ok, trying that...
sorear Austin: as of r45386, you can now use full Pod6 in NQP, not just that yucky =begin/=end version
Coke moritz++ ! 20:47
now I just need to figure out how to get a less helpful panic that doesn't tack on the "near..." 20:48
moritz: any suggestions on that one? =-) 20:52
(i tried end the panic with a \\n, but that doesn't work as advertised. 20:53
Coke guesses pirop::die 20:55
(except spelled right.)
whee. 20:58
Austin Coke: You can override a vtable pretty simply. There's a method on Class.pmc for it. 21:02
dalek kudo: 0893322 | jonathan++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get latest nqp-rx fixes.
21:03
Austin Whoops, nevermind. sorear++
dalek kudo: 50fa7b0 | jonathan++ | t/spectest.data:
Turn S02-literals/fmt-interpolation.t back on.
sorear Austin: you can use =head1 and whatnot in NQP now 21:05
Austin Yeah, I saw that. 21:06
Coke moritz++ 21:07
moritz Coke++ # actually using the stuff :-) 21:08
Coke Austin: Trying to figure out how I can call the override in an INIT block on a sub that won't be visible anywhere else.
Austin Huh?
What are you trying to override?
Coke TclList's get_string.
(there's a PIR override, i want to rewrite it in NQP) - but I don't want the sub I use for it to be visible anywhere else. 21:09
... though I guess I could have a get_string method with no real harm.
dalek rtcl-nqp: 163b622 | Coke++ | (3 files):
Fix error handling on some malformed lists.
sorear partcl-nqp is going to be /pure/ nqp?
Austin Put it in a separate namespace if you want, but I wouldn't worry too much about it. 21:10
sorear you're not going to have a C/Pmc2c kernel?
Austin Sorear: No good reason to.
(Unless there's a floating point issue...)
But tcl isn't really the language I think of when I think of floating point... 21:11
21:11 darbelo joined
Coke sorear: partcl was c/PMC based. 21:11
partcl-nqp isn't going to use C unless it absolutely has to. 21:12
sorear I see
Coke Austin: real tcl handles FP just awesomely. 21:14
Austin Sure, but does it handle it the same way that parrot does? 21:15
Coke see partcl for my thoughts on that so far. =-) 21:16
Austin ++ # Kakapo now has roles with attributes. 21:19
Coke Austin++ #extra space in that one. 21:20
Austin And now I'm looking at everything through role-tinted goggles.. 21:25
Coke Austin, sorear. ok. I have a class, TclList. in an INIT block, I say: 21:26
P6metaclass.get_parrotclass($class).add_vtable_override('name',
&TclList::get_string)
21:27 cognominal joined 21:28 Mokurai joined
Coke Later I have TclList { method get_string() {} } 21:28
dies with: Symbol '$class' not predeclared in <anonymous>
Austin Okay
So fix it
my $class := 'TclList' 21:29
Coke ... damnit.
Coke--
rakudo: "Coke--".say
Austin Also, lose the '&' I think.
www.girlgeniusonline.com - scantily-clad Victorian babes .. with robots 21:35
treed Scantily-clad Victorian? 21:40
Uh, hm.
Coke ah, sparks. 21:44
21:46 snarkyboojum joined
Austin treed++ 21:57
I'm glad someone caught that..
treed (I wasn't about to click the link at work) 21:58
Austin :)
treed So I can only image.
"What, she's only wearing two layers of clothing?" 21:59
Austin It's SFW - Phil Foglo is pretty much a PG cartoonist..
21:59 integral joined
Coke Girl Genius is a good comic. 22:17
must put in an order for a physical copy...
22:27 kid51 joined
dalek kudo: e889ed4 | masak++ | t/spectest.data:
[spectest.data] uncommented two test files
22:27
Coke Null PMC access in find_method('get_parrotclass')
Austin make sure you loaded p6object
Should be loaded if you're interpreting, but not if you compiled
dalek rrot: r45387 | NotFound++ | trunk/src (4 files):
some more init_int usages
22:31
Coke if I load it in the init, I get: 22:37
t/library/p6object.t
..
no.
A method named 'HOW' already exists in class 'P6object'. It may have been supplied by a role.
yah, that.
Austin Heh 22:38
load bytecode not being smart enough
Also means you shouldn't be getting the get_parrotclass error. What code produces that? 22:39
darbelo Say, is any of the "Let's standardize on a sigle string encoding inside parrot" guys about?
nopaste "coke" at 72.228.52.192 pasted "austin" (14 lines) at nopaste.snit.ch/20164
Austin Looks good to me. 22:41
FWIW, $tcl is the same
Coke yes.
Austin So you could do $tcl.add_vtable_override(...)
Coke oh!
Austin Oh. 22:42
Is TclList actually a P6object class?
chromatic Hooray for single string encodings, and Victorian steampunk (as opposed to, say, Cromwellian Steampunk). 22:43
Austin No, because you never declare the class
Coke Austin: the class is created in PIR
Austin Ah.
Coke using $tcl avoids the problem. danke.
ah. and no, it's not a p6object class. =-) 22:44
Austin Where is that pir?
darbelo chromatic: I'm trying to fit 'single encoding' into my NFG GSoC proposal.
Coke src/class/tcllist.pir
darbelo The big win is already stated in the rationale for NFG. But the PDDs argue for 'bazzillions of encodings and NFG' 22:45
Coke ok. it doesn't error, but it doesn't add the override, either.
(it's defaulting to RPA's get_string) 22:46
so, do I have to be using P6objects to get this to work? blah.
chromatic What if you were to assume that the encoding only mattered when entering or leaving Parrot, darbelo?
Coke grumble. 22:47
purl i guess grumble. is it typically possible to order replacement laptop keys?
Austin You've already got a vtable there.
In tcllist.pir
darbelo Everythign gets normalized on the way in, and reconverted on the way out? 22:48
Austin I think it ignores you.
Coke Austin: yes. that's the one I'm trying to move. =-)
dalek kudo: 9a20634 | jonathan++ | src/ (2 files):
Make A::B.new in the case that A::B doens't exist emit a message that mentions A::B, not just a null PMC access.
chromatic darbelo, that sounds reasonable to me.
Coke so in my local copy, the PIR one is gone, and I'm trying to get it to recognize a PIR version that just returns "eek"; 22:49
Austin Okay
Coke er, s:2nd/PIR/NQP/
darbelo If we do that, parrot would only have to worry about normalized strings, the encoding and charset pointers go away from the string struct, etc.
Austin Are you confusing "get_string" and "name" ? 22:50
Coke ... damnit.
just like I did $class, early. =-)
darbelo But 4-byte chars strike me as too memory expensive for widespread use.
Austin (Of *course* they're different... how could they *not* be different...)
Coke muuuuch better.
Austin laugh
Work? 22:51
purl Work - the curse of the drinking class. (Oscar Wilde)
darbelo We already use too much memory as it is.
chromatic darbelo, you pick your poison, I guess.
Coke I took the sample code provided, updated it, ripped it out, added it back in, but forgot to update it the second time.
much better, thank you. now to work on the actual conversion.
Austin darbelo: 4 byte really isn't fetch-efficient. You want to plan for 8 byte characters, at least on 64 bit machines...
chromatic If we only had 1, 2, and 4 byte encodings, that's not *too* many to support. 22:52
The real problem is variable-width encodings.
dalek TT #1541 created by jkeenan++: warnings appearing during 'make' invocation of pmc2c.pl 22:53
TT #1541: trac.parrot.org/parrot/ticket/1541
darbelo Maybe I can do it as a two pater. Implement NFG as specified in the PDD for the midterms and then ripping out all of the other encodings for the final evaluation.
chromatic Call the second part a stretch goal, and I'm all for it. 22:56
23:09 bubaflub joined
Coke argh. I'm just a complete idiot today. have a place for a Q:PIR block. if I put in the guts of the old get_string, I get a 'blockoid' parsing error on the nqp. if I have an empty Q:PIR {}; , it compiles. 23:14
... and there it is. Q:PIR doesn't like embedded {}'s 23:16
chromatic Can you double up the curlies? Q:PIR {{ ... }}; 23:20
dalek rrot: r45388 | jkeenan++ | trunk/lib/Parrot/Pmc2c/Pmc2cMain.pm:
Applying patch submitted by Util++ for �trac.parrot.org/parrot/ticket/1541.
Coke AIGH. it doesn't even like them in NQP! 23:24
if I do a my $bl := "{"; in NQP to avoid the problem in PIR, it still blows up, even with nothing in the PIR. 23:25
it's TGE all over again.
chromatic: it's slightly better that way. then it dies with: 23:27
error:imcc:syntax error, unexpected $undefined, expecting '(' (':') in file 'src/TclList.pir' line 428
(which is the end of the file) 23:28
dalek kudo: 3469ffe | jonathan++ | src/Perl6/ (2 files):
Wire reduce meta op up to use the new reducewith that can handle chaining, triangle form and right-associative ops.
Coke arrrrgh. 23:35
nopaste "coke" at 72.228.52.192 pasted "ARGH" (206 lines) at nopaste.snit.ch/20166 23:36
Coke ok. that dies with the same error I just mentioned.
(tried replacing the PIR {} 23:37
with some safer equivalents.
AHA. a := snuck into the PIR. 23:40
a LTA error message.
dalek TT #641 closed by bubaflub++: Crash when loading PIR file 23:42
TT #641: trac.parrot.org/parrot/ticket/641
23:43 eternaleye joined 23:54 mikehh joined
sorear darbelo: What possible advantage does "loads and loads of encodings" bring :/ 23:59