Camelia, the Perl 6 bug

IRC log for #parrot, 2011-06-23

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:02 jsut_ joined #parrot
00:03 bubaflub left #parrot
00:07 jsut left #parrot
00:17 cotto joined #parrot
00:18 dalek parrot: a8ff342 | Whiteknight++ | / (4 files):
00:18 dalek parrot: Merge branch 'whiteknight/kill_CALLIN'
00:18 dalek parrot: review: https://github.com/parrot/parrot/commit/a8ff34205f
00:23 dalek parrot/whiteknight/remove_hash_macros: 66ba12e | Whiteknight++ | include/parrot/hash.h:
00:23 dalek parrot/whiteknight/remove_hash_macros: Remove old hash macros
00:23 dalek parrot/whiteknight/remove_hash_macros: review: https://github.com/parrot/parrot/commit/66ba12e26e
00:36 cotto left #parrot
00:40 cotto joined #parrot
00:40 whiteknight jnthn__: ping
00:41 cotto hio whiteknight
00:41 whiteknight hello cotto
00:41 whiteknight cotto: I'm starting to do a lot of thinking vis. NameSpaces and Classes
00:41 whiteknight I'm staring at the code right now, and want to kill it with a hammer
00:42 cotto I can think about things that aren't my talk now.  It's nice.
00:42 whiteknight sounds nice
00:42 whiteknight did you give your talk?
00:42 cotto yup
00:42 whiteknight how did it go?
00:43 cotto small turnout, but not bad
00:43 cotto time to find out if my recording is any good
00:45 cotto my laptop's built-in mic seems to be pretty good at picking me up from across the room
00:45 soh_cah_toa cotto: what was it about? was it the same one you're giving at yapc::na?
00:45 whiteknight oh, I have a commit coming up that is going to make a few people smile
00:46 cotto soh_cah_toa, yes
00:46 whiteknight I need to reconfig and rebuild because I love t/src/checkdepend.t SO MUCH
00:47 cotto Nice.  I can hear pretty much anything in the room.  This bodes well.
00:48 particle left #parrot
00:49 dalek parrot: c83d493 | Whiteknight++ | / (2 files):
00:49 dalek parrot: Poke into NameSpace directly instead of calling get_associated_* methods when creating a new Class. This change alone cuts non-threaded coretest runtime from 4:42 to 3:40 on my system
00:49 cotto loud and clear
00:49 dalek parrot: review: https://github.com/parrot/parrot/commit/c83d4937f7
00:50 whiteknight I've got two methods that we can deprecate and kill with a stick
00:50 particle joined #parrot
00:51 whiteknight I want to start working towards decoupling NameSpace and Class
00:51 whiteknight I do not any longer want to be storing methods and vtables in the namespace, and do not want to be using namespaces as keys to look up classes
00:51 cotto It's like listening to myself in a smelly mirror.
00:51 whiteknight The user can choose to store the Class in the NameSpace if they want, but Parrot shouldn't do that by default
00:52 whiteknight I also don't like storing Classes by string name keys, but I can't really think of any better way to store them
00:52 whiteknight of course, maybe the user should be in charge of that too
00:53 whiteknight So Parrot wouldn't have a new_p_s opcode anymore, only new_p_p
00:53 whiteknight you would need to use the Class object to create an instance of that class
00:54 whiteknight The only time Parrot should store metaclass objects by name to be looked up is for built-in types
00:54 cotto whiteknight, does that commit work with Rakudo?
00:55 cotto whiteknight, what's your motivation for wanting to decouple those?
00:56 whiteknight I didn't test Rakudo but I can't imagine it breaks anything
00:56 whiteknight they don't use our NameSpace PMCs for anything
00:56 cotto not likely
00:57 whiteknight for the speed improvements in startup time, it's worth it
00:57 cotto That's a very clear win.
00:57 cotto What brought those to your attention?
00:58 whiteknight I was just poking around in oo.c, because I have been thinking about namespace a lot lately and that's the file to look in for problems
00:58 whiteknight some of the ugliest, most fragile and buggy code in all of parrot lives in oo.c now
01:04 * cotto heads to the os bridge speaker's party
01:10 cotto left #parrot
01:15 soh_cah_toa wow, could it really be that there are no string comparison functions in the embedding string api? that'd make me so sad
01:18 soh_cah_toa yeah, i don't think there is. that's so lame
01:21 woosley joined #parrot
01:30 bubaflub joined #parrot
01:30 bubaflub ~
01:31 whiteknight soh_cah_toa: I've been adding things to the embedding API as needed
01:31 whiteknight ask, and ye shall receive
01:31 whiteknight or, put together a patch to add it your own damn self :)
01:32 soh_cah_toa i was just thinking about opening a ticket
01:32 whiteknight that works too
01:32 soh_cah_toa but i'm working in a different branch and don't want to merge yet
01:32 soh_cah_toa if all i need at the moment is a Parrot_String comparison, is it ok if i just add a Parrot_api_string_equal() in my branch for now?
01:33 whiteknight yes
01:33 dmalcolm left #parrot
01:33 soh_cah_toa ok
01:34 soh_cah_toa eventually, i would like to see a STRING function and Parrot_String function correlation. like if there's a Parrot_str_copy(), then there should also be a Parrot_api_string_copy()
01:35 whiteknight the embedding API is purposefully kept minimal
01:35 whiteknight the best way to interact with Parrot is to generate and execute PBC
01:35 whiteknight the embedding API lets you get to that point. PBC has access to all parrot capabilities
01:36 whiteknight trying to expose the full power of Parrot through the C api is a huge waste
01:36 soh_cah_toa hmmm...yeah you're right
01:38 soh_cah_toa it just seems kinda stupid in the embedding api that all you can do w/ strings is create them and free them. nothing else
01:51 particle1 joined #parrot
01:51 whiteknight soh_cah_toa: like I said, we can add new interfaces for other operations. We haven't had a need yet, and we are trying to keep the API minimal
01:52 soh_cah_toa i understand
01:53 whiteknight left #parrot
01:53 whiteknight joined #parrot
01:53 whiteknight okay, I'm heading to bed now. I'll talk to you tomorrow
01:53 soh_cah_toa see ya later
01:54 whiteknight left #parrot
01:55 particle left #parrot
02:15 bubaflub NotFound: hey, got a moment?  i'm running into a weird problem
02:16 bubaflub *a weird Winxed problem
02:29 AzureSto_ left #parrot
02:29 eternaleye left #parrot
02:29 perlite left #parrot
02:29 dngor left #parrot
02:29 dngor joined #parrot
02:29 eternaleye joined #parrot
02:29 perlite joined #parrot
02:29 AzureStone joined #parrot
02:29 losinggeneration left #parrot
02:29 TiMBuS left #parrot
02:29 losinggeneration joined #parrot
02:29 contingencyplan left #parrot
02:29 jjore left #parrot
02:29 TiMBuS joined #parrot
02:30 jjore joined #parrot
02:35 rurban_ joined #parrot
02:37 rurban left #parrot
02:37 rurban_ is now known as rurban
02:50 dalek parrot: 247bde0 | bubaflub++ | docs/pdds/draft/pdd16_native_call.pod:
02:50 dalek parrot: add section about deprecated NCI symbols
02:50 dalek parrot: review: https://github.com/parrot/parrot/commit/247bde0f8a
02:50 dalek lalrskate: 405625f | tcurtis++ | src/LALR/DPDA (3 files):
02:50 dalek lalrskate: Add methods for testing adequacy.
02:50 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/405625fe4c
02:50 dalek lalrskate: bb5ee93 | tcurtis++ | src/LALR/DPDA.winxed:
02:50 dalek lalrskate: Make adeqacy tests actually compile.
02:50 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/bb5ee93c1b
02:51 dalek lalrskate: 8a25278 | tcurtis++ | src/LALR/Generator/BuildCFSM.winxed:
02:51 dalek lalrskate: Add a brief descirption of the purpose of build_CFSM.
02:51 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/8a25278c2e
02:51 dalek lalrskate: d13860e | tcurtis++ | src/LALR/Generator/BuildNonte​rminalTransitionTable.winxed:
02:51 dalek lalrskate: Implement nonterminal-transition table generation.
02:51 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/d13860e2d3
02:51 dalek lalrskate: 3c8b4b5 | tcurtis++ | s (2 files):
02:51 dalek lalrskate: Implement the building of the sets of "p-states" for each production.
02:51 dalek lalrskate: review: https://github.com/ekiru/l​alrskate/commit/3c8b4b5c43
02:51 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_5_0-16-gc83d493
02:51 mikehh Ubuntu 11.04 i386 (g++)
02:54 dalek parrot: 7daf22c | bubaflub++ | .gitignore:
02:54 dalek parrot: update gitignore after TT #2134 - pbc_disassemble now lives under frontend
02:55 dalek parrot: review: https://github.com/parrot/parrot/commit/7daf22ca06
02:55 soh_cah_toa bubaflub: nice catch. i forgot about that
02:56 bubaflub soh_cah_toa: no prob, quick fix.
03:05 bubaflub plobsing: if you're around i've got another NCI question.
03:06 dalek parrot: a3f1145 | mikehh++ | MANIFEST.SKIP:
03:06 dalek parrot: re-generate MANIFEST.SKIP
03:06 dalek parrot: review: https://github.com/parrot/parrot/commit/a3f1145940
03:08 cotto joined #parrot
03:13 cotto soh_cah_toa, you can safely merge your branch with master without messing anything in master up.
03:15 soh_cah_toa cotto: ok. are you referring to what i said earlier about the string comparison thing?
03:15 cotto yes
03:16 soh_cah_toa i realized that at the point where i needed it, i already had converted it to a c-string so i just did a strcmp() instead
03:17 cotto How nice.  I finally have a minute to look at the ipc script.
03:18 soh_cah_toa good b/c it's acting up
03:18 soh_cah_toa let me push first, i might have updated it
03:18 cotto deal
03:21 soh_cah_toa about the eof issue. for some reason, if i did a Parrot_io_eof() after the call to readline_interactive(), it didn't catch it.
03:22 soh_cah_toa i discovered that this was because on eof, an exception was being thrown so execution never reached the next line
03:22 soh_cah_toa i circumvented this by checking the "is_error" string value to the "Null PMC blah blah blah" message in fail() and then exiting quitely
03:22 soh_cah_toa however, when i added that, the ipc output acts differently. i'll show you
03:22 cotto ok
03:26 dalek parrot/soh-cah-toa/hbdb: 1687f97 | soh_cah_toa++ | / (4 files):
03:26 dalek parrot/soh-cah-toa/hbdb: Fixed (sort of) the EOF issue
03:26 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/1687f97e27
03:29 soh_cah_toa now when i run the script, i don't get an error when i enter "this_is_not_a_command" which i should
03:29 soh_cah_toa and it stopped doing this but some things were printing out of order. i don't know why i stopped though
03:30 soh_cah_toa oh and you'll need a file called "hello.pbc". that's just a temporary thing for on my machine
03:31 contingencyplan joined #parrot
03:32 cotto I just happen to have one.
03:34 soh_cah_toa wow, this is interesting. if i add print HBDB_STDIN "^D"; before closing the filehandle, i get the message that's in the if(Parrot_io_eof) right after the call to readline_interactive()
03:35 soh_cah_toa but if i send eof by closing the file handle, then execution reaches the fail() function in frontend/hbdb/main.c
03:36 soh_cah_toa i didn't add that code in the commit though. it's just a stub
03:37 soh_cah_toa oh, i had waitpid() commented
03:38 soh_cah_toa now i get the message about an undefined command
03:38 cotto that sounds promising
03:39 soh_cah_toa that's why it stopped printing out of order
03:39 cotto I don't know if I'll be especially useful.
03:39 soh_cah_toa except now it does so i'll push it so you can see
03:39 theory joined #parrot
03:43 dalek parrot/soh-cah-toa/hbdb: 1e6a0e1 | soh_cah_toa++ | / (2 files):
03:43 dalek parrot/soh-cah-toa/hbdb: Uncommented call to waitpid() so ipc.pl acts a little nicer
03:43 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/1e6a0e10c3
03:44 plobsing bubaflub: still around?
03:44 bubaflub plobsing: yep.
03:44 bubaflub plobsing: i'm working on http://trac.parrot.org/parrot/ticket/2130
03:44 bubaflub basically, our ncurses library binding has 2,3,4 and t in it
03:45 bubaflub plobsing: could you give a quick once over of a patch i'm preparing?  i want to verify i'm heading in the right direction
03:45 plobsing sure
03:45 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_5_0-19-ga3f1145
03:45 mikehh Ubuntu 11.04 i386 (g++ --optimize)
03:45 plobsing bubaflub: url?
03:47 bubaflub plobsing: https://gist.github.com/1041865
03:47 bubaflub plobsing: also, what should i do about the 't' parameters?  can i just use NCI::Utils?
03:48 plobsing bubaflub: that is probably the easiest solution
03:50 plobsing bubaflub: I notice you've changed over the .declarations file to use 'p', but hand-converted the equivalent .pir file
03:50 bubaflub plobsing: is the .pir file generated from ncidef2pir?
03:51 plobsing yes
03:51 bubaflub plobsing: would existing code just work with just 'p' type?
03:51 plobsing no
03:51 bubaflub plobsing: ah, would it work with the stuff in the .pir?
03:51 plobsing bubaflub: mostly
03:52 bubaflub plobsing: should we just nuke the .declarations file and commit the .pir?
03:52 plobsing to use the 'p' type, callers would need to allocate and work with something pointer-ish (rather than integer-ish)
03:52 plobsing bubaflub: that's a good question
03:53 bubaflub plobsing: cause the pcre.pir isn't generated from a .declarations
03:53 plobsing ncidef2pir is a really sweet tool when it works, and it used to work for ncurses
03:54 plobsing unfortunately, it didn't get the upgrade it needs to handle the new signatures
03:54 plobsing fixing it falls way out of the scope of what you're doing, but would be nice long-term
03:54 bubaflub plobsing: is it upgradable?  i thought without a 2, 3, or 4 it won't know what to generate
03:54 bubaflub plobsing: i think it's a worthy long-term goal
03:55 plobsing bubaflub: it is upgradable. it needs to start generating code similar to what you've patched up
03:56 bubaflub plobsing: so we'd keep the 2, 3, and 4 and maybe even t or b in the declarations, but in the actual PIR code we'd handle it differently?
03:57 plobsing bubaflub: no. in stead support new syntax to represent call-by-reference parameters. this is what nci_thunk_gen did.
03:57 plobsing take a look at the bottom of src/nci/extra_thunks.nci. it supports 2 varieties of signatures, the newer of which supports call-by-reference.
03:58 plobsing eg: ptr  (ptr, int, ptr&, int&, ptr)
03:58 bubaflub ah, so instead of just being ppipip
03:58 bubaflub that's what the spaces are for.  got it.
03:59 bubaflub so instead of patching up this ncurses.pir i could focus on getting that syntax working with ncidef2pir
03:59 plobsing yes. although that is definitely much more work. arguably yet another yack to shave.
04:00 bubaflub plobsing: well, it looks like i might finish my project with a little extra time and i think it's a yack that needs to be shaved.  plus i'm learning lots about the NCI subsystem.
04:01 bubaflub plobsing: i'll start slowly hacking on ncidef2pir and a conversion script that'll take old-style NCI def and convert it into a new one.
04:01 plobsing bubaflub: a note on style - in stead of creating an FIA for the parameters, I believe you can use a key on dlfunc (eg: dlfunc $P2, $P1, 'scale_form', [.DATATYPE_INT; .DATATYPE_PTR; $I3; $I3]
04:01 plobsing )
04:01 plobsing that is, in my opinion, easier to read
04:01 bubaflub plobsing: good to know.
04:01 bubaflub plobsing: agreed.
04:01 plobsing at least until the lines get too long
04:02 bubaflub plobsing: if you don't mind giving my scripts / patches a once over, i don't mind writing them.
04:02 dalek parrot/soh-cah-toa/hbdb: 199bb25 | soh_cah_toa++ | ipc. (2 files):
04:02 dalek parrot/soh-cah-toa/hbdb: Renamed ipc.pl because now it's almost a test file
04:03 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/199bb25d1b
04:03 cotto left #parrot
04:05 plobsing I'm more than happy to increase the bus number on this system
04:09 bubaflub plobsing: great.  last question for the night - the new style def, instead of say i func_name p 3 it would be int func_name ptr int&
04:11 plobsing bubaflub: I leave that up to your discretion. If it can communicate the full range of signatures, that's all that really matters.
04:11 bubaflub plobsing: ok.  so 2 -> short&, 3 -> int&, 4 -> long&, b -> ptr& and we'll let NCI::Utils handle t?
04:12 plobsing sure
04:12 plobsing but I'd like to come back to a point I made earlier about "mostly working"
04:13 plobsing the old call-by-ref convention and new call-by-ref convention are very similar, but not equivalent
04:14 bubaflub go on
04:14 plobsing the old one took and modified a containing PMC. the new one takes an appropriate primitive, calls by reference, and then uses multi-return to spit back the potentially modified argument.
04:15 bubaflub i follow you up to the multi-return - the item is not modified in place?
04:16 plobsing nope
04:16 plobsing PCC doesn't have a notion of call-by-reference
04:16 plobsing so foo($I0) *can't* modify $I0
04:16 plobsing the old convention circumvented that by mandating the use of wrapper PMCs
04:17 plobsing the new convention gets around it by returning the new value
04:17 bubaflub so in a function that takes a pointer and modifies it, we'll have to manually set it after calling the function
04:18 bubaflub so we could get not only whatever the C function actually returns, but also whatever got modified
04:18 bubaflub (unless we flatten it all to a 'p', pass it a StructView with a single datatype in there... but that's a bit ugly)
04:19 plobsing not exactly. in order to have well-defined behaviour, we return the end-result of all call-by-reference parameters, not just the modified ones.
04:19 plobsing I'm having trouble understanding your "takes a pointer" statement
04:21 bubaflub couldn't we emulate the old behavior by instead of using, say, 3, we use p and pass it a StructView that just wraps an int?  then the pointer itself isn't modified by the integer in it is.
04:21 bubaflub also, is PDD03 (the calling conventions) up to date?  looks like i need to do some reading...
04:21 plobsing bubaflub: we could do that. alternatively we could do an old->new wrapping
04:22 plobsing $I0 = $P0; (retv, $I0) = foo($I0); $P0 = $I0
04:22 plobsing this has less GC churn
04:24 plobsing also, StructView is only the representation object. The objects obtained from allocation are pointers (of the PtrObj variety).
04:25 bubaflub you get that from StructView.alloc(), right?
04:25 plobsing yes
04:25 bubaflub so Parrot handles the boxing from I <-> P correctly?  that'd be pretty straightforward
04:26 plobsing that's not exactly what's happening
04:26 plobsing but the end result is still correct
04:26 plobsing it isn't boxing, but rather a setter/getter, which is the responsibility of the PMC to implement sanely
04:27 plobsing that's how the old call-by-ref convention worked as well
04:27 bubaflub ok
04:27 bubaflub just to make sure i understand - let's say we have an old NCI def of a function like i func_name p 3
04:27 bubaflub converting it to a new style would be int func_name p int& but that's not *exactly* equivalent as the last parameter would be returned
04:28 bubaflub so we can either change our existing code to handle that or we can try and wrap it
04:28 plobsing it would be returned rather than modified, correct
04:28 plobsing yes, we can wrap the NCI or modify the user code
04:28 bubaflub ok - so wrapping the NCI code would probably be the most transparent for existing code, future code can do either
04:30 bubaflub so instead of doing the whole set_global 'package::func_name', $P2, we'd do set_global 'package::__func_name' and then have our own function called func_name that would sanely handle the arguments
04:30 bubaflub for NCI functions that don't have any pointers, it would just be a single function call.
04:30 plobsing that sounds decent
04:31 bubaflub ok, i think i'm getting a good idea of what this script should look like.
04:31 bubaflub do we want to keep the old-style NCI def parsing around as well?  maybe a command-line switch option?  or should we put that style into a deprecation aiming at the next supported release?
04:33 plobsing I have no strong feelings one way or the other
04:34 bubaflub ok, great.  i need to head to bed for tonight, but i'll be pestering you in the near future about this.
04:41 cotto joined #parrot
05:06 TiMBuS left #parrot
05:06 TiMBuS joined #parrot
05:12 soh_cah_toa left #parrot
05:15 szabgab joined #parrot
05:16 estrabd left #parrot
06:25 jsut_ left #parrot
06:28 UltraDM joined #parrot
06:36 theory left #parrot
06:56 Eclesia joined #parrot
07:08 mj41 joined #parrot
07:42 SHODAN joined #parrot
07:51 simcop2387 left #parrot
07:51 simcop2387 joined #parrot
07:53 dngor left #parrot
07:57 dngor joined #parrot
08:01 slavorgn left #parrot
09:08 daniel-s joined #parrot
09:20 woosley left #parrot
09:56 Drossel joined #parrot
09:59 Kulag left #parrot
10:36 rurban_ joined #parrot
10:40 rurban left #parrot
10:40 rurban_ is now known as rurban
10:49 Drossel left #parrot
10:49 Kulag joined #parrot
11:19 mtk left #parrot
11:19 mtk joined #parrot
11:20 mtk left #parrot
11:20 mtk joined #parrot
11:47 atrodo =~
12:09 whiteknight joined #parrot
12:15 woosley joined #parrot
12:16 woosley left #parrot
12:19 Eclesia is it possible from winxed to write some code which could be written directly as a pbc ?
12:21 Eclesia I mean If I have a string, which is actually the content of a pir file. could I compile it to pbc ?
12:22 ambs joined #parrot
12:25 moritz Eclesia: IMCC can compiler PIR to PBC
12:25 moritz Eclesia: I think whiteknight++ gave IMCC an API that you can use for that
12:26 Eclesia imcc ?
12:26 tadzik intermediate code compiler, I think
12:26 whiteknight IMCC is the current PIR compiler
12:26 Eclesia nice
12:26 Eclesia so whiteknight, you made an api in rosella for this ?
12:26 whiteknight Eclesia: You can use the compreg op to get a reference to it
12:26 whiteknight no, this is all part of parrot
12:27 whiteknight in PIR, you can do "$P0 = compreg 'PIR'"
12:27 whiteknight that gets you the compiler object. Then you would invoke it: "$P1 = $P0.compile_string($S0)"
12:27 whiteknight that gives you a packfile PMC
12:28 Eclesia whiteknight: this compreg is a specific namespace ?
12:28 Eclesia is in*
12:28 whiteknight it's an opcode, built in to parrot
12:29 Eclesia ok
12:29 whiteknight Compilers typically register themselves with Parrot, and then you can get access to them at runtime
12:29 Eclesia I suppose just like chr, compreg will be available in winxed
12:30 whiteknight For instance, winxed registers itself, so you can get a reference to it too
12:30 whiteknight $P0 = compreg 'Winxed'
12:30 whiteknight (after you've loaded Winxed in, of course)
12:31 whiteknight actually, for the PIR compiler object, you probably want to do $P1 = $P0($S0)
12:31 whiteknight compile_string method might not be stable and usable yet
12:34 Eclesia I'll give it a try this evening
12:44 whiteknight okay, let me know if you have any questions
12:44 whiteknight I probably need to start working on that compiler object to embetter it
12:46 atrodo whiteknight> You might get some help with that next week
12:46 whiteknight is that you volunteering?
12:46 whiteknight because I loves me some help
12:47 atrodo if I end up blocking (or dislike) on it, yes
12:47 atrodo wow, that sentence sounds a lot better in my head
12:47 whiteknight right now I think the compile_string method returns a PtrObj pmc over a packfile struct, so that needs to  be improved
12:47 whiteknight there's no real way to work with it from PIR
12:49 atrodo It's look like lunch today will give me some good time to look at everything, old and new, to see how I want to go forward
12:49 whiteknight okay, awesome
12:50 Eclesia whiteknight: is there an xml api in rosella ?
12:50 whiteknight no, not yet
12:50 whiteknight I've thought about it, but haven't gotten around to it
12:51 whiteknight Parrot has a JSON compiler, but no XML functionality
12:51 whiteknight I wasn't sure whether we wanted to brew our own, or wrap an existing solution
12:51 Eclesia strange choice. making json before xml
12:51 moritz json is far simpler
12:51 whiteknight far simpler. And usually easier to read. At least, in my opinion
12:52 atrodo i much prefer json over xml
12:53 * Eclesia prefer xml, dont like having to much {} everywhere
12:55 whiteknight XML is definitely the standard in Java or .NET lands
12:55 slavorgn joined #parrot
12:55 SHODAN left #parrot
12:56 whiteknight dynamic languages like javascript, perl, and python seem to prefer using json or yaml or stuff like that
12:56 whiteknight and since many of our libraries were written by perl hackers...
12:57 jsut joined #parrot
12:58 moritz XML is a great markup language, but often abused as serialization or data exchange format
12:58 moritz so comparing it to JSON
12:58 moritz is already a mistake
12:59 Eclesia parrot = talks MY language :p  no fight over who is the best. just be able to do it ^^
12:59 Coke you're able, sure. get right on that. ;)
12:59 whiteknight Like I said, I do want xml capabilities on parrot too. I just haven't figured out how I want to do it yet
13:00 whiteknight or, I haven't figured out how to make somebody else do it for me :)
13:00 Coke you have other things on your plate, so make... right.
13:00 Coke (not me!)
13:03 whiteknight Coke: I've run out of plate space. I'm piling food up on the floor
13:08 Eclesia I'm also searching for winxed examples to work with in/out streams. if someone have some
13:10 whiteknight Eclesia: I don't know if there are any good examples. the getstdin and getstdout built-in functions return you the standard handles
13:10 whiteknight so var stdout = getstdin();
13:11 whiteknight For working with regular files, you can use the FileHandle PMC directly, or the Rosella.FileSystem.File object too if you prefer that approach
13:11 Eclesia whiteknight: I mean file streams, read/write. or other streams, from url ... stuff like that
13:12 whiteknight for file streams you can do things like "var fh = new 'FileHandle';     fh.open(<filename>, "r");    fh.write(<text>);"
13:12 whiteknight er, that should have been "r"
13:12 whiteknight er "w"
13:12 whiteknight stupid fingers this morning
13:13 bubaflub i'm having trouble logging into trac / resetting my password - who should i talk to about that?
13:13 whiteknight bubaflub: I can probably help
13:13 whiteknight maybe
13:14 bubaflub whiteknight: great.  the password i thought i used for the site doesn't work and the reset password page times out...
13:14 whiteknight ...nevermind, I don't appear to be able to log in either
13:15 bubaflub whiteknight: hm.  maybe it's a temporary thing.
13:15 whiteknight maybe
14:16 Kulag left #parrot
14:16 Kulag joined #parrot
14:23 NotFound In winxed you can use the builtin load_language, it does both load_language and compreg,
14:27 Eclesia just wondering, rather then compiling pir code, maybe it's possible to create parrot objects which represent a class, a function, a method,  . . . ? this way I could avoid writing some pir and directly work with objects
14:28 bubaflub NotFound: do you have a moment?  i'm running into a strange Winxed problem.
14:29 estrabd joined #parrot
14:30 whiteknight Eclesia: like metaprogramming? Writing code that writes code?
14:31 NotFound bubaflub: sure
14:32 bubaflub NotFound: i had 3.4.0 installed and winxed and plumage and all that, so i wiped all of that out.  i updated parrot to the latest, installed, updated winxed, installed, installed plumage and rosella from that.  when i try to run winxed i get "Incompatible versions of `core_ops' oplib. Found 3.4.0 but loaded 3.5.0"
14:32 Eclesia whiteknight: yes
14:32 bubaflub NotFound: i think there is something that i haven't deleted - any ideas?
14:32 atrodo whiteknight> 'round these parts, we call that magic
14:33 whiteknight atrodo: We don't take kindly to metaprogramming and other sorcery 'round these 'ere parts
14:33 atrodo whiteknight++ exactly
14:33 NotFound bubaflub: probably the directory that plumage uses to downlaod and build. Usually ~/.parrot/plumage
14:33 bubaflub NotFound: ok, so should i nuke everything again?
14:33 * atrodo sometimes feels like he's in the south when he's clearly in yankee territory
14:34 Eclesia whiteknight: metaprogramming is bad ?
14:34 whiteknight Eclesia: no, we're just joking around. It's good
14:34 NotFound bubaflub: yes, the easier way is to delete it completely and reinstall plumage
14:34 whiteknight I end up creating a lot of classes in Rosella, especially the Proxy library
14:34 Eclesia whiteknight: *afraid for a second* it's actually a big part in my project ^^
14:35 whiteknight Eclesia: Classes are objects, so you can make a new class the normal way "$P0 = new ['Class']", etc
14:36 hercynium joined #parrot
14:36 Eclesia I believe there are no winxed example for such things right ?
14:36 whiteknight https://github.com/Whiteknight/Rosella​/blob/master/src/proxy/Factory.winxed
14:36 whiteknight Line 90, the "create_proxy_class_internal" function
14:37 whiteknight I use the newclass opcode to create a new named class, I add attributes to it, then I do some other wizardry with it
14:37 whiteknight Class has a lot of methods on it, add_method, add_vtable_override, add_attribute, etc
14:37 Eclesia perfect, exactly what I wanted
14:37 Eclesia and when I want to write this in a pbc at the end ?
14:37 whiteknight If you're not totally against reading C code, the source for class is here: https://github.com/parrot/parro​t/blob/master/src/pmc/class.pmc
14:38 whiteknight Everything marked with "METHOD" is a method you can call from Winxed/PIR
14:38 whiteknight Eclesia: that's a little bit harder, I think
14:38 whiteknight You can freeze a PMC to serialize it to bytes, and write those to a file. There are also tools for writing PBCs from PIR/Winxed code, but I'm not super familiar with them and don't have examples
14:39 whiteknight bacek or plobsing probably know a lot more about it than I do
14:39 Eclesia and no docs
14:39 whiteknight of course
14:39 Eclesia *hard to work with parrot*
14:39 whiteknight Maybe I'll have to try writing some
14:39 whiteknight Eclesia: we're working on it!
14:40 Eclesia I'm still here, means I accepted the challenge ^^
14:41 NotFound The current best way is to write to files and call command line tools. Eats less memory that way.
14:42 whiteknight We have a set of PackFile PMC types that can be used to create a packfile programmatically, but they don't currently have a way to add in an existing packfile that comes back from the IMCC compiler
14:42 whiteknight so that's a huge omission
14:43 whiteknight it looks like PackFileDirectory has a set_pointer vtable, but PackFile does not
14:45 bubaflub NotFound: still no go.  i removed plumage and re-installed but still getting the "Incompatible versions" error.  any other ideas?
14:46 whiteknight What I think I want to do, soon, is to add functionality to Packfile to read in the kinds of packfiles returned from IMCC
14:46 whiteknight that would be a big help
14:47 estrabd left #parrot
14:47 NotFound bubaflub: What command gives you that message?
14:48 bubaflub NotFound: ah, found the problem.  had old .pbc files sitting around
14:49 NotFound bubaflub: uh... then that message needs improvement, it should provide more information.
14:50 NotFound bubaflub: BTW, now is better to not install winxed, using the one bundled with parrot instead.
14:51 bubaflub NotFound: ok.
14:52 whiteknight we need to remove winxed from plumage, if it isn't removed already
14:53 bubaflub whiteknight: it says it's still there.
14:53 bubaflub whiteknight: also, will the rosella harness automatically use the winxed that comes with parrot?
14:53 whiteknight yes
14:54 bubaflub whiteknight: great.  ok, i'm uninstalling winxed and going to use the bundled one instead
14:55 NotFound Yes, I think instllaing it from plumage now can be confusing.
14:57 NotFound To play with the bootstrap or look at the examples, installing from the repo is easier.
14:59 NotFound bubaflub: care with the uninstall, the directories used for the pbc and binaries are the same.
14:59 NotFound So uninstall from plumage can delete the bundled files.
15:01 pmichaud http://gist.github.com/1042691  # patch to improve the speed of RPA splice
15:01 pmichaud this improves the speed of repeated insertions and deletions into an RPA (which rakudo does for its list processing) by about 90%
15:02 whiteknight pmichaud: people actually use splice?
15:02 whiteknight ...okay, question answered
15:02 whiteknight apply it
15:02 pmichaud rakudo does, yes.
15:03 pmichaud I didn't realize just how slow the older version was until doing some benchmarking late last night
15:03 pmichaud http://gist.github.com/1042698  # simple splice benchmark program
15:04 pmichaud without the patch, that program takes 11.5 seconds on my system; with the patch it takes <1.0 sec
15:05 whiteknight wowzers
15:05 whiteknight pmichaud: just to double-check, does Rakudo use NameSpaces, or custom subclasses of NameSpace for anything?
15:05 pmichaud rakudo master does, yes.
15:05 whiteknight regular NameSpace, or subclasses?
15:06 pmichaud regular NameSpace.  We haven't ever subclassed NameSpace, afaik.
15:06 pmichaud I don't think we'll be using NameSpace at all in nom, and eventually not in nqp either.
15:06 whiteknight I made a commit last night that avoids two method calls to NameSpace for every class that's created, and that cuts about 20-25% out of parrot startup time
15:06 pmichaud oooh, nice.
15:06 whiteknight I did some testing last night, wanted to make sure it didn't hurt Rakudo
15:07 pmichaud it shouldn't.
15:07 whiteknight er, not startup time. It was coretest time
15:07 whiteknight which is highly related to startup time, but not the same
15:07 NotFound I think there are unresolved problems on the way to HLLmap Namespace.
15:07 cotto ~~
15:07 whiteknight NotFound: I'm sure there are are problems. The whole system is borked
15:08 whiteknight When I was working on the parrot-data-structures project, I was experimenting with some alternate array architectures that saw some pretty nice performance improvements over standard RPA
15:08 whiteknight at least, for some workloads
15:12 Eclesia when will we have parrot faster then c ?
15:14 NotFound Eclesia: I don't belive in the "faster than C" propaganda of any virtual machine.
15:15 theory joined #parrot
15:15 plobsing Eclesia: it already is. you just need to write suitably slow C code.
15:15 * Eclesia was just joking
15:15 dalek parrot: f12d120 | pmichaud++ | src/pmc/resizablepmcarray.pmc:
15:15 dalek parrot: [pmc]:  Patch to ResizablePMCArray.splice to improve its performance for shifts and insertions by over 90%.
15:15 dalek parrot: review: https://github.com/parrot/parrot/commit/f12d120158
15:16 dukeleto that is quite nice, pmichaud++
15:16 JimmyZ joined #parrot
15:16 NotFound winxedxx is as fast as C in some code.
15:17 NotFound You just need to use only int and avoid function calls.
15:18 NotFound "just" X-)
15:19 atrodo NotFound> Seems legit to me!
15:20 cotto pmichaud++
15:20 NotFound atrodo: yes, but not very useful.
15:21 atrodo Well, my desktop cpu only works with bits and it's fast.  Good enough evidence for me!
15:23 Eclesia expect one day, we will have quantic computers. bits will become an obsolete concept
15:24 NotFound Maybe some day we'll compute with twits.
15:24 whiteknight arguably, microsoft is already doing that
15:24 whiteknight bah-dum-ch
15:26 tadzik ba-dum-tss!
15:31 contingencyplan left #parrot
15:33 mj41 left #parrot
15:37 UltraDM left #parrot
15:39 Kulag left #parrot
15:45 Kulag joined #parrot
15:46 daniel-s left #parrot
15:47 theory left #parrot
15:48 cotto left #parrot
15:51 mtk left #parrot
15:52 mtk joined #parrot
16:06 Eclesia left #parrot
16:30 JimmyZ left #parrot
16:32 whiteknight left #parrot
16:35 dmalcolm joined #parrot
16:50 Eclesia joined #parrot
16:51 dodathome joined #parrot
16:56 lichtkind joined #parrot
17:10 whiteknight joined #parrot
17:12 ligne joined #parrot
17:15 he joined #parrot
17:19 dodathome left #parrot
17:23 pbaker joined #parrot
17:34 ligne left #parrot
17:41 jsut_ joined #parrot
17:45 jsut left #parrot
17:47 cotto joined #parrot
18:07 jsut_ is now known as jsut
18:10 Eclesia what does this error mean : kernel/EriaCompiler.wx:16: Variable 'x364' is not defined near x364 ?
18:11 Eclesia full code : http://pastebin.com/696FaNcs
18:11 Eclesia I declared the var in the class and instanciate in the constructor
18:12 tcurtis_ Eclesia: you need a self. there.
18:13 Eclesia *damn* thanks
18:13 tcurtis_ Eclesia: and in the other places you access it.
18:13 tcurtis_ is now known as tcurtis
18:14 Eclesia I'm still not used to this 'self'. always believe, since I'm in the class I can access it directly
18:18 NotFound Eclesia: the advantage is that you don't need naming conventions to distinguish member vars from local vars ;)
18:20 Patterner left #parrot
18:20 whiteknight Eclesia: I've been thinking about your x364 stuff the other day. I definitely want to use it
18:21 whiteknight I want to colorize the output of my test harness
18:21 Eclesia whiteknight: if you add it in rosella under public domain it's yours
18:24 Eclesia if you need a header : http://unlicense.org/
18:26 * Eclesia also have tree and table outputs, but not yet translated to winxed
18:32 Eclesia ping ?
18:35 Eclesia left #parrot
18:35 Eclesia joined #parrot
18:36 rurban_ joined #parrot
18:39 whiteknight Eclesia: awesomeness
18:40 rurban left #parrot
18:40 rurban_ is now known as rurban
18:42 Eclesia what's the difference between:
18:42 Eclesia -L=s        ->  Add to parrot library search path
18:42 Eclesia -I=s        ->  Add to parrot include search path
18:42 Eclesia ?
18:42 whiteknight different mechanisms in IMCC
18:43 whiteknight include is a compile-time text transclusion
18:43 whiteknight libraries are things you load at runtime
18:43 whiteknight 99% of the time you want -L
18:44 Eclesia ok, so i use the -I to compile a .wx who needs other .wx
18:44 whiteknight no, winxed doesn't do text transclusion. Those options are passed through to parrot
18:44 whiteknight if you had a file of .pasm constants, you would use -I
18:44 whiteknight chances are, you do not
18:45 Eclesia WARNING: Checking: new unknown type <-- isn't this error a missing dependency ?
18:45 whiteknight I've never seen that warning before. that's coming out of winxed?
18:46 Eclesia whiteknight: yes
18:46 whiteknight (in other news, I might not be too helpful in debugging it )
18:47 Eclesia also have this one : WARNING: class Rosella.FileSystem.Directory not found at compile time
18:47 NotFound You may need -I if you use $include_const
18:47 whiteknight yeah, that's a warning that winxed generates because the type names aren't known at compile time
18:47 whiteknight because you're loading in Rosella at runtime
18:47 Eclesia I just have some : $load
18:48 whiteknight Eclesia: to make that go away, best thing is to use the --nowarn flag for winxed
18:48 Eclesia *hide what you dont want to see*
18:48 whiteknight I have a shell alias, so I don't even have to see the flag
18:48 whiteknight :)
18:48 NotFound Eclesia: you can declare the classes used.
18:49 theory joined #parrot
18:49 Eclesia how ?
18:49 NotFound namespace Rosella { namespace FileSystem { class Directory; } }
18:50 Eclesia it worked
18:50 NotFound The class statment without body is the declaration.
18:50 whiteknight I may have to make some more use of that in Rosella
18:51 whiteknight NotFound: is there any problem to do many forward declarations?
18:51 whiteknight or, many of the same in the same file?
18:51 NotFound whiteknight: I'm using them extensively in WinxedGtk examples and haven't had any problem yet.
18:51 whiteknight ok
18:52 * Eclesia likes the last word : 'yet'
18:52 NotFound Eclesia: I try no not make empty promises.
18:53 dodathome joined #parrot
18:54 Eclesia one warning remaining : WARNING: Checking: new unknown type
18:54 Eclesia NotFound: -I you said ?
18:54 NotFound Uppercase i
18:56 Eclesia NotFound: mustbe a file, or a relative path will do ?
18:57 NotFound Eclesia: maybe I'm confused... Do you asked about this? "<NotFound> You may need -I if you use $include_const"
18:57 Eclesia ho no sorry.
18:58 Eclesia I have this warning, but don't know what's the cause
18:58 bubaflub whiteknight: i use that in parrot-gmp to silence warnings in the test suite
18:59 NotFound Eclesia: if you are using just the class name you may want a ¡using namespace' statement together with the declarations: using namespace Rosella.Filesystem;
19:00 dalek parrot: 52da8ea | jkeenan++ | src/pmc/resizablepmcarray.pmc:
19:00 dalek parrot: [codingstd] Eliminate 2 instances trailing whitespace.
19:00 dalek parrot: review: https://github.com/parrot/parrot/commit/52da8ea10e
19:09 cotto trac is wacky again
19:10 cotto free space on the vm looks fine
19:10 atrodo is the "working" switch flipped on?
19:12 Eclesia is there a method to replace a charsequence by another in a string ?
19:12 cotto error log looks uninteresting
19:13 NotFound left #parrot
19:14 cotto what was the problem last time?
19:14 NotFound joined #parrot
19:20 bubaflub memory?
19:20 Patterner joined #parrot
19:21 cotto bubaflub, not sure.  It's not heavily loaded at all atm.  ac-town in #osuosl said it was acting up this morning.
19:21 bubaflub cotto: yeah, last night / this morning i couldn't log in or reset my password
19:22 Eclesia whiteknight: looks like a bug in rosella : http://pastebin.com/0QWYqZWP
19:24 cotto soh_cah_toa++ #"onoes! das bad!\n"
19:24 Eclesia NotFound: Is that allowed : self.targetFolder = "somePath"; self.targetFolder = new Rosella.FileSystem.Directory(self.targetFolder); ?
19:27 autark left #parrot
19:28 NotFound Eclesia: yes
19:30 whiteknight Eclesia: yes, probably a bug
19:31 whiteknight probably a stupid typo somewhere. I'll fix it tonight
19:34 dalek nqp: 959bb78 | pmichaud++ | tools/build/PARROT_REVISION:
19:34 dalek nqp: Bump PARROT_REVISION to get latest splice improvements.
19:34 dalek nqp: review: https://github.com/perl6/nqp/commit/959bb782e1
19:35 Eclesia whiteknight: what time is it for you ?
19:41 whiteknight Eclesia: about 3:40
19:41 whiteknight pm
19:42 whiteknight you?
19:42 Eclesia 21h 40
19:45 whiteknight http://phpneeds.orchestra.io/
19:45 whiteknight Eclesia: where do you live?
19:46 Eclesia whiteknight: france
19:47 whiteknight Eclesia: oh, awesome. I'm east coast USA
19:48 whiteknight So I'll probably have to fix that after you've gone to sleep
19:48 Eclesia whiteknight: glad to know you are not one of those who hate frenchs ^^
19:48 whiteknight Eclesia: far from it! I've had several friends from there over the years
19:48 whiteknight well, several internet-friends
19:49 cotto trac should back to normal now
19:51 Eclesia whiteknight: a new constructor File like this would be nice : function File(var directory, string name)  .   avoids a lot of string work and potential filesystem separator errors
19:52 bubaflub cotto: i'm getting a strange warning at the top of hte page after logging into trac: Can't synchronize with the repository (Couldn't open Subversion repository /var/lib/svn/parrot: SubversionException: ('Error opening db lockfile', 2)). Look in the Trac log for more information.
19:52 whiteknight Eclesia: yes, that makes good sense
19:52 bubaflub though i can now log in, cotto++
19:53 whiteknight Eclesia: You can do "var file = directory["filename"]"
19:53 whiteknight if you already have a Directory object
19:53 Eclesia strange writing
19:53 whiteknight bubaflub: they deleted the svn repo to make space on the VM
19:54 bubaflub ok.
19:54 whiteknight Eclesia: a directory is basically a hash. You can index into it by name
19:54 Eclesia whiteknight: what if the file for the given name doesn't exist ?
19:54 whiteknight Eclesia: good question. I don't remember. It might return null
19:54 whiteknight let me look
19:55 whiteknight Yes, returns null
19:56 whiteknight oh, I see. You want to autocreate a file in a directory
19:56 whiteknight I can add that
19:59 Eclesia whiteknight: I don't think it's a good idea to create it automaticly. having a null to indicate it doesn't exist is usefull. if you return a File object but the file does not really exist on disk it might be confusing
20:01 autark joined #parrot
20:02 whiteknight There is a File.exists() method
20:03 whiteknight I can do whatever you want. I don't have a clear use-case in mind
20:03 Eclesia don't say that or I'll ask you to make an xml api :)
20:04 Eclesia anyway, I prefer the first solution, a new constructor on File
20:04 mj41 joined #parrot
20:06 Eclesia another question (again) : where can I get the system path separator ?
20:07 * Eclesia see rosella always use '/' , might be a problem later
20:08 whiteknight I haven't added a system path separator global yet. the '/' is a problem
20:08 whiteknight I've been lazy
20:08 whiteknight Eclesia: do you have an account on github?
20:10 Eclesia whiteknight: no and I'm not that much friendly with git. I use mercurial most of the time
20:10 whiteknight Eclesia: Okay. Rosella has an issue tracker on github you can open requests on, if I'm not around
20:12 whiteknight I created issues for that bug and your requests
20:12 whiteknight that way I don't forget
20:13 Eclesia 8-)
20:14 zby_home joined #parrot
20:20 Eclesia and two last questions for today : how to replace a string sequence by another in a string ? and how to execute a command line ?
20:21 whiteknight I think there is a "replace" op for string replace. I need to hunt down the syntax for it
20:22 whiteknight There is a "spawnw" op to launch a new program. Rosella does that in the test harness and captures the standard output of the child. I think there is also a "system" op for doing commandline calls
20:23 cotto Is there any reason that FileHandle.readline_interactive returns PMCNULL on eof instead of STRINGNULL?
20:23 whiteknight cotto: so that we have a reason to create a ticket for it
20:23 sorear cotto: can it return STRINGNULL?
20:23 sorear how could it?
20:23 cotto sorear, I'm testing that now.
20:23 cotto We have the technology.
20:24 cotto make test looks ok
20:24 whiteknight Eclesia: I was wrong. No "system" op. Only "spawn"
20:24 cotto maybe it came from before STRINGNULL was a thing
20:24 whiteknight in PIR, its "$I0 = spawnw 'commandline'"
20:25 Eclesia ok
20:25 whiteknight Eclesia: and the replace opcode: https://github.com/parrot/parrot/b​lob/master/src/ops/string.ops#L236
20:25 cotto If it returns PMCNULL, pcc tries to convert it to a STRING and throws an exception when that's not possible.
20:25 whiteknight docs are tricky. I think you can read it better than I can explain it
20:25 cotto seen soh_cah_toa
20:25 aloha soh_cah_toa was last seen in #parrot 16 hours 46 mins ago saying "except now it does so i'll push it so you can see".
20:26 NotFound cotto: at one time I changed it, but got hard pressure to revert that change.
20:26 Eclesia whiteknight: that looks like a replace only for a char
20:26 cotto NotFound, really?  Why?
20:26 whiteknight basically, I think it's "var newstr = replace(oldstr, start, length, replacestr)
20:26 whiteknight Eclesia: no, it's strings. Parrot doesn't do operations on chars
20:26 whiteknight not usually
20:26 NotFound cotto: don't remember well, nqp or rakudo depending on the current behavior.
20:26 cotto sigh
20:27 whiteknight cotto: tell me about it.
20:30 Coke well, to be fair, it was probably "depending on it and not having a clean upgrade path." ;)
20:30 cotto testing now
20:32 contingencyplan joined #parrot
20:33 cottoo joined #parrot
20:33 cottoo something definitely killed my laptop
20:34 cotto left #parrot
20:34 cottoo need to investivate later
20:35 whiteknight cottoo: if my kid was anywhere near it, it was probably my kid
20:35 whiteknight otherwise, I have no idea
20:35 * Eclesia fight with the replace function
20:37 Eclesia too many positional arguments: 5 passed, 3 expected
20:37 Eclesia ath = path.replace(".ec",0,1,".pir");
20:38 Coke the "missing" 5th is probably self, ae?
20:39 Eclesia nope, path is knowned only in the function
20:40 cottoo left #parrot
20:40 Eclesia path = path.replace(".ec",".pir");
20:40 Eclesia too few positional arguments: 1 passed, 2 (or more) expected
20:40 Eclesia how did he jumped from 5 too 1 by removing two arguments ...
20:40 Eclesia to*
20:42 pjcj_ joined #parrot
20:44 whiteknight I've never used that function, I'll have to play with it tonight
20:45 whiteknight if path is a String PMC, there might be a replace method you are calling
20:45 whiteknight that might have different arguments
20:46 dukeleto can people log into trac again?
20:46 pjcj left #parrot
20:46 dukeleto the parrotvm ran out of inodes due to smolder, which doesn't even work right now. smolder--
20:47 dodathome left #parrot
20:47 bubaflub dukeleto: yep
20:48 soh_cah_toa joined #parrot
20:49 soh_cah_toa ~~
20:50 cottoo joined #parrot
20:50 cottoo is now known as cotto
20:51 sorear whiteknight: does PASM still have the stupid syntax restriction where subs are limited to 100 registers?
20:53 whiteknight sorear: I don't know if there are any restrictions like that in place now. I certainly never make functions that large
20:53 whiteknight I suspect not, but I don't know
20:53 whiteknight sorear: why, are you running up against a limit?
20:53 * PerlJam doesn't even remember the 100 register limit on subs
20:54 whiteknight There used to be a restriction like that on sub parameters
20:54 whiteknight I know that restriction is gone now and we have tests to prove it
20:55 sorear PerlJam: once upon a time, IIUC, subs had exactly 32 registers of each type, because that's how real CPUs work and nobody had thought critically about it yet
20:56 sorear PASM was designed to parse 2 digits after [INSP], because that was enough
20:56 sorear PIR supported more registers, and automatically handled spilling
20:56 whiteknight Yes, very old parrot used to have a fixed number of registers and mechanisms to spill
20:56 PerlJam oh, yes ... I remember the 32 register limit, but that's long been gone
20:56 tadzik where did the rest of the the data go?
20:56 sorear the 100 register limit is/was a syntactic vestige of the old order
20:56 PerlJam gotcha
20:57 tadzik oh, there is still set_lex and stuff
20:58 cotto testing rakudo now
20:58 pjcj_ is now known as pjcj
21:04 mj41 left #parrot
21:04 whiteknight sorear: What I think we are missing is a good register allocator that is going to be able to reuse slots when logical values reach end of life
21:05 tadzik store_lex / find_lex is the way to store data in Parrot? Pardon my newbie question, I never got to that layer
21:06 tadzik in the assemblies I'm more-less familiar with you usually use the stack
21:07 sorear whiteknight: putting a register allocator in an assembler makes no sense whatsoever
21:07 whiteknight sorear: right. PASM does not have a register allocator. PIR sort of does
21:07 whiteknight Because you can do $P99 and not have 99 registers
21:10 whiteknight We used to have a graph-coloring allocator, or at least the beginnings of one for PIR code.
21:10 masak joined #parrot
21:10 masak oh hai
21:10 whiteknight That got ripped out since it was perpetually broken, ran in something like O(N^7) time, and nobody knew how to make it work
21:10 masak I think it's too bad that the ncurses example doesn't work, as in http://trac.parrot.org/parrot/ticket/2130
21:11 whiteknight also, it was in IMCC, and we like to rip things out of IMCC
21:11 benabik POST has a register allocator.
21:11 benabik Well, newPOST.
21:12 cotto only one spectest failed, so that looks promising
21:12 ambs left #parrot
21:13 Eclesia NotFound: string concatenation with + still not working ?
21:21 cotto lua looks fine
21:22 NotFound_b joined #parrot
21:23 NotFound_b Eclesia: string contanation works when both arguments are string. If not, you must coerce to string.
21:23 Eclesia coerce ?
21:24 NotFound_b string(something)
21:24 masak left #parrot
21:25 Eclesia NotFound : if I have two different strings it works. but if I try :  n = n + p;  (n and p being strings) it writes 0
21:26 Eclesia NotFound_b: ↑
21:26 NotFound_b Eclesia: it must be string type, doesn't work with a var that contains a String pmc.
21:26 cotto NotFound_b, did you file a ticket about the readline_interactive change?  If that change was previously rejected, I'd like to dig in and find out why.
21:26 NotFound_b cotto: let me look...
21:28 NotFound_b cotto: TT #760
21:28 whiteknight left #parrot
21:28 cotto NotFound_b, thanks
21:28 cotto partcl passes too
21:29 cotto anyone recall when STRINGNULL was added?
21:31 NotFound_b cotto: it doesn't matter, the problem was the same with (STRING*)NULL
21:31 cotto will need to dig in later after this talk
21:32 wagle left #parrot
21:41 Eclesia string compileCommand = "parrot -o " + pbcFilePath + " " + pirFilePath; spawnw(compileCommand); <-- not working :(
21:41 Eclesia no errors but doesn't work
21:41 Psyche^ joined #parrot
21:43 Eclesia left #parrot
21:46 Patterner left #parrot
21:46 Psyche^ is now known as Patterner
21:46 perlite_ joined #parrot
21:49 hercynium left #parrot
21:50 perlite left #parrot
21:50 perlite_ is now known as perlite
22:18 soh_cah_toa cotto: i have a question. i need a .pbc file for the ipc test but when i try to add it to the staging area i get: "The following paths are ignored by one of your .gitignore files: t/tools/hbdb_t2.pbc". what do i do about this?
22:22 cotto left #parrot
22:23 plobsing soh_cah_toa: can you generate the .pbc from a PIR in the build stage somewhere? we've had numerous headaches in the past with PBC checked in to the repo.
22:24 soh_cah_toa that's what i'm looking to do now. trying to figure it out
22:25 plobsing better yet, have your test setup and tear-down a temp file
22:25 plobsing I think we have some tests that do that already, although I cannot recall which ones
22:29 NotFound_b test_prep target
22:30 NotFound_b pbctestfiles:
22:32 * soh_cah_toa looks
22:32 NotFound_b Line 2048 in config/gen/makefiles/root.in
22:33 soh_cah_toa there's no .pbc files in t/perl/testlib though
22:38 wagle joined #parrot
22:38 cotto joined #parrot
22:38 NotFound_b soh_cah_toa: What problem do you have with that?
22:38 cotto ohai
22:40 soh_cah_toa NotFound_b: well, i need one
22:40 soh_cah_toa or atleast figure out how to generate one
22:40 soh_cah_toa temporarily
22:41 NotFound_b One file in t/perl/testlib ?
22:41 cotto soh_cah_toa, the best solution would be to make a directory specifically for test data
22:41 cotto something like t/hbdb/data (assuming t/hbdb exists)
22:41 soh_cah_toa ok
22:41 cotto actually, yes, generating it would be better
22:42 cotto pbc still changes, so generating it at test time would be save you the headache of doing so manually
22:42 soh_cah_toa yeah, i don't know how though
22:42 NotFound_b I think using the existing convention of 'testlib' will be better.
22:43 soh_cah_toa NotFound_b: i was gonna do that anyway
22:43 cotto `./parrot -o t/foo/buz.pbc t/foo/buz.pir`
22:43 cotto You don't need to try to be clever by generating it using the api.
22:44 soh_cah_toa oh yeah, i know that. i thought i saw some tempfile method in a perl module somewhere though
22:44 cotto ah
22:44 NotFound_b Just add it to root.in following what the other targets in pbctestfiles do.
22:44 cotto talk time
22:47 soh_cah_toa ok
22:47 NotFound_b soh_cah_toa: I think that compiling the file during the test makes sense only if you are testing the compilation itself. If you are just using the file, let the build process take care,
22:48 soh_cah_toa NotFound_b: yes, eventually i do want to test that b/c i'd really like hbdb to be given a .pir file instead and just compile it
22:49 soh_cah_toa NotFound_b: but for this test, you're right
22:50 GodFather joined #parrot
22:50 whiteknight joined #parrot
22:50 GodFather left #parrot
22:50 jnthn__ Is there something more than make that I have to do if I update ops?
22:51 NotFound_b soh_cah_toa: for the .pir test you can add other file in the same directory without adding a rule to make it. Or just use the same file for both tests.
22:51 soh_cah_toa right
22:51 NotFound_b jnthn__: make bootstrap-ops
22:54 GodFather joined #parrot
22:54 GodFather left #parrot
22:56 jnthn__ NotFound_b: thanks
22:56 kid51 joined #parrot
23:15 NotFound_b left #parrot
23:32 kid51 is now known as kid51_at_dinner
23:44 jnthn__ Are ops numbered/ordered in any way now? I'm getting a weird issue after adding some new ones where pbc_to_exe seems to get compiled with wrong op numbers in it :/
23:47 cotto adding an op will invalidate existing pbc
23:47 cotto yes
23:47 bacek_at_work jnthn__, "make bootstrap-ops"
23:47 cotto also, reconfig && world
23:48 dmalcolm left #parrot
23:48 zby_home_ joined #parrot
23:49 jnthn__ bacek_at_work: I did...it looks like existing PBCs, as cotto said.
23:50 jnthn__ cotto: Seems I have non-PMC lexicals about working. :)
23:51 zby_home left #parrot
23:51 cotto jnthn__, nice
23:51 whiteknight jnthn__: in parrot?
23:51 daniel-s joined #parrot
23:52 jnthn__ whiteknight: Yes.
23:52 whiteknight jnthn__++
23:53 jnthn__ pmichaud++ prodded me into having a crack at natively typed lexicals in Rakudo :)
23:53 cotto apparently chromatic++ had a patch for that 18 months ago.
23:53 jnthn__ Yes, it was leftover lexicals.
23:53 jnthn__ gah
23:53 jnthn__ leftover *PBCs*
23:53 * jnthn__ is exhausted from two days teaching in another city :)
23:58 jnthn__ OK, time for rest.
23:58 jnthn__ I sort out the tests tomorrow.
23:59 jnthn__ sleep &

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced