Parrot 3.5.0 "Menelaus" released | parrot.org | Log: irclog.perlgeek.de/parrot/today
Set by moderator on 21 June 2011.
00:02 jsut_ joined 00:03 bubaflub left 00:07 jsut left 00:17 cotto joined
dalek rrot: a8ff342 | Whiteknight++ | / (4 files):
Merge branch 'whiteknight/kill_CALLIN'
00:18
rrot/whiteknight/remove_hash_macros: 66ba12e | Whiteknight++ | include/parrot/hash.h:
Remove old hash macros
00:23
00:36 cotto left 00:40 cotto joined
whiteknight jnthn__: ping 00:40
cotto hio whiteknight 00:41
whiteknight hello cotto
cotto: I'm starting to do a lot of thinking vis. NameSpaces and Classes
I'm staring at the code right now, and want to kill it with a hammer
cotto I can think about things that aren't my talk now. It's nice. 00:42
whiteknight sounds nice
did you give your talk?
cotto yup
whiteknight how did it go?
cotto small turnout, but not bad 00:43
time to find out if my recording is any good
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?
whiteknight oh, I have a commit coming up that is going to make a few people smile
cotto soh_cah_toa, yes 00:46
whiteknight I need to reconfig and rebuild because I love t/src/checkdepend.t SO MUCH
cotto Nice. I can hear pretty much anything in the room. This bodes well. 00:47
00:48 particle left
dalek rrot: c83d493 | Whiteknight++ | / (2 files):
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
whiteknight I've got two methods that we can deprecate and kill with a stick 00:50
00:50 particle joined
whiteknight I want to start working towards decoupling NameSpace and Class 00:51
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
cotto It's like listening to myself in a smelly mirror.
whiteknight The user can choose to store the Class in the NameSpace if they want, but Parrot shouldn't do that by default
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
of course, maybe the user should be in charge of that too
So Parrot wouldn't have a new_p_s opcode anymore, only new_p_p 00:53
you would need to use the Class object to create an instance of that class
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?
whiteknight, what's your motivation for wanting to decouple those? 00:55
whiteknight I didn't test Rakudo but I can't imagine it breaks anything 00:56
they don't use our NameSpace PMCs for anything
cotto not likely
whiteknight for the speed improvements in startup time, it's worth it 00:57
cotto That's a very clear win.
What brought those to your attention?
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
some of the ugliest, most fragile and buggy code in all of parrot lives in oo.c now
cotto heads to the os bridge speaker's party 01:04
01:10 cotto left
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:15
yeah, i don't think there is. that's so lame 01:18
01:21 woosley joined 01:30 bubaflub joined
bubaflub ~ 01:30
whiteknight soh_cah_toa: I've been adding things to the embedding API as needed 01:31
ask, and ye shall receive
or, put together a patch to add it your own damn self :)
soh_cah_toa i was just thinking about opening a ticket 01:32
whiteknight that works too
soh_cah_toa but i'm working in a different branch and don't want to merge yet
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?
whiteknight yes 01:33
01:33 dmalcolm left
soh_cah_toa ok 01:33
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:34
whiteknight the embedding API is purposefully kept minimal 01:35
the best way to interact with Parrot is to generate and execute PBC
the embedding API lets you get to that point. PBC has access to all parrot capabilities
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
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:38
01:51 particle1 joined
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:51
soh_cah_toa i understand 01:52
01:53 whiteknight left, whiteknight joined
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 01:55 particle left
bubaflub NotFound: hey, got a moment? i'm running into a weird problem 02:15
*a weird Winxed problem 02:16
02:29 AzureSto_ left, eternaleye left, perlite left, dngor left, dngor joined, eternaleye joined, perlite joined, AzureStone joined, losinggeneration left, TiMBuS left, losinggeneration joined, contingencyplan left, jjore left, TiMBuS joined 02:30 jjore joined 02:35 rurban_ joined 02:37 rurban left, rurban_ is now known as rurban
dalek rrot: 247bde0 | bubaflub++ | docs/pdds/draft/pdd16_native_call.pod:
add section about deprecated NCI symbols
02:50
lrskate: 405625f | tcurtis++ | src/LALR/DPDA (3 files):
Add methods for testing adequacy.
lrskate: bb5ee93 | tcurtis++ | src/LALR/DPDA.winxed:
Make adeqacy tests actually compile.
lrskate: 8a25278 | tcurtis++ | src/LALR/Generator/BuildCFSM.winxed:
Add a brief descirption of the purpose of build_CFSM.
02:51
lrskate: d13860e | tcurtis++ | src/LALR/Generator/BuildNonterminalTransitionTable.winxed:
Implement nonterminal-transition table generation.
lrskate: 3c8b4b5 | tcurtis++ | s (2 files):
Implement the building of the sets of "p-states" for each production.
mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_5_0-16-gc83d493
Ubuntu 11.04 i386 (g++)
dalek rrot: 7daf22c | bubaflub++ | .gitignore:
update gitignore after TT #2134 - pbc_disassemble now lives under frontend
02:54
soh_cah_toa bubaflub: nice catch. i forgot about that
bubaflub soh_cah_toa: no prob, quick fix. 02:56
plobsing: if you're around i've got another NCI question. 03:05
dalek rrot: a3f1145 | mikehh++ | MANIFEST.SKIP:
re-generate MANIFEST.SKIP
03:06
03:08 cotto joined
cotto soh_cah_toa, you can safely merge your branch with master without messing anything in master up. 03:13
soh_cah_toa cotto: ok. are you referring to what i said earlier about the string comparison thing? 03:15
cotto yes
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:16
cotto How nice. I finally have a minute to look at the ipc script. 03:17
soh_cah_toa good b/c it's acting up 03:18
let me push first, i might have updated it
cotto deal
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:21
i discovered that this was because on eof, an exception was being thrown so execution never reached the next line 03:22
i circumvented this by checking the "is_error" string value to the "Null PMC blah blah blah" message in fail() and then exiting quitely
however, when i added that, the ipc output acts differently. i'll show you
cotto ok
dalek rrot/soh-cah-toa/hbdb: 1687f97 | soh_cah_toa++ | / (4 files):
Fixed (sort of) the EOF issue
03:26
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
and it stopped doing this but some things were printing out of order. i don't know why i stopped though
oh and you'll need a file called "hello.pbc". that's just a temporary thing for on my machine 03:30
03:31 contingencyplan joined
cotto I just happen to have one. 03:32
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:34
but if i send eof by closing the file handle, then execution reaches the fail() function in frontend/hbdb/main.c 03:35
i didn't add that code in the commit though. it's just a stub 03:36
oh, i had waitpid() commented 03:37
now i get the message about an undefined command 03:38
cotto that sounds promising
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.
soh_cah_toa except now it does so i'll push it so you can see
03:39 theory joined
dalek rrot/soh-cah-toa/hbdb: 1e6a0e1 | soh_cah_toa++ | / (2 files):
Uncommented call to waitpid() so ipc.pl acts a little nicer
03:43
plobsing bubaflub: still around? 03:44
bubaflub plobsing: yep.
plobsing: i'm working on trac.parrot.org/parrot/ticket/2130
basically, our ncurses library binding has 2,3,4 and t in it
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
mikehh All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_5_0-19-ga3f1145
Ubuntu 11.04 i386 (g++ --optimize)
plobsing bubaflub: url?
bubaflub plobsing: gist.github.com/1041865 03:47
plobsing: also, what should i do about the 't' parameters? can i just use NCI::Utils?
plobsing bubaflub: that is probably the easiest solution 03:48
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?
plobsing yes 03:51
bubaflub plobsing: would existing code just work with just 'p' type?
plobsing no
bubaflub plobsing: ah, would it work with the stuff in the .pir?
plobsing bubaflub: mostly
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)
bubaflub: that's a good question
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
unfortunately, it didn't get the upgrade it needs to handle the new signatures 03:54
fixing it falls way out of the scope of what you're doing, but would be nice long-term
bubaflub plobsing: is it upgradable? i thought without a 2, 3, or 4 it won't know what to generate
plobsing: i think it's a worthy long-term goal
plobsing bubaflub: it is upgradable. it needs to start generating code similar to what you've patched up 03:55
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:56
plobsing bubaflub: no. in stead support new syntax to represent call-by-reference parameters. this is what nci_thunk_gen did. 03:57
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.
eg: ptr (ptr, int, ptr&, int&, ptr) 03:58
bubaflub ah, so instead of just being ppipip
that's what the spaces are for. got it.
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.
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:00
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]
)
that is, in my opinion, easier to read
bubaflub plobsing: good to know.
plobsing: agreed.
plobsing at least until the lines get too long
bubaflub plobsing: if you don't mind giving my scripts / patches a once over, i don't mind writing them. 04:02
dalek rrot/soh-cah-toa/hbdb: 199bb25 | soh_cah_toa++ | ipc. (2 files):
Renamed ipc.pl because now it's almost a test file
04:03 cotto left
plobsing I'm more than happy to increase the bus number on this system 04:05
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:09
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?
plobsing sure 04:12
but I'd like to come back to a point I made earlier about "mostly working"
the old call-by-ref convention and new call-by-ref convention are very similar, but not equivalent 04:13
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.
bubaflub i follow you up to the multi-return - the item is not modified in place? 04:15
plobsing nope 04:16
PCC doesn't have a notion of call-by-reference
so foo($I0) *can't* modify $I0
the old convention circumvented that by mandating the use of wrapper PMCs
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
so we could get not only whatever the C function actually returns, but also whatever got modified 04:18
(unless we flatten it all to a 'p', pass it a StructView with a single datatype in there... but that's a bit ugly)
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
I'm having trouble understanding your "takes a pointer" statement
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
also, is PDD03 (the calling conventions) up to date? looks like i need to do some reading...
plobsing bubaflub: we could do that. alternatively we could do an old->new wrapping
$I0 = $P0; (retv, $I0) = foo($I0); $P0 = $I0 04:22
this has less GC churn
also, StructView is only the representation object. The objects obtained from allocation are pointers (of the PtrObj variety). 04:24
bubaflub you get that from StructView.alloc(), right? 04:25
plobsing yes
bubaflub so Parrot handles the boxing from I <-> P correctly? that'd be pretty straightforward
plobsing that's not exactly what's happening 04:26
but the end result is still correct
it isn't boxing, but rather a setter/getter, which is the responsibility of the PMC to implement sanely
that's how the old call-by-ref convention worked as well 04:27
bubaflub ok
just to make sure i understand - let's say we have an old NCI def of a function like i func_name p 3
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
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
yes, we can wrap the NCI or modify the user code
bubaflub ok - so wrapping the NCI code would probably be the most transparent for existing code, future code can do either
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
for NCI functions that don't have any pointers, it would just be a single function call.
plobsing that sounds decent
bubaflub ok, i think i'm getting a good idea of what this script should look like. 04:31
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?
plobsing I have no strong feelings one way or the other 04:33
bubaflub ok, great. i need to head to bed for tonight, but i'll be pestering you in the near future about this. 04:34
04:41 cotto joined 05:06 TiMBuS left, TiMBuS joined 05:12 soh_cah_toa left 05:15 szabgab joined 05:16 estrabd left 06:25 jsut_ left 06:28 UltraDM joined 06:36 theory left 06:56 Eclesia joined 07:08 mj41 joined 07:42 SHODAN joined 07:51 simcop2387 left, simcop2387 joined 07:53 dngor left 07:57 dngor joined 08:01 slavorgn left 09:08 daniel-s joined 09:20 woosley left 09:56 Drossel joined 09:59 Kulag left 10:36 rurban_ joined 10:40 rurban left, rurban_ is now known as rurban 10:49 Drossel left, Kulag joined 11:19 mtk left, mtk joined 11:20 mtk left, mtk joined
atrodo =~ 11:47
12:09 whiteknight joined 12:15 woosley joined 12:16 woosley left
Eclesia is it possible from winxed to write some code which could be written directly as a pbc ? 12:19
I mean If I have a string, which is actually the content of a pir file. could I compile it to pbc ? 12:21
12:22 ambs joined
moritz Eclesia: IMCC can compiler PIR to PBC 12:25
Eclesia: I think whiteknight++ gave IMCC an API that you can use for that
Eclesia imcc ? 12:26
tadzik intermediate code compiler, I think
whiteknight IMCC is the current PIR compiler
Eclesia nice
so whiteknight, you made an api in rosella for this ?
whiteknight Eclesia: You can use the compreg op to get a reference to it
no, this is all part of parrot
in PIR, you can do "$P0 = compreg 'PIR'" 12:27
that gets you the compiler object. Then you would invoke it: "$P1 = $P0.compile_string($S0)"
that gives you a packfile PMC
Eclesia whiteknight: this compreg is a specific namespace ? 12:28
is in*
whiteknight it's an opcode, built in to parrot
Eclesia ok 12:29
whiteknight Compilers typically register themselves with Parrot, and then you can get access to them at runtime
Eclesia I suppose just like chr, compreg will be available in winxed
whiteknight For instance, winxed registers itself, so you can get a reference to it too 12:30
$P0 = compreg 'Winxed'
(after you've loaded Winxed in, of course)
actually, for the PIR compiler object, you probably want to do $P1 = $P0($S0) 12:31
compile_string method might not be stable and usable yet
Eclesia I'll give it a try this evening 12:34
whiteknight okay, let me know if you have any questions 12:44
I probably need to start working on that compiler object to embetter it
atrodo whiteknight> You might get some help with that next week 12:46
whiteknight is that you volunteering?
because I loves me some help
atrodo if I end up blocking (or dislike) on it, yes 12:47
wow, that sentence sounds a lot better in my head
whiteknight right now I think the compile_string method returns a PtrObj pmc over a packfile struct, so that needs to be improved
there's no real way to work with it from PIR
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
Eclesia whiteknight: is there an xml api in rosella ? 12:50
whiteknight no, not yet
I've thought about it, but haven't gotten around to it
Parrot has a JSON compiler, but no XML functionality 12:51
I wasn't sure whether we wanted to brew our own, or wrap an existing solution
Eclesia strange choice. making json before xml
moritz json is far simpler
whiteknight far simpler. And usually easier to read. At least, in my opinion
atrodo i much prefer json over xml 12:52
Eclesia prefer xml, dont like having to much {} everywhere 12:53
whiteknight XML is definitely the standard in Java or .NET lands 12:55
12:55 slavorgn joined, SHODAN left
whiteknight dynamic languages like javascript, perl, and python seem to prefer using json or yaml or stuff like that 12:56
and since many of our libraries were written by perl hackers...
12:57 jsut joined
moritz XML is a great markup language, but often abused as serialization or data exchange format 12:58
so comparing it to JSON
is already a mistake
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. ;)
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
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.
(not me!)
whiteknight Coke: I've run out of plate space. I'm piling food up on the floor 13:03
Eclesia I'm also searching for winxed examples to work with in/out streams. if someone have some 13:08
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
so var stdout = getstdin();
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
whiteknight for file streams you can do things like "var fh = new 'FileHandle'; fh.open(<filename>, "r"); fh.write(<text>);" 13:12
er, that should have been "r"
er "w"
stupid fingers this morning
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
maybe
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
bubaflub whiteknight: hm. maybe it's a temporary thing. 13:15
whiteknight maybe
14:16 Kulag left, Kulag joined
NotFound In winxed you can use the builtin load_language, it does both load_language and compreg, 14:23
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:27
bubaflub NotFound: do you have a moment? i'm running into a strange Winxed problem. 14:28
14:29 estrabd joined
whiteknight Eclesia: like metaprogramming? Writing code that writes code? 14:30
NotFound bubaflub: sure 14:31
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
bubaflub NotFound: i think there is something that i haven't deleted - any ideas?
atrodo whiteknight> 'round these parts, we call that magic
whiteknight atrodo: We don't take kindly to metaprogramming and other sorcery 'round these 'ere parts 14:33
atrodo whiteknight++ exactly
NotFound bubaflub: probably the directory that plumage uses to downlaod and build. Usually ~/.parrot/plumage
bubaflub NotFound: ok, so should i nuke everything again?
atrodo sometimes feels like he's in the south when he's clearly in yankee territory
Eclesia whiteknight: metaprogramming is bad ? 14:34
whiteknight Eclesia: no, we're just joking around. It's good
NotFound bubaflub: yes, the easier way is to delete it completely and reinstall plumage
whiteknight I end up creating a lot of classes in Rosella, especially the Proxy library
Eclesia whiteknight: *afraid for a second* it's actually a big part in my project ^^
whiteknight Eclesia: Classes are objects, so you can make a new class the normal way "$P0 = new ['Class']", etc 14:35
14:36 hercynium joined
Eclesia I believe there are no winxed example for such things right ? 14:36
whiteknight github.com/Whiteknight/Rosella/blo...ory.winxed
Line 90, the "create_proxy_class_internal" function
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
Class has a lot of methods on it, add_method, add_vtable_override, add_attribute, etc
Eclesia perfect, exactly what I wanted
and when I want to write this in a pbc at the end ?
whiteknight If you're not totally against reading C code, the source for class is here: github.com/parrot/parrot/blob/mast.../class.pmc
Everything marked with "METHOD" is a method you can call from Winxed/PIR 14:38
Eclesia: that's a little bit harder, I think
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
bacek or plobsing probably know a lot more about it than I do 14:39
Eclesia and no docs
whiteknight of course
Eclesia *hard to work with parrot*
whiteknight Maybe I'll have to try writing some
Eclesia: we're working on it!
Eclesia I'm still here, means I accepted the challenge ^^ 14:40
NotFound The current best way is to write to files and call command line tools. Eats less memory that way. 14:41
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
so that's a huge omission
it looks like PackFileDirectory has a set_pointer vtable, but PackFile does not 14:43
bubaflub NotFound: still no go. i removed plumage and re-installed but still getting the "Incompatible versions" error. any other ideas? 14:45
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
that would be a big help
14:47 estrabd left
NotFound bubaflub: What command gives you that message? 14:47
bubaflub NotFound: ah, found the problem. had old .pbc files sitting around 14:48
NotFound bubaflub: uh... then that message needs improvement, it should provide more information. 14:49
bubaflub: BTW, now is better to not install winxed, using the one bundled with parrot instead. 14:50
bubaflub NotFound: ok. 14:51
whiteknight we need to remove winxed from plumage, if it isn't removed already 14:52
bubaflub whiteknight: it says it's still there. 14:53
whiteknight: also, will the rosella harness automatically use the winxed that comes with parrot?
whiteknight yes
bubaflub whiteknight: great. ok, i'm uninstalling winxed and going to use the bundled one instead 14:54
NotFound Yes, I think instllaing it from plumage now can be confusing. 14:55
To play with the bootstrap or look at the examples, installing from the repo is easier. 14:57
bubaflub: care with the uninstall, the directories used for the pbc and binaries are the same. 14:59
So uninstall from plumage can delete the bundled files.
pmichaud gist.github.com/1042691 # patch to improve the speed of RPA splice 15:01
this improves the speed of repeated insertions and deletions into an RPA (which rakudo does for its list processing) by about 90%
whiteknight pmichaud: people actually use splice? 15:02
...okay, question answered
apply it
pmichaud rakudo does, yes.
I didn't realize just how slow the older version was until doing some benchmarking late last night 15:03
gist.github.com/1042698 # simple splice benchmark program
without the patch, that program takes 11.5 seconds on my system; with the patch it takes <1.0 sec 15:04
whiteknight wowzers 15:05
pmichaud: just to double-check, does Rakudo use NameSpaces, or custom subclasses of NameSpace for anything?
pmichaud rakudo master does, yes.
whiteknight regular NameSpace, or subclasses?
pmichaud regular NameSpace. We haven't ever subclassed NameSpace, afaik. 15:06
I don't think we'll be using NameSpace at all in nom, and eventually not in nqp either.
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
pmichaud oooh, nice.
whiteknight I did some testing last night, wanted to make sure it didn't hurt Rakudo
pmichaud it shouldn't. 15:07
whiteknight er, not startup time. It was coretest time
which is highly related to startup time, but not the same
NotFound I think there are unresolved problems on the way to HLLmap Namespace.
cotto ~~
whiteknight NotFound: I'm sure there are are problems. The whole system is borked
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
at least, for some workloads
Eclesia when will we have parrot faster then c ? 15:12
NotFound Eclesia: I don't belive in the "faster than C" propaganda of any virtual machine. 15:14
15:15 theory joined
plobsing Eclesia: it already is. you just need to write suitably slow C code. 15:15
Eclesia was just joking
dalek rrot: f12d120 | pmichaud++ | src/pmc/resizablepmcarray.pmc:
[pmc]: Patch to ResizablePMCArray.splice to improve its performance for shifts and insertions by over 90%.
dukeleto that is quite nice, pmichaud++ 15:16
15:16 JimmyZ joined
NotFound winxedxx is as fast as C in some code. 15:16
You just need to use only int and avoid function calls. 15:17
"just" X-) 15:18
atrodo NotFound> Seems legit to me! 15:19
cotto pmichaud++ 15:20
NotFound atrodo: yes, but not very useful.
atrodo Well, my desktop cpu only works with bits and it's fast. Good enough evidence for me! 15:21
Eclesia expect one day, we will have quantic computers. bits will become an obsolete concept 15:23
NotFound Maybe some day we'll compute with twits. 15:24
whiteknight arguably, microsoft is already doing that
bah-dum-ch
tadzik ba-dum-tss! 15:26
15:31 contingencyplan left 15:33 mj41 left 15:37 UltraDM left 15:39 Kulag left 15:45 Kulag joined 15:46 daniel-s left 15:47 theory left 15:48 cotto left 15:51 mtk left 15:52 mtk joined 16:06 Eclesia left 16:30 JimmyZ left 16:32 whiteknight left 16:35 dmalcolm joined 16:50 Eclesia joined 16:51 dodathome joined 16:56 lichtkind joined 17:10 whiteknight joined 17:12 ligne joined 17:15 he joined 17:19 dodathome left 17:23 pbaker joined 17:34 ligne left 17:41 jsut_ joined 17:45 jsut left 17:47 cotto joined 18:07 jsut_ is now known as jsut
Eclesia what does this error mean : kernel/EriaCompiler.wx:16: Variable 'x364' is not defined near x364 ? 18:10
full code : pastebin.com/696FaNcs 18:11
I declared the var in the class and instanciate in the constructor
tcurtis_ Eclesia: you need a self. there. 18:12
Eclesia *damn* thanks 18:13
tcurtis_ Eclesia: and in the other places you access it.
18:13 tcurtis_ is now known as tcurtis
Eclesia I'm still not used to this 'self'. always believe, since I'm in the class I can access it directly 18:14
NotFound Eclesia: the advantage is that you don't need naming conventions to distinguish member vars from local vars ;) 18:18
18:20 Patterner left
whiteknight Eclesia: I've been thinking about your x364 stuff the other day. I definitely want to use it 18:20
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
if you need a header : unlicense.org/ 18:24
Eclesia also have tree and table outputs, but not yet translated to winxed 18:26
ping ? 18:32
18:35 Eclesia left, Eclesia joined 18:36 rurban_ joined
whiteknight Eclesia: awesomeness 18:39
18:40 rurban left, rurban_ is now known as rurban
Eclesia what's the difference between: 18:42
-L=s -> Add to parrot library search path
-I=s -> Add to parrot include search path
?
whiteknight different mechanisms in IMCC
include is a compile-time text transclusion 18:43
libraries are things you load at runtime
99% of the time you want -L
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
if you had a file of .pasm constants, you would use -I
chances are, you do not
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?
Eclesia whiteknight: yes 18:46
whiteknight (in other news, I might not be too helpful in debugging it )
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
whiteknight yeah, that's a warning that winxed generates because the type names aren't known at compile time
because you're loading in Rosella at runtime
Eclesia I just have some : $load
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*
whiteknight I have a shell alias, so I don't even have to see the flag
:)
NotFound Eclesia: you can declare the classes used.
18:49 theory joined
Eclesia how ? 18:49
NotFound namespace Rosella { namespace FileSystem { class Directory; } }
Eclesia it worked 18:50
NotFound The class statment without body is the declaration.
whiteknight I may have to make some more use of that in Rosella
NotFound: is there any problem to do many forward declarations? 18:51
or, many of the same in the same file?
NotFound whiteknight: I'm using them extensively in WinxedGtk examples and haven't had any problem yet.
whiteknight ok
Eclesia likes the last word : 'yet' 18:52
NotFound Eclesia: I try no not make empty promises.
18:53 dodathome joined
Eclesia one warning remaining : WARNING: Checking: new unknown type 18:54
NotFound: -I you said ?
NotFound Uppercase i
Eclesia NotFound: mustbe a file, or a relative path will do ? 18:56
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.
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
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; 18:59
dalek rrot: 52da8ea | jkeenan++ | src/pmc/resizablepmcarray.pmc:
[codingstd] Eliminate 2 instances trailing whitespace.
19:00
cotto trac is wacky again 19:09
free space on the vm looks fine 19:10
atrodo is the "working" switch flipped on?
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
cotto what was the problem last time? 19:14
19:14 NotFound joined
bubaflub memory? 19:20
19:20 Patterner joined
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
Eclesia whiteknight: looks like a bug in rosella : pastebin.com/0QWYqZWP 19:22
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
NotFound Eclesia: yes 19:28
whiteknight Eclesia: yes, probably a bug 19:30
probably a stupid typo somewhere. I'll fix it tonight 19:31
dalek p: 959bb78 | pmichaud++ | tools/build/PARROT_REVISION:
Bump PARROT_REVISION to get latest splice improvements.
19:34
Eclesia whiteknight: what time is it for you ? 19:35
whiteknight Eclesia: about 3:40 19:41
pm
you? 19:42
Eclesia 21h 40
whiteknight phpneeds.orchestra.io/ 19:45
Eclesia: where do you live?
Eclesia whiteknight: france 19:46
whiteknight Eclesia: oh, awesome. I'm east coast USA 19:47
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 ^^
whiteknight Eclesia: far from it! I've had several friends from there over the years
well, several internet-friends
cotto trac should back to normal now 19:49
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:51
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
bubaflub though i can now log in, cotto++
whiteknight Eclesia: You can do "var file = directory["filename"]" 19:53
if you already have a Directory object
Eclesia strange writing
whiteknight bubaflub: they deleted the svn repo to make space on the VM
bubaflub ok. 19:54
whiteknight Eclesia: a directory is basically a hash. You can index into it by name
Eclesia whiteknight: what if the file for the given name doesn't exist ?
whiteknight Eclesia: good question. I don't remember. It might return null
let me look
Yes, returns null 19:55
oh, I see. You want to autocreate a file in a directory 19:56
I can add that
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 19:59
20:01 autark joined
whiteknight There is a File.exists() method 20:02
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 :)
anyway, I prefer the first solution, a new constructor on File 20:04
20:04 mj41 joined
Eclesia another question (again) : where can I get the system path separator ? 20:06
Eclesia see rosella always use '/' , might be a problem later 20:07
whiteknight I haven't added a system path separator global yet. the '/' is a problem 20:08
I've been lazy
Eclesia: do you have an account on github?
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
I created issues for that bug and your requests 20:12
that way I don't forget
Eclesia 8-) 20:13
20:14 zby_home joined
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:20
whiteknight I think there is a "replace" op for string replace. I need to hunt down the syntax for it 20:21
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:22
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
sorear cotto: can it return STRINGNULL?
how could it?
cotto sorear, I'm testing that now.
We have the technology.
make test looks ok 20:24
whiteknight Eclesia: I was wrong. No "system" op. Only "spawn"
cotto maybe it came from before STRINGNULL was a thing
whiteknight in PIR, its "$I0 = spawnw 'commandline'"
Eclesia ok 20:25
whiteknight Eclesia: and the replace opcode: github.com/parrot/parrot/blob/mast...g.ops#L236
cotto If it returns PMCNULL, pcc tries to convert it to a STRING and throws an exception when that's not possible.
whiteknight docs are tricky. I think you can read it better than I can explain it
cotto seen soh_cah_toa
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".
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
cotto NotFound, really? Why?
whiteknight basically, I think it's "var newstr = replace(oldstr, start, length, replacestr)
Eclesia: no, it's strings. Parrot doesn't do operations on chars
not usually
NotFound cotto: don't remember well, nqp or rakudo depending on the current behavior.
cotto sigh
whiteknight cotto: tell me about it. 20:27
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 20:33 cottoo joined
cottoo something definitely killed my laptop 20:33
20:34 cotto left
cottoo need to investivate later 20:34
whiteknight cottoo: if my kid was anywhere near it, it was probably my kid 20:35
otherwise, I have no idea
Eclesia fight with the replace function
too many positional arguments: 5 passed, 3 expected 20:37
ath = path.replace(".ec",0,1,".pir");
Coke the "missing" 5th is probably self, ae? 20:38
Eclesia nope, path is knowned only in the function 20:39
20:40 cottoo left
Eclesia path = path.replace(".ec",".pir"); 20:40
too few positional arguments: 1 passed, 2 (or more) expected
how did he jumped from 5 too 1 by removing two arguments ...
to*
20:42 pjcj_ joined
whiteknight I've never used that function, I'll have to play with it tonight 20:44
if path is a String PMC, there might be a replace method you are calling 20:45
that might have different arguments
dukeleto can people log into trac again? 20:46
20:46 pjcj left
dukeleto the parrotvm ran out of inodes due to smolder, which doesn't even work right now. smolder-- 20:46
20:47 dodathome left
bubaflub dukeleto: yep 20:47
20:48 soh_cah_toa joined
soh_cah_toa ~~ 20:49
20:50 cottoo joined, cottoo is now known as cotto
sorear whiteknight: does PASM still have the stupid syntax restriction where subs are limited to 100 registers? 20:51
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
I suspect not, but I don't know
sorear: why, are you running up against a limit?
PerlJam doesn't even remember the 100 register limit on subs
whiteknight There used to be a restriction like that on sub parameters 20:54
I know that restriction is gone now and we have tests to prove it
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:55
PASM was designed to parse 2 digits after [INSP], because that was enough 20:56
PIR supported more registers, and automatically handled spilling
whiteknight Yes, very old parrot used to have a fixed number of registers and mechanisms to spill
PerlJam oh, yes ... I remember the 32 register limit, but that's long been gone
tadzik where did the rest of the the data go?
sorear the 100 register limit is/was a syntactic vestige of the old order
PerlJam gotcha
tadzik oh, there is still set_lex and stuff 20:57
cotto testing rakudo now 20:58
20:58 pjcj_ is now known as pjcj 21:04 mj41 left
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:04
tadzik store_lex / find_lex is the way to store data in Parrot? Pardon my newbie question, I never got to that layer 21:05
in the assemblies I'm more-less familiar with you usually use the stack 21:06
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
Because you can do $P99 and not have 99 registers
We used to have a graph-coloring allocator, or at least the beginnings of one for PIR code. 21:10
21:10 masak joined
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
masak I think it's too bad that the ncurses example doesn't work, as in trac.parrot.org/parrot/ticket/2130
whiteknight also, it was in IMCC, and we like to rip things out of IMCC 21:11
benabik POST has a register allocator.
Well, newPOST.
cotto only one spectest failed, so that looks promising 21:12
21:12 ambs left
Eclesia NotFound: string concatenation with + still not working ? 21:13
cotto lua looks fine 21:21
21:22 NotFound_b joined
NotFound_b Eclesia: string contanation works when both arguments are string. If not, you must coerce to string. 21:23
Eclesia coerce ?
NotFound_b string(something) 21:24
21:24 masak left
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:25
NotFound_b: ↑ 21:26
NotFound_b Eclesia: it must be string type, doesn't work with a var that contains a String pmc.
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.
NotFound_b cotto: let me look...
cotto: TT #760 21:28
21:28 whiteknight left
cotto NotFound_b, thanks 21:28
partcl passes too
anyone recall when STRINGNULL was added? 21:29
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
Eclesia string compileCommand = "parrot -o " + pbcFilePath + " " + pirFilePath; spawnw(compileCommand); <-- not working :( 21:41
no errors but doesn't work
21:41 Psyche^ joined 21:43 Eclesia left 21:46 Patterner left, Psyche^ is now known as Patterner, perlite_ joined 21:49 hercynium left 21:50 perlite left, perlite_ is now known as perlite
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:18
22:22 cotto left
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:23
soh_cah_toa that's what i'm looking to do now. trying to figure it out 22:24
plobsing better yet, have your test setup and tear-down a temp file 22:25
I think we have some tests that do that already, although I cannot recall which ones
NotFound_b test_prep target 22:29
pbctestfiles: 22:30
soh_cah_toa looks 22:32
NotFound_b Line 2048 in config/gen/makefiles/root.in
soh_cah_toa there's no .pbc files in t/perl/testlib though 22:33
22:38 wagle joined, cotto joined
NotFound_b soh_cah_toa: What problem do you have with that? 22:38
cotto ohai
soh_cah_toa NotFound_b: well, i need one 22:40
or atleast figure out how to generate one
temporarily
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
something like t/hbdb/data (assuming t/hbdb exists)
soh_cah_toa ok
cotto actually, yes, generating it would be better
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
NotFound_b I think using the existing convention of 'testlib' will be better.
soh_cah_toa NotFound_b: i was gonna do that anyway 22:43
cotto `./parrot -o t/foo/buz.pbc t/foo/buz.pir`
You don't need to try to be clever by generating it using the api.
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
NotFound_b Just add it to root.in following what the other targets in pbctestfiles do.
cotto talk time
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,
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:48
NotFound_b: but for this test, you're right 22:49
22:50 GodFather joined, whiteknight joined, GodFather left
jnthn__ Is there something more than make that I have to do if I update ops? 22:50
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
NotFound_b jnthn__: make bootstrap-ops
22:54 GodFather joined, GodFather left
jnthn__ NotFound_b: thanks 22:56
22:56 kid51 joined 23:15 NotFound_b left 23:32 kid51 is now known as kid51_at_dinner
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:44
cotto adding an op will invalidate existing pbc 23:47
yes
bacek_at_work jnthn__, "make bootstrap-ops"
cotto also, reconfig && world
23:48 dmalcolm left, zby_home_ joined
jnthn__ bacek_at_work: I did...it looks like existing PBCs, as cotto said. 23:49
cotto: Seems I have non-PMC lexicals about working. :) 23:50
23:51 zby_home left
cotto jnthn__, nice 23:51
whiteknight jnthn__: in parrot?
23:51 daniel-s joined
jnthn__ whiteknight: Yes. 23:52
whiteknight jnthn__++
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.
jnthn__ Yes, it was leftover lexicals.
gah
leftover *PBCs*
jnthn__ is exhausted from two days teaching in another city :)
OK, time for rest. 23:58
I sort out the tests tomorrow.
sleep & 23:59