Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: merge gc_massacre, remove deprecated items, add deprecation notices for 2.6, close tickets.
Set by moderator on 25 June 2010.
dalek rrot: r47939 | darbelo++ | branches/gsoc_nfg/src/packfile/pf_items.c:
Make room for the grapheme table on freeze calculations.
00:00
rrot: r47940 | darbelo++ | branches/gsoc_nfg/src/string (2 files):
Add a helper function to rehash the graphemes in a table.
rrot: r47941 | darbelo++ | branches/gsoc_nfg/src/packfile/pf_items.c:
Add NFG thaw support.
rrot: r47942 | darbelo++ | branches/gsoc_nfg/src/string/grapheme.c:
Improve grapheme table size handling.
rrot: r47943 | darbelo++ | branches/gsoc_nfg/src/packfile/pf_items.c:
Increment the right variable in the packfile storage loop.
rrot: r47944 | darbelo++ | branches/gsoc_nfg/src/packfile/pf_items.c:
Add missing '*'s on a few cursors. They are different from the other cursors.
rrot: r47945 | darbelo++ | branches/gsoc_nfg/t/op/string_nfg.t:
Add freeze/thaw tests.
rrot: r47946 | darbelo++ | branches/gsoc_nfg/src/packfile/pf_items.c:
Whitespace police.
purl ALL TAB STOPS AT 8 COLUMNS. LINE UP ENCLOSING BRACES. EVERY COMMA HAS A SPACE AFTER IT. AND THIS MEANS *YOU*, BOY!
plobsing_work msg ash_ I won't be able to make our weekly meeting today. Can we reschedule? I have all of tomorrow off. 00:04
purl Message for ash_ stored.
dalek rrot: r47947 | darbelo++ | branches/gsoc_nfg/src/packfile/pf_items.c:
Fix indentation.
00:17
00:58 ash_ joined
ash_ anyone feel like running some tests for me on non OS X? 01:08
dalek rtcl-nqp: 006b089 | Coke++ | src/Partcl/Actions.pm:
if someone refers to a $nonvariable, generate an appropriate error msg.
01:09
rtcl-nqp: 6ebb388 | Coke++ | (3 files):
now that $foo errors more properly, we can run t/cmd_variable.t
sorear ash_: what tests? 01:24
purl well, tests is what I don't have tuits for
ash_ nci tests would be lovely (with libffi)
sorear opbots names
uh... are you asking me to write tests?
tcurtis sorear: to run some tests on a platform other than OS X, I believe. 01:25
sorear yes
I'm asking him what to test
I have no idea what "nci tests" means
I understand: coretest, fulltest, codetest, test X all branches X all revisions 01:26
ash_ umm, coretest
purl coretest is all of the tests excluding configuration subsystems and documentation
dukeleto long lost cousin of PIR? en.wikipedia.org/wiki/Intermediate_Parakeet
sorear ash_: you still haven't specified revision or branch
ash_ github.com/ashgti/parrot/ is my repo, (most recent revision) 01:27
instead of running all the tests, if you want you can just try "prove t/pmc/nci.t" 01:28
dukeleto New blog post about PL/Parrot and PL/Perl6: leto.net/dukeleto.pl/2010/06/rakudo...abase.html 01:30
ash_ sorear: also, do you have libffi installed?
its probably installed if your running linux, but you might not have the headers 01:31
apt-get install libffi-dev for deb-based linux, i'd have to check for any others since i don't use them regularly 01:32
for yum its libffi-devel 01:33
just checked
sorear I have libffi-dev 3.0.7-1 installed 01:35
good enough?
ash_ yup
sorear it's more than a year old
ok
--optimize? 01:36
ash_ i have tested back to 2.1
sure? i haven't tried --optimize
(os x includes libffi 2.1, which is a pretty old version)
sorear I installed libffi back when I was hacking GHC 01:37
you're doing libffi frame builder for GSoC, right?
ash_ yeah 01:38
basically, it builds the call signature dynamically now, so no need for thunks at compile time 01:39
also added support for C's 'long long' (if the platform supports it) 01:40
the trickiest one will be building on windows with windows compiler... 01:42
libffi works on windows with the windows compiler (according to their read me) so it's possible but the build instructions are a bit more complicated 01:43
02:11 kid51 joined
sorear ash_: failed 2 tests nci_fff nci_vfff 02:15
ash_ hmm, k, i'll look into those, i didn't get that, which OS? 02:16
dalek rtcl-nqp: 2a3361c | Coke++ | src/Partcl/commands/main.pm:
improved error handling on set a(b)
02:17
rtcl-nqp: 18945e6 | Coke++ | t/cmd_append.t:
recent fixes elsewhere broke this.

need a hand rolled check in [append] which I'm too lazy to do right now.
rtcl-nqp: 84cc2b4 | Coke++ | (3 files):
fixup [unset] enough to run the test file.
sorear ash_: Linux/i386
ash_ kk, i have a linux computer i can try it on
dalek rrot-plumage: 5f4020a | japhb++ | metadata/pynie.json:
[metadata] Pynie has moved to a new repository; thanks to fperrad++ for the update
02:24
02:28 Essobi joined
tcurtis has a new least favorite bug. 02:35
02:35 janus joined 02:42 TiMBuS joined
cotto ~? 02:44
purl ~ is throwing her off
cotto ~!
02:44 theory joined
tcurtis msg moritz I think I've got your problem fixed. Haven't committed yet, though. 02:44
purl Message for moritz stored.
ash_ hmmm sorear i got the same error on 386 (or is it 686?) linux, looking into it 02:50
sorear 386 02:51
386 is the architecture, 686 is a specific model 02:52
a "686" linux has been optimized for, and will not run on anything less than, a ppro
but it is observationally identical to a "386" linux
cotto I have a dual PPro machine sitting in my laundry room. 02:57
I don't observe it very often. 02:58
03:38 LoganLK joined
dalek rrot: r47948 | tcurtis++ | branches/gsoc_past_optimization/runtime/parrot/library/Tree/Pattern.nqp:
Make Tree::Pattern::patternize work even if Sub has a non-working .ACCEPTS method. Make it work in moritz++'s Rakudo branch.
03:51
tcurtis msg moritz That problem should be fixed. For some reason, the subs were appearing to have a .ACCEPTS method... which turned out to try to invoke a null sub somewhere. But, it's fixed now, as far as I can tell. 03:52
purl Message for moritz stored.
ash_ i feel like this some days xkcd.com/722/ 04:01
tcurtis Anything sounds trivial with the right phrasing, ash_. 04:03
bacek || bacek_at_work: ping 04:09
ash_ well, maybe i can just tell everyone that they need to use 64 bit computers now...
this bug seems to only happen in 32 bit
cotto I guess I can do that. 04:12
cotto sets his 32-bit laptop on fire
Hmmmm. Warm, yet noxious. 04:13
You'd think I'd be offline several minutes after setting my laptop on fire, or at least that it'd be hard to type. 04:22
bacek_at_work tcurtis, barely here 04:24
ash_ nah, your probably just a bit more stubborn than most when it comes to being productive on a burning computer
some laptops feel like they are on fire when you leave them in your lap and hit compile 04:25
tcurtis bacek_at_work: any suggestions on optimizations to work on for PIRATE?
bacek_at_work tcurtis, constant folding? 04:26
ash_ why would Parrot_pcc_fill_params_from_c_args return 0 for all but the last argument with the parameters NNN 04:27
and only on 32 bit systems
tcurtis bacek_at_work, alright.
ash_ hmm i am going to have to figure this out in the morning 04:28
bacek_at_work tcurtis, check compilers/pirc/README.pod in parrot repo. "=head3 Constant Folding"
tcurtis, it's bare minimum which we need for self-hosting PIRATE. 04:29
ash_ tcurtis: if your at a loss, llvm.org/docs/Passes.html has a bunch of good ideas,although they might not all apply to PIRATE 04:30
bacek_at_work after, we can implement proper Constant Propagation, more aggressive folding, tailcall optimizations, etc.
ash_ the section on Transform Passes lists all the llvm passes 04:31
night &
tcurtis gets to work. 04:32
cotto clock? 04:45
purl cotto: LAX: Wed 9:45pm PDT / CHI: Wed 11:45pm CDT / NYC: Thu 12:45am EDT / LON: Thu 5:45am BST / BER: Thu 6:45am CEST / IND: Thu 10:15am IST / TOK: Thu 1:45pm JST / SYD: Thu 2:45pm EST /
GeJ and NOU: Thu 3:45pm NCT 04:52
cotto literal clock? 04:54
purl cotto: clock =is= <rss="rjbs.manxome.org/rss/clock.cgi">
05:10 fperrad joined
bacek_at_work cotto, any luck with git rebasing? 05:13
cotto I haven't tried it yet. 05:23
bacek_at_work cotto, ok. Good luck anyway :) 05:30
dalek nxed: r528 | NotFound++ | trunk/winxedst1.winxed:
stop assigning sub params to new registers in stage 1
05:50
tcurtis One of the subtle niceties of git is that there's nothing wrong with committing code before it works. 05:56
06:03 uniejo joined
moritz :-) 06:33
NotFound The next step will be to allow to commit code before writing it. 06:40
That technology combined with python "import from future" will be awesome. 06:42
moritz tcurtis: btw you really fixed my problem, thanks 08:16
tcurtis moritz: good to hear. As always, let me know if any more show up. 08:19
dalek kudo: 3d2cb82 | moritz++ | t/spectest.data:
run test file for @*ARGS
08:35
cotto bacek_at_work, your instructions worked! Thanks. 08:38
bacek clock?
purl bacek: LAX: Thu 1:38am PDT / CHI: Thu 3:38am CDT / NYC: Thu 4:38am EDT / LON: Thu 9:38am BST / BER: Thu 10:38am CEST / IND: Thu 2:08pm IST / TOK: Thu 5:38pm JST / SYD: Thu 6:38pm EST /
bacek It's almost 7PM! No more _at_work for today! :)
cotto which means it must be almost 0200 for me. 08:40
extravagantly broken branch pushed 08:42
night
bacek good night, cotto! 08:43
how badly it's broken?
08:51 AndyA joined 09:29 mikehh joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34669), fulltest) at r47948 - Ubuntu 10.04 i386 (g++) 10:14
t/op/exit.t - TODO passed: 6 in testf
the TODO pass only occurs on the x86 version not the x86_64 10:15
pir/PIRATE (63b457e) - build ok / test PASS - on parrot at r47948 - Ubuntu 10.04 i386 (g++) 10:22
partcl-nqp (84cc2b4) - make ok, make test PASS - on parrot at r47948 - Ubuntu 10.04 i386 (g++) 10:29
starting to build/test rakudo - letting it run - have to go out for a bit 10:32
a) it seems to take a bit longer on i386 and b) about twice as long with an unoptimized version of parrot :-} 10:33
10:42 clinton joined
dalek r: 619c372 | bacek++ | (6 files):
Little be more proper support of :main subs
11:25
r: 9891ac2 | bacek++ | src/POST/Key.pm:
Add POST::Key.Str method for stringification.
r: 694f13f | bacek++ | src/POST/Sub.pm:
Add POST::Sub.full_name which includes namespace (if any).
r: 1e75f98 | bacek++ | src/PIR/Actions.pm:
Use Sub.full_name for choosing :main sub
r: df0d73c | bacek++ | src/PIR/Actions.pm:
Don't introduce bogus variables during handling of $*HLL and &*NAMESPACE.
11:32 bkuhn joined 11:47 pmichaud joined
dalek r: e5fe1a5 | bacek++ | t/post/subs.txt:
Add test for .namespace handling
11:52
11:52 dukeleto joined 11:56 ruoso joined 12:00 lucian joined, bluescreen joined 12:03 whiteknight joined
whiteknight good morning, #parrot 12:05
13:10 dalek left, dalek joined 13:13 ambs joined
mikehh rakudo (3d2cb82) builds on parrot r47948 - make test PASS, spectest_smolder -> #34671 (pugs r31522) FAIL - Ubuntu 10.04 i386 (g++) 13:29
t/spec/S32-num/rat.rakudo - Failed test: 798
18 TODO PASSes in 4 files
whiteknight that email about the VMIL workshop looks very interesting. 13:37
it's the kind of thing I would love to go to, but can't this year
Besides giving a general overview of what Parrot is and what it does, I'm not sure we have a whole lot of new research or any good-looking data to share with people 13:38
13:41 ash_ joined
mikehh pir/PIRATE (e5fe1a5) - build ok / test PASS - on parrot at r47948 - Ubuntu 10.04 i386 (g++) 13:42
whiteknight We do have some very cool new things on the horizon, especially if GSoC pans out: hybrid threads, the ability to write optimizions for your compiler in the language you are compiling, etc
ash_ how is the thread work going? 13:43
whiteknight ash_: a little slowly, but well considering
I was under the impression that Parrot had more support than it actually does. Much of the things that we do currently have (scheduler, timers, tasks) either don't work as advertised, don't work at all, or only work on accident 13:44
and several tests we have which "prove" these things work are faulty
so Chandon is working around all those issues. 13:45
ash_ yeah, i know if you had a hll loaded and you tried to make a thread you used to always get an error
that was an issue at one point for sure
mikehh It also argues for better test driven development, rather than tests as an afterthought, which really don't give good coverage 13:47
13:48 whiteknight joined
mikehh and I think we also should adopt Rakudo's policy of not signing off a ticket until an appropriate test is also included 13:49
whiteknight mikehh: I do generally like that idea, though there are a few areas where that's not really an option yet 13:50
comprehensive testing of command-line arguments, comprehensive testing of bytecode, etc.
mikehh sure, but we should push towards it
whiteknight no arguments. I just don't want a rule put in place before we have the infrastructure to support it 13:51
but it is an important goal
NotFound We don't even have yet basic testing of core features.
mikehh we get too many surprises, for example, your comments about threading, because we get - "but, the tests passed" 13:52
NotFound I'm tempted of deleting all uncovered code, the wait for HLL feedback about what broke and how to test it X-)
mikehh like that idea +1 or more :-} 13:53
NotFound mikehh: much more surprised me last month when I broke such a basic feature as substr and all test passed. 13:55
Things are improved now, but there is still a lot to do. 13:56
whiteknight purl msg Chandon www.cs.iastate.edu/~design/vmil/200...8-marr.pdf It's a really short paper (more of a long abstract), but mentions concurrency in VMs. You might be able to follow-up with some later work by these people to see what kinds of concurrency stuff they like and what they recommend 13:57
purl Message for chandon stored.
mikehh Notfound: yeah, this seriously wories me at times, we get no or maybe one failing test for some serious pronlems
NotFound Note also that there are tests that checks just basic functions of the pmc, like initializing and setting and getting values, but fails to check realistic usages. 13:59
Sometimes they are exercised in tests for completrly different things X-) 14:00
Coke NotFound: that's because of the "one test per PMC!" coverage drive, I suspect.
sorry <<coverage>>
glad to see your work on actual code coverage.
NotFound For example, ExceptionHandler is much more and better tested outside exception.t and exceptionhandler.t than inside. 14:01
14:02 bubaflub joined
particle imo the t/pmc tests should exercise the pmc's api, and other tests should exercise use cases 14:02
mikehh yes, but we need both 14:03
NotFound Yeah, I'm thinking about ripping most of pmc/exception.t and pmc/exceptionhandler.t and create a new file out of the pmc/ dir
Coke here's a new plan: get 100% coverage first. sort tests later. =-) 14:04
ash_ why is it NUMVAL_SIZE when in other places you use FLOATVAL in the C stuff?
NotFound Coke: but I don't want to wait several geologic ages ;)
ash_ kinda expected that to be 'FLOATVAL_SIZE' /shrug
for that matter, is there a reason its FLOATVAL? Not NUMVAL? (since almost everywhere else floating point numbers are called nums) 14:06
NotFound ash_: probably just because nobody care enough to ask for renaming it. 14:07
mikehh ash_: depends on architecture and things like double or long double 14:08
I would think a FLOATVAL_SIZE would be sizeof (float)
ash_ mikehh: NUMVAL_SIZE should always be the sizeof(FLOATVAL) (if i am not mistaken) 14:09
see, here's the naming inconsistency, FLOATVAL is a num register, but sometimes in the C code you have to replace FLOAT with NUM 14:10
particle feel free to fix naming inconsistencies, as long as there's a clear path past the deprecation 14:13
14:14 bubaflub_ joined, gbacon joined
ash_ in the includes/parrot/config.h file towards the bottom there is a list of #define's which are like INTVAL_SIZE 4 (32 bit system for the config) NUMVAL_SIZE 8 etc... this file also defines typedef FLOATVAL double (i know floatval depends on the system, and you can tell the config script to set it to whatever you want) 14:17
err, that typedef is backwards
FLOATVAL makes some sense though, because its the Parrot_Float type, but there are still places where NUM is used instead of FLOAT 14:19
mikehh ash_: I could only find one #define for NUMVAL_SIZE (=8) lots of tests using it but only one #define and NO assigns 14:20
ash_ well, should that be FLOATVAL_SIZE?
mikehh possibly, but that ain't there 14:21
NotFound I'd like better to nuke all 'float' usages, they are just confusing with C float. 14:22
If is 'num', use num everywhere.
mikehh looks like it was considered to have possible different values (float, double, 2 variants of long double (12 and 16)) but not used anywhere other than double 14:23
NotFound mikehh: consider whatever you want, but use clear names for the most frequent usage.
ash_ i'll just use sizeof(FLOATVAL) for now instead of those #defines... 14:24
mikehh NotFound: was just saying that that was what I thought happened in the past, and that it now is only defined in one place (as 8) 14:25
I was not around when it happened so it is just speculation 14:26
NotFound mikehh: we have also HUGEFLOATVAL, DOUBLE_SIZE...
But if you configure to use for example long double, that type becomes FLOATVAL 14:27
Wich is confusing for any C programmer, calling NUMVAL will be a better hint of being related to a type defined by parrot, not to a native C type. 14:28
Anyway, I don't care enough to patch most of parrot C files because of that X-) 14:31
ash_ lol, maybe someone will in the future if it becomes an issue 14:32
NotFound ash_: we have enough clear and present problems, let's solve future issues in the future. 14:33
14:36 bluescreen joined
whiteknight avoiding future issues now is a virtue too 14:42
atrodo Ostrich Syndrome?
14:43 patspam joined
NotFound whiteknight: yes, but I choose wich ones worries me. 14:44
whiteknight NotFound: of course! volunteers have lots of freedoms like that
NotFound That one, I don't spend an euro cent. 14:45
ash_ so... would anyone argue if I made a patch to s/FLOAT/NUM/ ?
whiteknight ash_: No complaints from me. Consistency++
particle well, our N registers store what? 14:46
NotFound ash_: your only risk is that no one care enough to commit it.
particle native floats
ash_ or doubles
or long doubles
NotFound particle: FLOATVALs
ash_ hence the reason i brought it up, FLOATVAL isn't a float (always)
whiteknight yeah, it's all FLOATVAL 14:47
particle right, sorry
FLOATVAL
purl FLOATVAL is a double, right?
particle kicks purl
purl blocks! Paint the fence!
particle purl, forget FLOATVAL
purl particle: I forgot floatval
NotFound purl: go sit in a corner
purl NotFound: what?
particle s/FLOATVAL/NUMVAL/ gets ++ from me
s/FLOAT/NUM/ i'm not sure about 14:48
ash_ alright
thats fine
whiteknight definitely add some #defines to map FLOATVAL to NUMVAL though, don't want to get accused of breaking the deprecation policy by our embedders
particle yes, still need to #define
and put in a deprecation notice 14:49
ash_ yeah, sure, just in the future it can be a bit more consistent 14:50
whiteknight and sacrifice a chicken, for good luck
NotFound Or a bot
whiteknight kill purl!
NotFound Throw a virgin bot to the volcano. 14:51
mikehh winxed r528 - make all ok, make test/test1/test2 PASS - on parrot at r47948 - Ubuntu 10.04 i386 (g++)
moving over to amd64 - brb
ash_ i really wish there was an easy way of managing untyped memory in C 14:52
NotFound ash_: easier than malloc/free? 14:53
ash_ thats not the hard part
right now i am doing things like, i want to get a reference to the start + sizeof a double + sizeof a pointer
and pass that to something else 14:54
mikehh NotFound: btw I had a file in winxed - winxedst2.c not under version control and does not get deleted by make clean
arnsholt ash_: Might be useful to write a small helper function? 14:55
NotFound mikehh: yes, I forgot to add pbc_to_exe intermediate files to clean.
arnsholt Pass in the buffer and a varargs of size_t params and returns the new buffer
NotFound ash_: that does not sound exactly untyped to me. 14:56
ash_ well i am making the memory space via malloc, but i don't know the offsets i need till runtime 14:58
its for NCI, so if the function takes "fff" so 3 floats, i need to malloc memory for all 3 of them, and set the parameters correctly for ffi_call, i realized why on 32-bit systems i get an error, on 64 bit systems, I can just use void* * arity, because sizeof (FLOATVAL) == sizeof (void*) but that was a bad assumptions, since it fails to be true on 32 bit systems, and i realize that now 15:01
NotFound ash_: you just need to add the appropiate sizeof, no need for more C support. 15:02
ash_ well, if i want to one day support passing a struct, i need to calculate the size of the args dynamically, so now i loop throw the args and add up the size of each 15:04
through* 15:05
NotFound ash_: even worse, for structs you need to care about alignment and padding
ash_ yup
whiteknight ash_: As a small nit, in the final product don't use malloc. The GC provides functions to allocate/free memory chunks 15:10
(at the moment that redirects to malloc/free, but it won't for all cores)
15:10 Andy joined
mikehh brb 15:11
ash_ i am not using malloc directly, i am using mem_internal_allocate, mem_internal_allocate_n, mem_internal_allocate_zeroed, and mem_internal_allocate_n_zeroed_typed
and mem_sys_free and Parrot_str_free_cstring 15:12
whiteknight ash_: Ah, okay. That's acceptable. You're probably still going to want to move towards the Parrot_gc_allocate_memory_chunk functions eventually. Again, small nit
ash_ i didn't know if i should use the gc'ed version or not....
NotFound ash_: you can also consider ByteBuffer for some usages, it garbage collects its assigned memory. 15:13
ash_ since these are randomly sized chunks of data that NCI's invoke only knows about that get freed by the end of the NCI invoke call
I might look into ByteBuffer, that could make some of this a bit easier I expect 15:15
whiteknight ash_: Like I said, the Parrot_gc_* functions are basically just wrappers for malloc/free, so they aren't automatically managed
ash_ but the memory is very short lived, it only lasts until the end of the NCI invoke, then I free it
whiteknight but future GC cores may want to not use malloc/free, so that gives some flexibility 15:16
Coke msg pmichaud - if nqp-rx is going to change to not use CONTROL exceptions internally, we should probably add a notice for that somewhere.
purl Message for pmichaud stored.
ash_ well, i guess if i switch to the Parrot_gc_* i might not have to free it myself, but it isn't used after invoke
pmichaud Coke: +1 to adding a warning.
15:26 mikehh joined
dalek nxed: r529 | NotFound++ | trunk/Makefile:
delete pbc_to_exe intermediate files in make clean, mikehh++
15:36
15:41 mmcleric joined
ash_ sizeof(INTVAL) should always == sizeof(void*) right? 15:57
particle absolutely not 16:06
it's not true on windows x64 16:07
www.unix.org/version2/whatsnew/lp64_wp.html 16:09
cotto ~~
ash_ INTVAL is long (normally i think) 16:10
i guess on LLP64 its not true though
lunch & 16:11
NotFound Anyway, is better to not make such assumptions, even if you don't know any counterexample.
16:20 theory joined
ash_ well, i am taking all of my assumptions out anyway 16:29
Coke openfoundry.org--
darbelo particle: parrot does assume 16:34
particle: parrot does assume sizeof(INTVAL) == sizeof(void *)
ash_ yah, i thought it used INTVAL's to hold pointers in some places... 16:36
particle darbelo: it's a terrible assumption that's been very difficult to remove
darbelo And our packfiles will probably go up in flames if sizeof(INTVAL) != sizeof(opcode_t)
particle that assumption *must* be removed 16:37
but it ain't gonna be easy
iirc we do have fuction to data macros 16:38
*function pointer
those must be modified on platforms where inval != void* size
cotto_work particle, you could start a wiki page of patterns to look for. 16:41
particle the wiki page could simply contain windows x64 build output
ash_ does windows have an easy way to setup an .dll with header files? 16:42
so I could make an installer for libffi for windows folks 16:43
darbelo I kind of doubt it. 16:47
16:48 ambs joined
ash_ maybe not easy, but does windows have any way of doing that? i don't know the windows build environment 16:49
cotto_work particle: it'd be a start. 16:52
Chandon Why can't INTVAL simply be the native integer type of equal size to void pointer, even if on Windows that's "extra_long_int64_t"? 16:53
ash_ Chandon: that's a bad assumption if you have to change between memory architectures, hence why when 64 bit computers first came out, lots of 32 bit stuff didn't work 16:55
NotFound Or if you want to be able to select other types at Configure. 16:58
ash_ true, thats another great point
Chandon NotFound: I would't make too many bets on that working. For example, if FLOATVAL is ever smaller than 64 bit the entire world will explode. 16:59
NotFound Chandon: Why?
dukeleto VMIL sounds interesting: www.cs.iastate.edu/~design/vmil/2010/ 17:00
17:01 tcurtis joined
ash_ Chandon: a normal C float is only 32 bits... and a double is 64 bits, you can have a long double too even 17:03
anyone from parrot going to try to attend VMIL? 17:04
Chandon NotFound: For example, there's a function called Parrot_floatval_time() that gets used in a bunch of places that returns the current UNIX time as a FLOATVAL. If floatvals were 32 bits, this wouldn't even be accurate to 1 second.
NotFound Chandon: good point 17:09
ash_ tcurtis: did you see that list of optimization passes that the llvm has? you can look into those if you want to try doing some of those in parrot, the source is under a BSD license, and written in C++
time as a float seems odd.. 17:10
tcurtis ash_: Yeah.
Thanks for reminding me of it. 17:11
Chandon ash_: Why's that? Usually you think of time as a continuous number rather than a discrete number, and if you're actually using times for anything on a computer an imprecise mental model is much more realistic than a precise one. 17:13
If you say usleep(100), you're not going to return in 100 microseconds. 17:14
ash_ well, i normally separate the units of time in my head, mainly because its not on a base 10 scale, 60 seconds in a minute, 60 minutes in an hour, 24 hours in a day seem so arbitrary i normally don't think of them as a single thing but as individual pieces 17:16
but i am also always late, and don't ware a watch so time is sorta a myth
purl okay, ash_.
ash_ for me
Chandon Yea, that makes sense for big (>seconds) time. Obviously everyone in the world should start talking in kiloseconds and megaseconds as of today to solve that problem. 17:19
atrodo I ask the question, why not?
ash_ why not think in kiloseconds? 17:21
Chandon Days are a pretty natural unit, and 86.4 kiloseconds is a funny number.
ash_ maybe we should adjust the scale too, so 1 day is = 1 megasecond and move backwards from there 17:22
Chandon That sort of thing seems like a good idea, and then I realize that I still buy my gasoline in gallons. 17:24
ash_ and i measure temperature in fahrenheit and measure distance in miles.... 17:26
17:28 eternaleye joined
dalek rtcl-nqp: 0bd0fb9 | Coke++ | src/Partcl (2 files):
Implement [expr]'s bitwise not.
17:33
rtcl-nqp: 3ba6229 | Coke++ | src/Partcl/commands/main.pm:
Fail early; give a slightly more useful error message if an non-parsable
nxed: r530 | NotFound++ | trunk/winxedst1.winxed:
simplify lexing of operators
17:36
cotto_work How surprising. The linear scan allocator actually works for a simple pir program. 17:39
17:43 clinton joined
cotto_work only 15 failures 17:47
but there is at least one glorious segfault with a backtrace
18:02 joeri joined
whiteknight cotto_work: that's decent progress, considering you only started it yesterday 18:09
PIRATE might just be the rapid-prototyping paradise we've always wanted 18:10
cotto_work I thought about it for a day or two first.
but it's a nice simple algorithm
yes. It's ideal for that. 18:11
way more fun than C, even if it's much slower
pmichaud: ping 18:12
pmichaud cotto_work: pong
cotto_work pmichaud: any thoughts on ... in nqp-rx?
18:13 davidfetter joined
cotto_work wonders 18:25
18:35 gaz joined
ash_ can nqp-rx do nqp->pbc? 18:44
dukeleto ash_: nqp can be turned into pir, then pir->pbc 18:48
ash_ wasn't someone working on directly going from nqp to pbc? 18:49
18:49 davidfetter joined
tcurtis ash_: PIRATE has a direct POST->PBC stage. 18:53
cotto_work its POST is different from nqp-rx's though (for now)
ash_ got ya 18:54
cotto_work PIRATE's POST is much better-suited to generating pbc directly. nqp-rx's current POST is very stringy. 18:55
ash_ so, is that the major difference? 18:56
would it be a lot of work to translate nqp-rx's POST to be more PIRATE like?
18:56 integral joined
cotto_work I don't know. bacek plans on doing it though. 18:56
19:02 LoganLK joined, bubaflub joined 19:18 hercynium joined
dalek nxed: r531 | NotFound++ | trunk/winxedst1.winxed:
fix for named args in stage 1
19:27
cotto_work tcurtis, I like what you're doing for PIRATE. 19:41
thanks.
tcurtis cotto_work: thanks. It's essential for it to actually be usable in place of IMCC, since the ops I'm optimizing away don't exist. 19:43
cotto_work Yes. That doesn't make it less cool though.
I had to work around some of those limitations when writing test cases. It'll be nice to have them out of the way. 19:44
whiteknight do we have a list of ops like that, which don't really exist? 19:49
cotto_work src/ops/ops.skip 19:50
whiteknight oi 19:53
atrodo vey
tcurtis whiteknight: I don't think the ops in question are generally documented as existing in the first place. I think they're all just the result of giving a constant argument to ops that can be sensibly folded.
cotto_work I'm sure the list can be culled. There's nothing to prevent non-existent ops from showing up there iirc. 19:54
Since the ops aren't used, though, there's no non-manual way to verify that you're removing something that should be removed. 19:56
I guess a little opsc hacking would do it though.
19:59 tcurtis joined
whiteknight the problem is that opsc is generating nonsensical op bodies, like eq_ic_ic_ic 20:01
anything with an OUT shouldn't be constant, methinks 20:02
and all the i and n primitives should be folded
tcurtis whiteknight: eq doesn't have an out parameter
whiteknight er, ic and nc primitives
cotto_work That looks like a problem with the op definition.
tcurtis You're thinking of iseq
whiteknight ah yes, I am. 20:03
damned confusing ops
like it would have killed anybody to call that op " branch_if_equal"
cotto_work opsc just does what it's told
whiteknight ohs noes! t3h long op names are murderizing mah fingahs! 20:04
grumble grumble 20:05
whiteknight is packing up and going home. Later.
dalek nxed: r532 | NotFound++ | trunk/winxedst0.cpp:
fix bug of "using" in root namespace in stage 0
20:16
20:20 patspam joined 20:25 pjcj joined
cotto_work tcurtis: how much documentation exists on your gsoc project? 20:26
tcurtis cotto_work: some. but it's a little out of date. 20:27
cotto_work Do you have a spot on your schedule to get it updated? 20:29
tcurtis cotto_work: I could work on it right now. 20:32
cotto_work thanks 20:33
bacek aloha, humans
dukeleto bacek: greetings, carbon-thing 20:34
bacek dukeleto, hello, meat-bag :)
cotto_work bacek, are you up with nqp-rx enough to know why it seems that my queries about adding ... seem to fall into a black hole? 20:38
bacek cotto_work, yada-yada-yada in nqp? I probably can implement it. 20:39
moritz cotto_work: it's probably the pmichaud bottleneck
cotto_work I have implemented it and put in a pull request.
jnthn cotto_work: Use case? 20:40
cotto_work: Also, what does it to in the nqp-rx implementation?
cotto_work It's easier than pir::die("...");
github.com/cotto/nqp-rx/commit/56d4...f602225dad
jnthn Ah
Thing is that ... in Perl 6 does not die. 20:41
And we're trying to keep nqp-rx as a subset of Perl 6.
... returns a Failure object, which doesn't really exist in Parrot
!!! is the ... equivalent that dies
Anyway, I can't speak for pmichaud++ but that's my first guess at what he might say in response to the patch. :-) 20:42
cotto_work I saw that &fail and wasn't sure what the best equivalent in nqp-rx would be.
!!! would be fine. It jumps out more too, which is good. 20:43
thanks for helping get me straightened out on that
dukeleto jnthn: is !!! the klingon operator?
jnthn cotto_work: I think the patch with !!! instead of ... is likely to have a better shot at being agreed to by Pm, anyway. 20:44
dukeleto: Well, it results in death... :-) 20:45
cotto_work wfm. I'll give it a shot.
Do I assume correctly that any new nqp-rx feature should have his approval? 20:46
dukeleto cotto_work: that is a good assumption
cotto_work (as opposed to someone else with a commit bit)
bacek cotto_work, I'm pretty confident, that I can update nqp-setting by myself :) 20:48
Coke cotto_work: /i/ have an nqp commit bit. does that help answer your question? ;)
cotto_work I'm asking more about who has the say in design decisions. 20:49
jnthn cotto_work: That's Pm. 20:50
cotto_work ok
NotFound I'd like to have a Failure PMC in parrot.
20:50 ambs joined
ash_ NotFound: that does sound useful... 20:53
GeJ Bonjour everyone.
NotFound ash_: yeah, it avoid to having to decide if some things throws or returns an error indication, or to provide both variants. 20:54
20:55 patspam joined
dalek rrot: r47949 | NotFound++ | trunk/t/pmc/filehandle.t:
test for FileHandle.readall failure conditions
20:55
ash_ NotFound: want me to file an RFC or email the mailing list? 21:00
i don't think adding a failure object would break anything...
NotFound ash_: I'm thinking about creating a patch implementing it, to avoid having to explain too much. 21:01
ash_ that works too, anything i can help with? 21:02
NotFound Moral support ;)
cotto_work moral: failure is an option 21:03
21:07 patspam joined
dalek r: 6d6606f | bacek++ | src/P (2 files):
Add POST::Sub.set_flag to avoid dynamically generated invocations.
21:13
r: 3d03e92 | bacek++ | src/PIR/Actions.pm:
Add sub_modifier POSTing
r: 0a92532 | bacek++ | t/ (2 files):
Start adding tests for Sub modifiers.
cotto_work lols at bacek's '.sub "main" :main :init :load :immediate :postcomp :anon :method :lex' sub 21:15
bacek bah! :)
tcurtis ..... wow... that's definitely a corner case. 21:16
bacek it's bulk testing
cotto_work It's just testing modifier parsing.
tcurtis Ah.
cotto_work We'll add a special case to PIRATE that segfaults immediately upon trying to parse something like that in real code. 21:17
ambs coke++ # btw
tcurtis Wow. Code on Parrot can segfault on demand now? That's much better than doing it under mysterious circumstances. :) 21:18
bacek tcurtis, we used to have very special op for it
cotto_work sheds a tear for hcf 21:19
bacek Is there a way to set PObj flag from PIR? 21:20
cotto_work good question 21:21
purl Yeah, it is. I'm stumped.
cotto_work I don't recall any.
ambs purl: that is not particularly difficult.
purl ...but that is more that you dialed the wrong number...
bacek It's required for something like SUB_FLAG_PF_ANON etc
cotto_work sounds like something to add to Default PMC 21:22
bacek no... way too dangerous
cotto_work That's true. They have different meanings depending on the PMC. 21:23
bacek yes. I'm thinking about adjusting Sub.init_pmc
cotto_work and incredible potential to mess things up
bacek NotFound, ping 21:24
NotFound bacek: pong 21:25
dalek website: Chandon++ | Green Threads and Sleeping
website: www.parrot.org/content/green-thread...d-sleeping
bacek NotFound, if I add setting of PObj flags into Sub.init_pmc what is best way to test it? 21:26
NotFound bacek: Specific tests for any flag allowed to be set, I suppose. 21:27
bacek NotFound, there is no way to get PObj flags from PIR. 21:28
Add Sub.get_flags method?
NotFound bacek: we can start with that, and later think about some faster way if needed. 21:29
bacek deal
NotFound Don't forget to declare its experimental status. 21:30
bacek oookey. Why? To escape deprecation policy trap?
NotFound Mainly because it is experimental, isn't it? ;) 21:31
bacek Good point :)
21:38 whiteknight joined 21:46 patspam joined
cotto_work bacek, on your todo list what do you mean by supporting charset/encoding? 21:52
bacek cotto_work, building String with particular charset/encoding.
cotto_work right. POST::String does that. 21:53
bacek cotto_work, in .to_pbc? 21:54
Then mark it as done!
cotto_work yes
My only question is whether the bytes from nqp-rx's parsing code are sufficiently unmodified. 21:55
bacek good question...
purl Yeah, it is. I'm stumped.
cotto_work I don't know how to test that one.
pmichaud cotto_work: oops, I ended up getting distracted from your earlier ping 21:57
nqp might be able to recognize { ... } as stub code. I'm not sure it would actually generate anything yet. Maybe it could translate into a die.
cotto_work So I just have Murphy's timing. Good to know.
I posted github.com/cotto/nqp-rx/commit/56d4...f602225dad earlier and jnthn suggested that !!! would be semantically closer to what Rakudo does. 21:58
pmichaud looking.
If it's going to die, I agree it might be better as '!!!' 21:59
also, it might be nice if the args ended up being the message of the die 22:00
cotto_work They'd be optional, so that wouldn't make using it any harder.
pmichaud correct
nopaste "NotFound" at 192.168.1.3 pasted "Proposal: FailIfUsed PMC inspired by rakudo Failure" (251 lines) at nopaste.snit.ch/21754
dalek rrot: r47950 | bacek++ | trunk/src/pmc/sub.pmc:
Add ability to set Sub's PObj flags in init_pmc. Also add method to fetch them for testing purposes
NotFound Here is a first draft.
cotto_work How do you prefer changes to nqp-rx to be submitted? 22:01
(language changes, not just bug fixes)
pmichaud email, generally. I still haven't figured out how to work github's fork queue
or, catch me on #parrot, although I fully recognize that hasn't been very profitable for you over the past couple of weeks :-| 22:02
cotto_work That explains why I didn't hear anything back.
I'll rework the patch and catch you later.
pmichaud yes, I need to add the message to github that says that the fork queue ends up being a bit of a black hole
NotFound pmichaud: Can you take a look at my nopaste?
pmichaud NotFound: nopaste looks good to me
adding a FailIfUsed PMC strikes me as being too perl6-specific, though. 22:03
NotFound pmichaud: we have several things were people had discussed for long if shouls throw or not, this is a nice way to avoid that situation.
pmichaud I do very much like Perl 6's notion of Failure objects 22:04
I had also been toying with the idea of creating a Failure role (e.g., in P6object)
NotFound For example, loading libraries.
pmichaud i.e., something that could be mixin'ed on top of an existing object, like Undef. 22:05
that way any object could potentially act like a failure.
NotFound Or NCI failing to locate a symbol.
pmichaud anyway, Rakudo currently implements Failure as a class, but it probably ought to be a role. 22:06
NotFound pmichaud: looks complicated to implement without runtime checks in any operation.
pmichaud NotFound: well, the idea is still to overload the vtables.
but yes, it could be a bit complex. 22:07
anyway, having objects that throw exceptions when used seems to be a big win overall
NotFound For objects maybe is easily doable, but for PMCs, I doubt.
I'll clean it and write a RFC ticket, but maybe I lack time until monday. 22:08
Suggestions for a better name welcome. 22:10
Chandon Why would "make clean" delete my new test? 22:12
tcurtis Chandon: what's the test's filename? 22:13
Chandon t/pmc/alarm.pir 22:14
bacek it should be alarm.t
.pir files treated as generated
Chandon Hey, that could be it.
whiteknight make clean: srs bsns
22:14 lucian_ joined
Chandon And that's why it isn't deleting my other test. I should probably pay more attention to the stuff on my screen. 22:15
bacek afk # $dayjob
dalek rrot: r47951 | Chandon++ | branches/gsoc_threads (11 files):
[gsoc_threads] Alarms work, at least the easy way.
22:33
rrot: r47952 | Chandon++ | branches/gsoc_threads (13 files):
[gsoc_threads] merge from trunk
22:36 davidfetter joined
whiteknight Chandon: looks like your docs for Parrot_floatval_sleep was incorrectly copy+pasted 22:36
Chandon whiteknight: Good catch. I should make that say the right thing instead. 22:38
dngor Mmm, Alarms and delays. 22:39
dalek rtcl-nqp: 69aab75 | Coke++ | src/Partcl (2 files):
Add infix:** (exponentiation) to [expr]
22:41
whiteknight Chandon: I feel like I have to have some criticism, but the rest of your code looks pretty good 22:42
have any bikesheds that need painting? :) 22:43
Chandon I suggest "why invent Alarms when Timers exist?"
There's also all the freeze/thaw tests that aren't passing because I'm not sure what those VTABLE functions are supposed to be doing. 22:45
whiteknight I don't like timers anyway, so I don't care if you invent a million things to steal some of their thunder
freeze/thaw are serialization routines. Freeze basically converts a PMC into a string, by pushing values into the freeze manager 22:46
thaw converts a string back to a live PMC by unshifting those values back off again
dalek rrot: r47953 | Chandon++ | branches/gsoc_threads/config/gen/platform/generic/time.c:
[gsoc_threads] Now with less wrong POD.
22:50
Chandon Is there any general requirement for PMCs to handle freeze/thaw in a certain way? 22:53
cotto_work "roundtrip gracefully and don 22:57
't segfualt"
though I guess you can segfault a little if you really want to 22:59
dalek rtcl-nqp: d9f7524 | Coke++ | src/Partcl/Grammar.pm:
Add << and >> operators to [expr] (shift left, right)
23:04 hercynium joined
tcurtis What would be a suitable place in docs/ for documentation about Tree::Walker/Pattern/etc.? I had them in docs/pct, but that doesn't really make sense now that it's not limited to PCT anymore. 23:12
cotto_work that's an interesting question
whiteknight Chandon: best idea is to look at prior art
basically, you push things on in one order in freeze, and unshift them in the same order in thaw 23:13
cotto_work docs/dev makes sense
there's already some optimizer docs there.
tcurtis docs/dev seems to be mostly devoted to stuff at the C-level. 23:16
According to parrot.pod, it's for describing implementation decisions. 23:17
cotto_work It's telling how many files there are in docs/user 23:18
tcurtis I suppose docs/user might be the best place. 23:19
cotto_work We need to get masak to do Parrot's release announcements. 23:22
tcurtis And I will probably forget to bring up the lack of user documentation at #ps Tuesday.
cotto_work: I'll put it in docs/user/library/ expect documentation commits following my evening meal. 23:25
whiteknight you should write some docs to remind youself 23:26
cotto_work great 23:27
whiteknight I think kakapo is completely borked. I may try to salvage just the unit testing stuff for 2.6 23:28
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34679), fulltest) at r47953 - Ubuntu 10.04 amd64 (gcc with --optimize) 23:30
23:33 kid51 joined
mikehh pir/PIRATE (0a92532) - build ok / test PASS - parrot at r47953 - Ubuntu 10.04 amd64 (gcc with --optimize) 23:36
dalek rrot: r47954 | Chandon++ | branches/gsoc_threads/src/scheduler.c:
[gsoc_threads] Waking up from sleep is pretty good.
23:40
mikehh partcl-nqp (d9f7524) - make ok, make test PASS - Files=58, Tests=845 - at r47953 - Ubuntu 10.04 amd64 (gcc with --optimize) 23:41
partcl-nqp - still no TODO info on output with # test failed etc. 23:42
dalek TT #324 closed by jkeenan++: Write function documentation 23:43
TT #324: trac.parrot.org/parrot/ticket/324
Chandon whiteknight: You have a couple minutes to take a look at an interesting problem?
23:45 ash__ joined
whiteknight yes 23:47
mikehh winxed r532 - make ok, make test/test1/test2 PASS - parrot at r47953 - Ubuntu 10.04 amd64 (gcc with --optimize) 23:48
Chandon whiteknight: So if you pull my branch, build, and run ./parrot t/op/string.t it breaks - why?
The error is "get_integer() not implemented in class 'Continuation'". The thing it's calling that method on is an attr of the (one) Scheduler PMC, which only gets assigned in its constructor - as a PMCList PMC, not a Continuation. 23:49
Hopefully I'm just missing something stupid - but with Parrot it might always be that there's secretly a compacting garbage collector that only gets triggered by that string test and my pointers expired. 23:52
Coke i used to see errors like that when I wasn't marking something I needed not gc'd. 23:53
or when a gc run occurred when I called out to some other function and I wasn't expecting it.
(which is fine if you're marked, bad if you're not0 23:54
23:54 Psyche^ joined