Parrot 3.4.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today
Set by moderator on 17 May 2011.
cotto_work jnthn__: great. #perl6? 00:00
benabik bacek_at_work: ping 00:01
cotto_work aloha: seen bacek_at_work 00:02
aloha cotto_work: bacek_at_work was last seen in msg 14 hours 38 mins ago <private message>.
dalek nxed: r1057 | NotFound++ | trunk/t/ (3 files):
reorganize and improve string literals and chr tests
00:06
benabik cotto_work: bacek asked me to poke him this morning, so hopefully he'll be around in a bit. 00:07
00:10 kid51_at_dinner left 00:11 NotFound_b joined
NotFound_b soh_cah_toa: you should use a PMC for the result of readline_interactive, not a string. 00:11
And check that pmc for nullness before using it. 00:12
00:25 daniel-s left
bubaflub incoming 00:33
dalek rrot-gmp: 4f4d4f8 | bubaflub++ | t/integer/invert.t:
add tests for invert

this covers mpz_invert
00:34
rrot-gmp: d027685 | bubaflub++ | t/integer/jacobi.t:
add tests for jacobi functions

this covers mpz_jacobi
rrot-gmp: 83fc7b6 | bubaflub++ | / (5 files):
refactor aliases list out to conf
rrot-gmp: 58de1f9 | bubaflub++ | src/GMP/Integer. (2 files):
aliases for jacobi functions
rrot-gmp: d18d452 | bubaflub++ | t/integer/legendre.t:
tests for legendre functions

this covers mpz_legendre
bacek_at_work benabik, pong 00:49
benabik \\o/ bacek_at_work 00:50
bacek_at_work o/
benabik, how it's going?
benabik bacek_at_work: Pretty good, although decoding the PIR in some of these methods is driving me crazy. 00:51
bacek_at_work benabik, I understand your feelings :) 00:52
sorear o/ bacek_at_work
bacek_at_work aloha, sorear
benabik, any obvious problems/blockers/etc? 00:53
benabik bacek_at_work: I think I've spent too much time dealing with removing Q:PIR blocks... I need to spend tomorrow figuring out your new POST classes, which I've barely looked at. :-/ 00:55
bacek_at_work benabik, just deprioritize Q:PIR blocks. Make newPOST nodes fully workable is more important 00:56
01:00 cotto_work left
benabik bacek_at_work: Do you have a 5 minute spiel of what you added, or should I just dig in? 01:01
bacek_at_work benabik, basically newPOST nodes reflecting basic PASM/PIR constructs closely 01:02
most of them are processed in single pass.
POST::Sub and POST::Label require 2 passes
afair
benabik bacek_at_work: pmichaud landed a new register allocator. IIRC, newPOST handles that itself? 01:04
bacek_at_work benabik, ouch. Is new allocator in imcc? (And there is 2 register allocators in newPOST) 01:06
benabik, but rule of thumb - POST::Compiler.to_pbc should able to generate PBC without IMCC help.
Which includes labels, register allocators, annotations, etc
benabik bacek_at_work: (re: to_pbc) right 01:07
bacek_at_work: No, an allocator in PAST.
bacek_at_work benabik, ah. That should be "ported".
sorear the new PAST uses one $Px per depth of expression nesting 01:08
benabik bacek_at_work: Turns out if you use a few thousand registers, IMCC takes WAY TOO LONG
bacek_at_work But PAST nodes should stay almost same (module PIR-to-NQP migration)
sorear as opposed to one $Px per PAST::Node
bacek_at_work benabik, N^2 algos ftw :)
sorear, good optimisation!
01:09 kid51 joined
benabik bacek_at_work: So the register work around in PAST will be less needed? 01:09
sorear bacek_at_work: yes, I love trivial changes that make stuff asymptotically infinitely faster
bacek_at_work benabik, it's still valuable.
benabik, less critical, yes.
sorear it's still extremely valuable
pmichaud I'm planning to add a new node type and some methods tonight 01:10
(just fyi)
benabik bacek_at_work: The basis of it is that it resets most of the register allocations based on new PAST::Stmt nodes. So if newPOST is already better on allocations, not sure how useful it'll be.
pmichaud nothing huge. I can do it in the nqp-only repo, or I can do it in parrot.
benabik pmichaud: Either way. What's the node? 01:11
bacek_at_work benabik, POST::*Allocator allocates "physical" registers. PAST::* - "logical"
pmichaud PAST::Want
it will select a child based on the rtype
bacek_at_work msg cotto afair you implemented LifetimeAllocator for PIRATE. But I couldn't find it...
aloha OK. I'll deliver the message.
benabik pmichaud: Interesting, but yes, shouldn't slow me much. 01:12
pmichaud PAST's register allocator ought to do fairly well because it explicitly knows about statement boundaries and sequence points. By the time we get to POST, a lot of that information is harder to tease out. 01:13
I can envision creating a POST::Stmt equivalent, however, to push the register allocation down to that layer.
afk, need to fetch dinner 01:14
benabik pmichaud: newPOST has a new register allocator already, so we can see how it works. :-) 01:16
bacek_at_work benabik, POST register allocator doing different job from PAST allocator :) 01:17
01:19 theory left
dalek sella/event_queues: 91dd182 | Whiteknight++ | / (3 files):
Remove tests from Event.t for features that we moved to Queue. Fix Event and Manager tests to pass again
01:20
sella/event_queues: a153ba2 | Whiteknight++ | / (5 files):
Remove unnecessary id_count field from Event. Add a new test file for Queue with several tests that used to be in Event.t
sella/event_queues: eaac3ce | Whiteknight++ | t/event/ (3 files):
Add in more stub test methods for all the things I want to test
sella/event_queues: ba01939 | Whiteknight++ | / (2 files):
Flesh out several of the stubbish Queue tests, and fix some Queue logic
sella/event_queues: bea4034 | Whiteknight++ | / (3 files):
Flesh out Event tests and fix up some logic
sella/event_queues: 340351a | Whiteknight++ | src/event/ (3 files):
+docs for some of the classes
benabik bacek_at_work: Yes, I was referring to "moving the allocator to POST". Instead of spending time reworking master's POST, we can wait a month and see how newPOST does. :-)
bacek_at_work benabik, agreed 01:22
cotto bacek_at_work, I never got it working 01:23
and it was linear scan
bacek_at_work cotto, lazy slacker! :)
01:23 woosley joined
cotto I wrote a bad first version before I realized how I should have written it. 01:24
01:27 NotFound_b left
cotto I need to get back to that and see how accurate chromatic's suspicions about imcc's register allocator's effect on nqp's performance are. 01:30
soh_cah_toa is it possible to cast a STRING * as a PMC *? i'd like to call Parrot_io_eof() w/ a string but it takes a pmc instead 01:32
or better yet...if not, how can i check eof w/ a string? 01:33
cotto It's possible, but it's an extraordinary bad idea. You probably want VTABLE_get_string 01:34
or the opposite
Parrot_io_eof expects a FileHandle PMC. 01:35
It doesn't make sense to ask about the eof of a string. 01:36
soh_cah_toa what i'm trying to do is not cause my program to crash when i press ^Z. i looked and readline_interactive returns a STRING * so then how can i do this? 01:38
oh wait, should i be checking for eof on the stdin pmc then? 01:40
cotto yup 01:41
soh_cah_toa ahh, duh. so simple
cotto in retrospect, yes
quite topical - mebassett.blogspot.com/2011/06/you-...l-you.html 01:43
It's possible that the lesson applies to areas other than Racket macros. 01:45
soh_cah_toa, do you have the testing code in a form that you think is worth pushing? 01:47
soh_cah_toa ha! 01:48
it's a piece of trash right now
cotto but it's a piece of trash that exists!
soh_cah_toa i'll push it 01:49
cotto code that exists is almost always preferable to code that doesn't
does it output tap?
soh_cah_toa i havn't even gotten there yet
cotto no worries
soh_cah_toa that's how horrible this thing is
dalek sella/event_queues: 1b54670 | Whiteknight++ | t/event/EventManager.t:
Start working on Manager.t tests, using mockobjects to prove Manager is interacting with Queue and Event correctly. Not complete.
01:50
01:51 whiteknight left
cotto dukeleto, ping 01:54
dalek rrot/soh-cah-toa/hbdb: 5b4877f | soh_cah_toa++ | ipc.pl:
This garbage script is supposed to become a test someday
01:55
cotto The hate is strong with this one. 01:56
soh_cah_toa oh yes. i'
lately, code == migraine 01:57
cotto make sure to get away from the computer. It's too easy to forget that the rest of the world exists.
soh_cah_toa oh i do. definitely. i even walk at nights 01:58
cotto great 01:59
dukeleto cotto: pong 02:06
cotto: add "use Test::More;" to your script and you will be 90% of the way to having a test file
cotto: running out the door in a few 02:07
cotto dukeleto, what's your understanding of how much gsoc mentors should/may participate in coding?
dukeleto cotto: as much as they want, usually. why do you ask?
cotto dukeleto, I just want to make sure I don't disqualify soh_cah_toa++ by diving in and doing stuff. 02:08
The full OSS experience definitely isn't coding in isolation.
thanks
dukeleto cotto: i would say if you help him by doing things which are not directly what his deliverables are, that is fine.
cotto: i don't think you will disqualify anybody
cotto: feel free to dive in and give soh_cah_toa++ a hand. I see that he is working hard. 02:09
cotto dukeleto, I was thinking about the tests
dukeleto cotto: yes, writing him a few example tests will probably give him a much-needed boost in that area
dukeleto is done with his TPF grant, other than writing his final blog post. woot. 02:10
cotto and whipping that code into shape
dukeleto cotto: how is master looking for the release tomorrow?
cotto awesomesauce
I'll probably cut the release tonight. I haven't started testing yet.
dukeleto cotto: i think the codingstd problem i thought i added to master got fixed already. In any case, it is a trivial fix of adding some parens in a macro to appease the codingstd tests
cotto dukeleto, I won't let it escape into the release. 02:11
kid51, I'm reading your draft yapc talk and will give you some feedback before I cut the release. 02:14
threads.t test failed
kid51 cotto: Thanks. I'm headed to bed now, so I will read it in the morning.
cotto kid51, what's your preferred format?>
It's a long draft. 02:15
kid51 plain-text
just intersperse your comments in the text.
It's actually not long. It times at 16-17 minutes.
And I have 20.
02:16 kid51 left 02:24 plobsing joined, RobertLJ left 02:32 rurban_ joined 02:35 rurban left, rurban_ is now known as rurban
pmichaud 01:30 <cotto> I need to get back to that and see how accurate chromatic's suspicions about imcc's register allocator's effect on nqp's performance are. 02:52
you might not be able to tell or measure it, any longer, since nqp (and nqp-rx) are now much better about register allocation 02:53
cotto pmichaud, great. 02:54
pmichaud where some routines used to used hundreds or even thousands of unique registers, they now often use less than 10
*used to use
cotto nice. When did that happen? 02:55
pmichaud last week
cotto Then I guess I don't feel too bad about missing it. What changed?
pmichaud PAST got rid of its naive register allocator (more)
02:56 theory joined
pmichaud it now has a bank of reusable registers, and the PAST creator can mark where the logical sequence points in the code are (i.e., places where there are no more temporary registers in use) 02:56
so, when the end of a sequence point is reached, all of the reusable registers (except the one holding the return value of the sequence point, if any) are returned to the pool for re-use in the next statement 02:57
cotto Did you seen any performance improvement? 02:58
02:59 RobertLJ joined
pmichaud yes and no 02:59
cotto 1 & 0 = 1
pmichaud the reason I put the register allocator in place was that we were getting pathological performance from imcc in nom
cotto er, = 0 03:00
pmichaud compiling our core setting was taking 16 seconds, then having parrot compile the generated pir (only about 45k lines) was taking 50+ seconds
i.e., it was taking longer to compile the pir than it took to generate it
the difference is in the way that nom does initialization as compared to rakudo master 03:01
in rakudo master, we have hundreds of small routines marked :load :init that do all sorts of constant and data structure initialization at load time
that works, but we pay a startup cost in the invocation of all of those routines when rakudo starts up or is loaded
so, in the new model, jnthn++ switched it so that all of the initialization takes place in a single :load :init subroutine 03:02
so, we now have only one invocation...
but that one routine contained tens of thousands of registers
because imcc doesn't really do any register re-use on its own
cotto which were highly amenable to a simple allocator
pmichaud so imcc was going all quadratic on the fact that a subroutine contained sooooo many registers 03:03
so, by getting PAST to do the reusable register trick, what was taking imcc 50 seconds to compile went back to under 2 sec
we also get another really huge benefit from having temporary PMC registers 03:04
previously, if a subroutine had 100 registers or so, where 90 of them were really only temporary in nature, that meant there were 90 temporary PMCs that would be held alive even though they weren't really needed 03:05
those pmcs would remain alive until the subroutine call frame was collected
03:05 RobertLJ left
cotto so now gc pauses aren't as bad? 03:05
pmichaud which can actually be beyond the lifetime of the subroutine call, if a closure was captured during the subroutine (the closure holds an active link to the callframe)
so, a lot of temporary gcs would be held as "alive" even though they were really no longer needed 03:06
s/gcs/pmcs
now, as soon as a temporary pmc register is reused, whatever PMC it was holding onto is released and can be collected
so, the overall number of active gcs is reduced, reducing our memory footprint 03:07
(and yes, that should speed up gc mark/sweep similarly) 03:08
as far as the net overall impact on rakudo performance -- it was about 3%
Coke yawns.
cotto I'd like to see how PIRATE does with those changes.
pmichaud I don't if the update nqp-rx has been brought into parrot yet... it doesn't look like it from looking at ext/nqp-rx/src/stage0/*.pir 03:09
*updated
might be worth doing another bootstrap run
benabik pmichaud: I brought up doing the update, but nothing happened prior to freeze. I brought it into my branch though.
pmichaud: The smaller register set makes looking at diffs of generated PIR less of a headache. :-D 03:10
pmichaud oh, is there a freeze in effect now?
hmmmm
cotto Hmmmm indeed. I'm wondering if an exception is worthwhile. 03:11
benabik Yar, cotto sent out an e-mail to parrot-dev about it this afternoon.
pmichaud maybe I'll stick my PAST updates into the nqp repo for tonight until after the freeze
benabik Exception for nqp-rx w/ Stmt might be worthwhile. New PAST nodes should probably wait. :-D
pmichaud I'm just now getting to my email. I knew the release was on tuesday; I didn't realize it was Monday already :) 03:12
cotto pmichaud, my work week just ended, so my internal calendar is quite wonky
pmichaud my internal calendar has been wonky for several weeks now 03:13
too many odd events around the house lately
cotto: I can do the nqp-rx bootstrap into parrot and test it with rakudo master if you like
or we can wait until after the release for that
benabik: I agree, new PAST nodes/features should wait until after release. I'll do them in another repo for the time being and merge them over on Wednesday. 03:14
cotto pmichaud, I could go either way. If you have confidence in nqp-rx, go for it.
pmichaud if rakudo master passes with a new nqp-rx, I have confidence in it.
cotto wfm
pmichaud the changes to nqp-rx are fairly innocuous.
also, before committing the register allocation changes to parrot master I tested them against all of nqp, nqp-rx, rakudo master, and nom 03:15
cotto I'll start the release one you commit the new bootstrap. I'm glad you have a fast machine for testing Rakudo.
pmichaud both unmodified versions of each of those and modified versions that used the new register allocator
yes, should take me only about 10 or 15 mins
cotto I can keep busy until then. 03:16
It's Tuesday in most of the world.
03:17 lucian joined
benabik It's almost Tuesday here. 03:17
cotto exactly
pmichaud yes, looks like I started to do a new bootstrap last week but didn't finish it 03:19
dalek p-rx: 1dc87d4 | pmichaud++ | src/stage0/ (3 files):
Update bootstrap files to take advantage of new PAST::Stmt nodes and
03:20
pmichaud all parrot tests pass with new nqp-rx bootstrap... building rakudo 03:24
cotto good sign 03:25
pmichaud built, now running 'make spectest' 03:26
one can tell the different by looking at the generated pir... reusable registers start at $P100 and go to $P999
most code rarely gets above $P110
non-reusable registers (mainly lexicals and constant subs) start at $P1000 03:27
03:27 lucian_ joined
cotto within subs, is allocation naive? 03:27
pmichaud no 03:28
they're reused within subs, too. that was kind of the whole purpose :)
(because we had the one sub that had so many registers allocated naively that was causing parrot to take forever)
github.com/perl6/nqp-rx/blob/maste...NQP-s0.pir # an example generated .pir 03:29
cotto ok 03:30
03:30 lucian left, JimmyZ joined
benabik It made a noticible difference for PAST::Compiler on nqp_pct as well. 03:31
pmichaud rakudo passes all of its spectests
oh, darn, I was on parrot master branch but not the latest master 03:33
okay, let me try again :)
(was missing a 'git pull') 03:36
03:36 lucian__ joined
pmichaud parrot tests pass... nqp-rx tests pass... 03:37
just waiting for rakudo master
03:37 lucian_ left 03:40 lucian__ left
pmichaud spectests pass 03:43
bootstrap pushed.
dalek rrot: 8a56bbe | pmichaud++ | ext/nqp-rx/src/stage0/ (4 files):
[nqp-rx]: Update nqp-rx with latest version from nqp-rx repository,
03:44
rrot: 2cb63ec | pmichaud++ | / (35 files):
Merge branch 'master' of github.com:parrot/parrot
pmichaud cotto: okay, done. 03:45
cotto pmichaud, thanks 03:47
pmichaud sorry I didn't merge the bootstrap in earlier -- I guess I thought I had done that.
afk for a bit
cotto After hearing that it's an actual comic, I'm tempted to use "Dogwelder" as a release name. 03:50
pmichaud copyright? trademark? 03:52
cotto not likely to be an issue, but I'll probably avoid it just because it's a somewhat unpleasant mental image. 03:56
03:57 daniel-s joined
cotto nice 04:01
Attempt to free unreferenced scalar: SV 0x4317ab0, Perl interpreter: 0x1f5c010 at /usr/share/perl5/Perl/Critic/Config.pm line 150.
looks like it's not easily repeatable, which I guess is good 04:09
04:27 daniel-s left
bubaflub incoming 04:37
dalek rrot-gmp: 5ed2328 | bubaflub++ | t/integer/kronecker.t:
add tests for kronecker functions

this covers mpz_kronecker, mpz_kronecker_si, mpz_kronecker_ui, mpz_si_kronecker, mpz_ui_kronecker
rrot-gmp: ecae23d | bubaflub++ | t/integer/remove.t:
add tests for remove functions

this covers mpz_remove
rrot-gmp: 6fc56c7 | bubaflub++ | t/integer/fac.t:
tests for fac functions

this covers mpz_fac_ui
rrot-gmp: 6a39164 | bubaflub++ | t/integer/bin.t:
add tests for bin functions

this covers mpz_bin_ui and mpz_bin_uiui
rrot-gmp: e0da4d4 | bubaflub++ | t/integer/fib.t:
tests for fib functions

this covers mpz_fib_ui and mpz_fib2_ui
rrot-gmp: d6d4371 | bubaflub++ | t/integer/lucas.t:
tests for lucas number functions

this covers mpz_lucnum_ui and mpz_lucnum2_ui
bubaflub msg dukeleto the parrot-gmp test suite now covers all basic arithmetic up to number theory stuff; all that remains are cmp type functions, basic logic (like xor and what not), random number generators, and sizing functions. should be 100% covered by this weekend. 04:39
aloha OK. I'll deliver the message.
04:51 soh_cah_toa left 04:56 B0o-supermario joined
B0o-supermario Hi 04:56
cotto hi B0o-supermario 04:57
B0o-supermario Is it possible to compile c++ apps in parrot?
Hello cotto
?? Is there a compiler?
cotto B0o-supermario, no. There's no C++ compiler that targets a PIR backend. 04:58
B0o-supermario Ok
At least C?
Is a c++ backend impossible?
Or not done yet?
cotto No. We've had some attempts to write a partial C compiler, but it's a deeper problem than we're prepared to invest in.
B0o-supermario BASIC backend? 04:59
cotto C isn't a huge language, but parsing it (especially as it's used in the real world) is decidedly non-trivial.
B0o-supermario Ok
cotto why do you ask?
B0o-supermario Because i like to code apps in a portable architecture :) 05:00
cotto We try to be portable.
tadzik B0o-supermario: I have a feeling you're looking in the wrong direction. Parrot is primaly aimed for dynamic languages, so Python, Perl, Ruby, not things like C, C++ or Basic
cotto There is a basic interpreter though.
tadzik not that these things won't be possible
cotto PIRRIC
not sure how current it is though 05:01
istr that it's NotFound's
B0o-supermario I know c, c++, php, vb.net, vb, qbasic, vbscript... But nothing of them seems supported in parrot :(
05:01 theory left
B0o-supermario Is Bjarne idiot? 05:02
It doesn't make sense... I'm sad :( 05:03
tadzik not sure if serious. What makes you think so?
cotto Compilers targeting parrot exist because people are interested in writing and using them. 05:04
B0o-supermario So do you mean... There won't be a vm for languages i write code in?
cotto My long-term plan is to write a PHP compiler targeting Parrot, but there are other things I want to take care of first.
B0o-supermario Ok 05:05
Btw any news about llva?
cotto llva? 05:06
B0o-supermario Low level virtual architecture
dalek p: 6e4f4db | pmichaud++ | / (3 files):
Add PAST::Want nodetype, allows selection of a PAST tree based

This will likely move into Parrot's source tree eventually; I've added it here now so we can test and iterate it more directly until it stabilizes.
cotto Wikipedia tells me that that's part of the llvm project.
B0o-supermario The article was written by ME 05:07
cotto Do you have a question about Parrot? 05:08
B0o-supermario You Answered the question :) 05:09
cotto wfm
dukeleto, ping
sorear B0o-supermario: you're looking for #mono on irc.gimp.net 05:11
erm, irc.gnome.org
B0o-supermario No not gimp sorry 05:12
Ok
sorear they have a VM there for static languages
B0o-supermario But not gnome: i hate them
dukeleto cotto: pong
B0o-supermario Vm for static languages? Interesting
sorear B0o-supermario: gnome only hosts the IRC
cotto dukeleto, what was the goal of your grant?
get embed/extend up to 95% coverage? 05:13
dukeleto cotto: raise test coverage to over 95% in the embed/extend subsystem and improve documentation
cotto ok
dukeleto, just making sure I don't lie in NEWS
B0o-supermario Bye 05:14
cotto dukeleto, anything missing from NEWS?
dalek rrot: a76217f | cotto++ | NEWS:
update NEWS a bit
dukeleto cotto: there is one test that is not in master yet. Should I merge it in? I didn't want to add more stuff before the release
cotto It's a test. Throw it in.
05:15 B0o-supermario left
cotto if it passes ;) 05:15
dukeleto cotto: then I could delete my leto/embed_grant branch and say that the entire grant is done in 3.5.0
cotto go for it
dukeleto cotto: on it, running tests now 05:16
05:22 bubaflub left
dukeleto error: invalid conversion from ā€˜INTVAL (*)(INTVAL)’ to ā€˜void (*)()’ 05:24
good thing for tests
cotto awesome. ops2c segfaults 05:43
sometimes
dukeleto, what's your eta?
dukeleto cotto: the length of a fulltest that I just started 05:46
cotto dukeleto, k
dukeleto, while that happens, is NEWS accurate?
05:51 fperrad joined
dukeleto cotto: looking 05:52
dalek rrot: bcee048 | NotFound++ | NEWS:
add relevant winxed NEWS
06:00
rrot: cbabc06 | dukeleto++ | t/src/embed.t:
[t] Parrot_sub_new_from_c_func, whiteknight++
06:06
rrot: ca2b86e | dukeleto++ | t/src/embed.t:
Pay the ANSI 89 tax yet again
rrot: 69ed7b0 | dukeleto++ | t/src/embed.t:
Fix some castings errors in t/src/embed.t
cotto dukeleto, all happy? 06:09
dalek rrot: a819f8f | dukeleto++ | NEWS:
Update NEWS
06:10
dukeleto cotto: just added to NEWS, and fulltest passes for me under g++ on linux 06:11
cotto: i am seeing t/library/pg.t fail when all NCI stuff is turned off, because it needs 'p'
cotto: not a huge deal, but wanted to let you know
cotto: i.e. the test fails on my "plain parrot" github.com/leto/Util/blob/master/b...rrot_plain 06:12
cotto dukeleto, thanks. I don't think it's a concern since the default and recommended configuration is to use the nci thunks.
dukeleto goes afk for a bit
cotto: sure. good luck on the release!
cotto: should we list the revision of Winxed that is included in the release? Could be useful. 06:13
dukeleto actually goes
cotto dukeleto, that's a good idea. 06:15
06:29 benabik left 06:32 plobsing left, plobsing joined 06:37 benabik joined
cotto NotFound, when making the winxed bootstrap, could you add the revision number to the generated pir? 06:45
msg lucian I like the pictures of puffins, but you need to scale them down. 4.5M is too big. 06:59
aloha OK. I'll deliver the message.
NotFound cotto: you mean the svn revision? I'd like better to let this release as is, and use a stable release numbering scheme after it. 07:12
dalek website: cotto++ | Parrot 3.5.0 "Menelaus" Released! 07:13
website: www.parrot.org/news/2011/Parrot-3.5.0
NotFound Oh, it's done. 07:14
cotto++
cotto NotFound, I didn't mean right now, just in the future when you have the time to implement it. 07:17
dalek rrot: 3e974d2 | cotto++ | / (9 files):
cut the 3.5.0 release
07:23
NotFound cotto: sure, the plan is to migrate to git and then use branches and tags to manage release numbers. 07:26
afk 07:27
moderator Parrot 3.5.0 "Menelaus" released | parrot.org | Log: irclog.perlgeek.de/parrot/today 07:29
07:33 mj41 joined
cotto time to sleep for a bit and hope that nobody finds an egregious error in the release annoucement 07:41
and then, os bridge
08:45 SHODAN joined 09:16 daniel-s joined 09:44 contingencyplan left 09:45 woosley left 10:04 Drossel left, Kulag joined 10:11 Kulag left, Kulag joined 10:34 rurban_ joined 10:37 rurban left, rurban_ is now known as rurban 10:49 jsut joined 10:54 jsut_ left 11:09 ligne joined 11:15 ambs joined 11:35 jsut_ joined 11:40 jsut left 11:50 cotto left 12:13 bacek_at_work left 12:27 bacek_at_work joined 12:32 redicaps joined 12:49 bluescreen joined 12:52 bubaflub joined 12:56 JimmyZ_ joined 12:58 JimmyZ left, JimmyZ_ is now known as JimmyZ 13:01 smash joined
smash hello everyone 13:01
Coke smash: hio 13:03
bubaflub cotto++ on the release 13:08
13:10 whiteknight joined
whiteknight good morning, #parrot 13:10
PerlJam good morning whiteknight 13:12
13:13 redicaps left
daniel-s I built rakudo and parrot from the master branches on github a few (I think 2) days ago 13:14
is that very close to this most recent release
whiteknight hello PerlJam. How are you today? 13:22
daniel-s: Probably pretty close. A code freeze went out on monday, and I don't think there were many big changes before that 13:23
PerlJam whiteknight: mostly tired. Need caffiene 13:26
13:37 contingencyplan joined 13:40 daniel-s left 13:41 daniel-s joined
atrodo =~ 13:57
13:58 SHODAN left
whiteknight hello atrodo 14:08
atrodo Morning whiteknight
I had a chance to look over some of the docs for the new embedding interface 14:09
14:18 bluescreen left
whiteknight atrodo: I didn't last night, sorry 14:19
are the docs helpful as is? 14:20
atrodo whiteknight> It's a good overview. I'm not quite clear on what I need to do yet 14:30
whiteknight> To give some background, I'm going to have chunks of text that I need to compile with a known HLL (winxed right now) 14:31
then be able to invoke it with paramaters
whiteknight ok 14:34
Invoking functions through the embedding API is going to be a bit of a pain. 14:35
You need to construct a CallContext PMC, insert values into it, and then make a call. I think it's Parrot_api_invoke
or something like that 14:36
look in src/embed/pmc.c for most of those routines
14:39 daniel-s left 14:48 dmalcolm joined
dalek p: bcfe1f0 | pmichaud++ | tools/build/PARROT_REVISION:
Bump PARROT_REVISION to 3.5.0 release.
14:56
p: c62322b | pmichaud++ | / (5 files):
Add initial version of nqp:: pseudo-opcode space for low-level primitives.
atrodo I'm up to new ideas on how to do it, but I'm going to have chunks of code that I'll be running multiple times with varying paramaters 14:58
whiteknight I'll ask the dumb question now, is there any way to write some or all of it in a language running on Parrot? 15:00
I ask because calling PIR methods from C or C++ is not exactly easy or optimized for 15:02
the embedding API is used more frequently for loading in a bytecode file, then executing it, or executing bits of it
You're going to find yourself doing in 10 lines of C code things that are trivially easy in PIR 15:03
10 or more lines
moritz in pir you're in an explicit context of an interpreter, context, HLL etc.
I can see how that gets ugly from the outside
whiteknight right, every API call needs to marshal data to the correct formats (the embedding API doesn't only offers a few methods, not a million for each possible parameter type), set up error handling for graceful exit, set up a context, set up the GC stack top, etc 15:14
In general, it's better to get inside Parrot, and run things in there, instead of trying to puppet it from the outside 15:15
What you can do is create something like a dynpmc that will run from inside Parrot. Then use the dynpmc with the more friendly extending API to play with things
or, set up your draak program as a dynamically-loaded NCI library, and call it from PIR 15:16
atrodo It seems to me like a fairly common use case for embedding, passing a string of HLL code that needs to be executed inside of some environment. But maybe that's a me issue 15:21
15:21 cotto joined
atrodo whiteknight> And there's another block I had issues with last time, being able get the data needed for a particular chunk 15:22
cotto is at os bridge 15:23
atrodo But I assumed I could solve that since at worse I could map to a hash 15:24
15:24 jsut joined
whiteknight atrodo: It might be common in the future, but hasn't been so common yet. If we need to add new API functions to make that easier, we can try to do that 15:27
By convention, the API operates on STRING and PMC pointers, not on char* and void(*)(void) pointers, or whatever 15:28
so at the very least you are going to need to wrap up your data in STRING and PMCs
atrodo That's probably not going to be an issue 15:29
also, and this is my problem not parrot's, draak is in pascal, not c
15:29 jsut_ left
whiteknight pascal? People still use pascal? 15:29
atrodo well, technically, delphi, but yes
cotto They use COBOL, so why not.
whiteknight okay, dephi is a little bit beter
cotto well, not all of them 15:30
whiteknight The first programming class I ever took was in pascal. Back in highscool
school
atrodo highs cool
whiteknight All the other kids were doing exercises with records and arrays, I wrote a clone of the old windows "Mystify" screensaver
atrodo now knows what whiteknight did when he was younger
hehe, sounds like my collage years 15:31
whiteknight I barely graduated from highschool. My GPA was so terrible it was amazing I made it into college at all 15:32
At least I was learning things when I goofed off in programming class 15:36
15:41 whiteknight left 15:59 cotto left 16:12 mj41 left
dalek p: 3bb5b1c | pmichaud++ | / (3 files):
nqp::downcase/nqp::upcase should be nqp::lc/nqp::uc. moritz++
16:12
p: 900cf14 | pmichaud++ | src/stage0/ (6 files):
Re-bootstrap to enable nqp:: ops within NQP itself.
16:14 plobsing left
ligne evening all 16:27
dukeleto ligne: mornin' 16:31
16:31 davidfetter joined
dukeleto cotto++ # 3.5.0 16:31
davidfetter waves to dukeleto 16:35
16:40 theory joined
dukeleto waves back 16:40
ligne the new Parrot_sub_new_from_c_func test in t/src/embed.t has been failing with --without-libffi --without-extra-nci-thunks
dukeleto ligne: blarg!
16:41 Kulag left
dukeleto ligne: can you gist/nopaste the full output 16:41
ligne: that is my fault
16:41 Kulag joined
ligne dukeleto> not much to show i'm afraid: nopaste.info/27631eb995.html 16:42
fwiw, that's building with gcc version 4.5.1 20100924 (Red Hat 4.5.1-4), x64 linux. 16:43
16:58 cotto joined 17:11 plobsing joined
dalek lrskate: 50047d5 | tcurtis++ | s (7 files):
Add LALR.DPDA classes.
17:12
lrskate: 87d9837 | tcurtis++ | setup.winxed:
Organization in setup.winxed.
lrskate: f09d406 | tcurtis++ | t/dpda.t:
Add some simple DPDA tests.
lrskate: 445e7c1 | tcurtis++ | examples/practical-translators-g-0.winxed:
Change G_0 example to build a CFSM and pretty-print it as DOT.
lrskate: 4115f64 | tcurtis++ | s (2 files):
Implement building the CFSM. Currently buggy.
lrskate: e68eae8 | tcurtis++ | t/build_cfsm.t:
build_CFSM tests.
lrskate: 0a8530f | tcurtis++ | src/LALR/DPDA.winxed:
Formalize epsilon handling in DPDAs.
lrskate: 6bcbf42 | tcurtis++ | src/LALR/DPDA/ReadTransition.winxed:
Remove overly conservative constraint on ReadTransition.symbol.
lrskate: e6f3ea8 | tcurtis++ | src/LALR/Generator/BuildCFSM.winxed:
Update build_CFSM to account for DPDA changes.
lrskate: 9643bae | tcurtis++ | t/build_cfsm.t:
Add test case for the problems with G_0.
Coke so, for writing things for parrot's stdlib, do we have a community preference of winxed vs. nqp vs. pir ?
dukeleto Coke: i think the preference is up to the individual, but Winxed and NQP are preferred over PIR 17:14
Coke: we are moving towards "Only use PIR if you have no other choice", methinks. PIR is great as a target language for compilers still, of course. 17:15
Coke dukeleto: ok. how about winxed vs. nqp?
NotFound I know more people that likes to write Z80 assembler than people that likes writing pir. 17:16
Coke I can see how it would be nice to (a) have a standard, but (b) support diversity.
dukeleto Coke: people who prefer perlishness should use NQP and people who prefer javascriptness should use Winxed
Coke Notfound: I have written so much PIR, I'm fine with it now.
dukeleto: ok. so diversity >> a standard. that's fine.
NotFound Coke: I can write it, but I prefer delegate the task to winxed.pbc 17:17
17:18 dodathome joined
Coke we need a better pointer than "the winxed repository" in the README. 17:18
NotFound Note that my comparaison is biased. I know a bunch that likes to write Z80 assembler because I wrote a Z80 assembler :D 17:19
Coke (was looking for docs on language syntax, etc. There's no way to get back to the repo from the readme.)
bubaflub afternoon dukeleto
NotFound Coke: ups, I forgot to put a link to the main web site, sorry. 17:20
davidfetter wonders whether dukeleto is in morning or afternoon atm
dukeleto is still enjoying the morning of the longest day of the year 17:21
Coke NotFound: no worries.
dalek rrot: eb78bb5 | coke++ | ext/winxed/README:
fix spelling typo.
dukeleto Coke: whiteknight.github.com/Rosella/winxed/index.html looks useful
bubaflub: nice work! You are making awesome progress on parrot-gmp 17:22
looks like whiteknight.github.com/Rosella/winx...ction.html needs some love
bubaflub dukeleto: yeah, i'm pretty stoked. i'm shooting for full coverage by the end of this week. maybe a refactor of the test suite after that.
dalek rrot: e9dddc3 | NotFound++ | ext/winxed/README:
add url of the Winxed web site
17:24
17:26 smash left
Coke NotFound++ 17:30
what's the file extension for winxed? 17:31
*preferred
NotFound I use .winxed 17:33
JimmyZ suggest .wxd 17:34
17:35 Eclesia joined
Eclesia hi 17:35
NotFound We don't nee TLAs. The ms-dos times are long gone. 17:36
PerlJam NotFound: yet we still use the term "extension" as if it were an "extended filename". 17:37
bubaflub i've used .winxed in my project except for my tests which are all .t 17:39
NotFound PerlJam: yes, names usually live longer than its original meaning.
17:40 cotto left
NotFound Let me elaboarate a bit more: if 'prefered' means 'most used', looking at my usages and plobsing and whiteknight ones, .winxed is the winner. It it means 'recomended by the author', the same. 17:41
I'm open to suggestions from the community, so please build a big community ;) 17:42
17:48 JimmyZ left
Eclesia hi NotFound. quick question : could you add a few example in winxed project on how to run/compile more then one .winxed file ? 17:49
(like for example, how to include another lib, like rosella) 17:51
17:52 cotto joined
NotFound Eclesia: I'll try to write something. 17:53
18:05 cotto left
Eclesia is there an xml api in parrot ? 18:06
and zip api ? 18:07
dukeleto Eclesia: we have some tools to deal with zip and tar files, not sure about xml 18:10
Eclesia: runtime/parrot/library/Archive/Zip.pir
Eclesia: runtime/parrot/library/Archive/Tar.pir
Eclesia thanks 18:13
ligne if anyone is interested, i've been playing around with extending checkdepend to handle .pir files: <github.com/ligne/parrot/commits/checkdepend> 18:18
bubaflub ligne: looks interesting. how's the work going? 18:21
dukeleto ligne: cool! 18:22
bubaflub ligne: that's a nice GDB hack
ligne bubaflub> nothing since the weekend, i'm afraid. $day_job getting in the way :-)
thanks. though i fear it'll take a few more showers before i feel properly clean again... 18:23
bubaflub ligne: if you're going to be around in a few hours you should stop by #parrotsketch and let the other developers know and maybe they'll give you some feedback about it 18:25
ligne it's still finding a lot of (probably) false positives, but i'm not really familiar enough with the intricacies of the build system to be sure 18:26
bubaflub> what time is that? parrot.org just says 20.30. would that be UTC? 18:31
bubaflub ligne: yes, that UTC. it's currently 18:30 UTC, so 2 hours.
ligne righto. i'm in BST, so the conversion is nice and easy! 18:32
bubaflub haha. yeah, i'm in Illinois and the daylight savings time always gets me. 18:33
18:34 rurban_ joined
Eclesia NotFound: sorry to bother you again. how do I a use a class from a different namespace ? (error I have : Class '[ 'Rosella' ; 'FileSystem' ; 'File' ]' not found ) . is there a import keyword ? 18:37
18:37 rurban left, rurban_ is now known as rurban
dukeleto won't be at #ps today 18:41
atrodo It helps to spell parrotsketch correct, AND be on the right irc network 18:44
davidfetter atrodo, did you happen across something that was already occupied over on fleanode? 18:50
18:51 cotto joined
atrodo davidfetter> actually, i was on quakenet 18:51
so a very empty room, which is very noticeable 18:52
18:54 jsut_ joined 18:59 jsut left 19:23 ligne is now known as ligne_work
NotFound Eclesia: try $load 'Rosella/FileSystem/File.pbc'; 19:39
Eclesia NotFound: to late, already found it 19:40
19:44 TiMBuS left 19:47 TiMBuS joined
Eclesia NotFound: it's not possible to concatenate strings in a print() ? 19:51
19:52 ligne joined
NotFound Eclesia: Why not? 19:52
Eclesia NotFound: I have something like that : print(" - Compiling source : " + file.short_name()); 19:53
but it prints '0'
NotFound Eclesia: function call results are tretaed like var, so + in that case is addition, not concatenation. You need to coerce ro string. But in print and say is easier to use several arguments. 19:55
print(" - Compiling source : ", file.short_name());
benabik Is there a reason #parrotsketch has no /topic? 19:56
Eclesia NotFound: I can print as much parameters as I want separated by ',' ? 19:57
NotFound Eclesia: yes
Eclesia nice :) like a java '...'
wasn't expecting this. ^^ good news
benabik aloha, going to yapc::na? 19:59
aloha benabik: going to yapc::na is cotto or dukeleto or atrodo or atrodo or Util or kid51 or benabik
tadzik or? /o\\
good it's not xor :)
cotto only one person at a time can go to any given conf 20:01
#ps in 29
dukeleto, ping 20:02
Eclesia NotFound: I see it's possible to compile from .wx to .pir , but is it possible to compile directly .wx to .pbc ? 20:08
NotFound Eclesia: not with the installed version for a now. 20:09
Eclesia -cc -> compile to pbc would be nice for futur version then ;)
20:11 autark joined
Eclesia NotFound: so for now, if I want to run a winxed file which use another winxed file. I first first compile the second to .pbc and add a $load in the first. right ? 20:11
I must first* 20:12
NotFound Eclesia: right
Eclesia NotFound: what if I have cross references between them ?
20:14 ligne left
NotFound Eclesia: static binding of functions is limited to the current files. For other files, is the same as if they weren't written in winxed. 20:14
20:14 ligne joined
NotFound current file 20:15
20:16 dodathome left 20:19 mj41 joined, whiteknight joined 20:21 bacek_at_work left, bacek_at_work joined 20:25 darbelo joined
dalek sella/gh-pages: d4afe69 | Whiteknight++ | winxed/index.md:
fix typo. Thanks to (Andrew Johnson)++ for the report
20:26
whiteknight is actually going to be able to attend #ps today. Fun times!
benabik \\o/ whiteknight! 20:27
cotto woot
whiteknight I got out of work early today to meet up with a home inspector, we're done that nonsense so here I am!
cotto I've been sitting next to chromatic for the last 10 minutes and didn't realzie it,
Eclesia whiteknight: hi. a first feedback on rosella. on Directory object, you made methods get_subdirectories and get_files. there should be a method : list_entries which return both.
whiteknight cotto: lucky you! capture some of his essence in a small glass bottle and mail it to me
cotto: but try to do it in a non-creepy way 20:28
Eclesia: sounds reasonable.
cotto he says no
benabik What #parrot people are giving talks at YAPC::NA? 20:29
cotto me, dukeleto and kid51
darbelo "capture" does not require consent.
cotto and chromatic, though I don't think he's talking about Parrot
benabik I'll have to make sure to plan my days around that. :-D Haven't even really looked at what talks are there. 20:30
cotto dukeleto and I are back-to-back
Eclesia whiteknight: the 'get' is also unusual for me. but I guess it's form my java background ^^ (java has listXXX methods)
whiteknight Eclesia: names are not set in stone. I'm not always very consistent 20:31
cotto #ps in now
whiteknight I put the verb in there because it is a lookup, not just returning an existing array
20:31 soh_cah_toa joined 20:32 kid51 joined
NotFound This method no verb. 20:33
darbelo Eclesia: Fun tidbit: At work naming an ObjC 'getter' method with a verb at the beginning is a shooting ofence.
NotFound I think the disputes about getter names have an easy solution: never ever use getter methods. 20:34
benabik NotFound: Make all objects write-only?
Eclesia darbelo: At work I would be whip to blood if I named a method with a _ in it :D
NotFound benabik: no, just don't care if it 'get' something or return something by some other way. 20:35
whiteknight Eclesia: it's important to follow standards and be consistent. I care less about the specific rules than I care about consistency
When I'm coding C#, I do it AllInCamelCase
or, whatever that's called
soh_cah_toa whiteknight: absolutely
Eclesia whiteknight: camelcase , same in java
NotFound whiteknight: if you are always inconsistent, you are being consistent. 20:36
darbelo Eclesia: The reigning convention in the iPhone team is that a method that returns stuff is called 'stuff'
dalek sella: 0a337e4 | Whiteknight++ | src/filesystem/Directory.winxed:
Refactor Directory methods .get_files and .get_subdirectories. Add a .get_entries which returns both. Eclesia++ for the idea
benabik In languages that support it, I like "get_stuff()" to be named "stuff()" and "set_stuff(value)" to be named "stuff(value)" 20:37
whiteknight Eclesia: I haven't tested that commit yet. But it should do what you are talking about. Directory.get_entires returns everything
benabik Even better: "obj.stuff" and "obj.stuff = value". But that's more syntatic sugar than most languages like.
Eclesia thanks
20:37 kid51 left
whiteknight Eclesia: nothing is set in stone. Feedback and requests (and patches and pull requests!) are always welcomed 20:37
NotFound benabik: what amazes me sometimes is thinking about too much work optimizing and jitting for speed, and then doing such kind of things to lose speed. 20:39
Eclesia whiteknight: I don't if that's of interest, but I transposed one of my java classes for x3.64 in winxed : pastebin.com/dLBUvC5i . concatenation doenst give the same result so I encoded each one using chr(...) . run the x364Test function to see what it does 20:40
I don't know*
benabik NotFound: Ideally setters and getters are simple enough to be something a good JIT compiler will inline.
NotFound benabik: not if you need to introspect to find them.
whiteknight Eclesia: oh wow, looks good 20:41
benabik NotFound: Yes. if "obj.attr = val" becomes "obj.findMethod("attr").call(val)", that's poor.
NotFound Eclesia: concatenation should work well after yesterday fixes.
whiteknight Eclesia: we have bindings to libcurses in the parrot repo too. Those might be of interest to you 20:42
Eclesia NotFound: I don't think it was winxed fault. I had the same behavior when I write it in pir before
whiteknight Eclesia: if you can put together a little test case and/or file a bug report that would be most appreciated 20:43
NotFound Eclesia: When you wrote in pir what?
whiteknight bugs are nice, until somebody finds them
Eclesia whiteknight: I don't know if it's a bug, parrot do not have an equivalent to java 'byte' . 20:44
NotFound Anyway, there was a winxed bug, it wasn't generating the expected pir. Now it does.
Eclesia: Have you read "Thinking in java"? 20:45
Eclesia i did
whiteknight NotFound: I found a fun little winxed bug yesterday, I'll put together a test case for you
NotFound Eclesia: Then stop doing it ;)
whiteknight I found it by being stupid 20:46
Eclesia likes java. just oracle how is destroying everything
who*
NotFound Eclesia: think about what you want to do, not about how you do it in java,
benabik prefers Scala to Java, but enjoyed writing a compiler on the JVM
Eclesia scala is so full of {([ a it json, it gets unreadeable very fast 20:47
like json*
dalek sella: b700024 | Whiteknight++ | src/filesystem/Directory.winxed:
+docs and cleanup
20:48
NotFound Eclesia: "equivalent to java 'byte'" isn't helpful. Depending on what you want to do, the appropiate type may be different. 20:49
benabik Eclesia: Not sure how you mean. One of the things I like about Scala is all the places I can leave out excess punctuation.
Eclesia time to sleep, ++ all 21:02
21:03 Eclesia left
dalek website: benabik++ | GSoC 6: Q:PIRsand 21:03
website: www.parrot.org/content/gsoc-6-qpirsand
benabik Ooops, typo...
New URL: www.parrot.org/content/gsoc-5-qpirsand 21:04
bubaflub whiteknight: i'm willing to help straighten out some of the IMCC line-number nonsense. though my expertise in yacc/lex land is very limited. would having basic test cases that fail help? would removing heredocs from our PIR files help? 21:12
soh_cah_toa is very happy to see people willing to fix imcc line numbers 21:14
benabik bubaflub: My experience is limited, but my compiler class was fairly recent, so I'm willing to help out with that project. :-D 21:15
bubaflub i think one way or another a good first step is to have simple tests that fail to give the correct line numbers
benabik +1 It's hard to tell what's driving it wrong without minimal examples.
bubaflub yeah, though i imagine actually running some of this stuff through the debugger will be painful - stepping through PIR to the generated C and then trying to figureout where in our grammar that's coming from... 21:16
benabik bubaflub: That's why minimal examples really help. It points out which bits of code are wrong. 21:17
bubaflub benabik: agreed. 21:18
soh_cah_toa: i'm looking overy our old blog post about IMCC line numbers - is there a way we can do simple stuff in PIR only or do we need some C to grab the line number information? 21:19
soh_cah_toa bubaflub: c 21:20
bubaflub soh_cah_toa: i read that as Spanish for "Yes".
soh_cah_toa bubaflub: github.com/parrot/parrot/commit/21...d6fd0a050d 21:23
bubaflub: that's the old code i was using
bubaflub soh_cah_toa: great 21:25
PerlJam See pdds/pdd19_pir.pod around line 354 (if this isn't useful, just ignore me :)
bubaflub: ^-- that was for you 21:26
PerlJam wanders off again
21:26 ambs left
dalek lrskate: aae3f9a | tcurtis++ | src/LALR/ (2 files):
Fix the bug.
21:27
bubaflub PerlJam: ok
dalek rrot: 86c8b87 | fperrad++ | docs/book/pct/ch04_pge.pod:
[doc] remove formatting in code section
21:34
21:39 cotto left 21:41 fperrad left 21:42 mj41 left
bubaflub soh_cah_toa: so here's what i'm thinking - basically a custom runcore that just grabs the line number and prints it out in between each line of execution. then some tests to compare the output of that with what it should be. 21:43
soh_cah_toa: or better yet, not a runcore but a separate program that uses the embedding interface. i wonder if that would work. 21:44
21:46 Patterner left, PurityControl joined, PurityControl is now known as Patterner
soh_cah_toa are you talking about just hbdb or parrot/imcc in general? 21:46
bubaflub soh_cah_toa: just something small to test line number stuff 21:49
soh_cah_toa i'm trying to understand the need for a runcore though
b/c runcores have no concept of line numbers. they only operate on the opcode stream. so within the main while(pc) { }, it's not guaranteed that each iteration corresponds to each line 21:50
bubaflub soh_cah_toa: ah, ok. 21:54
soh_cah_toa: so what i'd need is a separate program then
soh_cah_toa although, i suppose you could check to see if the current iteration in while(pc) is a new line. maybe something like this: 21:58
int old_num;
while(pc) {
int new_num = foo_get_line_number();
if (new_num == old_num) continue;
else printf("new_num\\n");
}
bubaflub soh_cah_toa: ok, that makes sense 22:01
soh_cah_toa bubaflub++ for taking time to look at this nonsense 22:03
this makes me very happy :)
whiteknight You know what always bugs me? VTABLE_get_string(interp, PMCNULL) doesn't return STRINGNULL 22:13
I understand *why* that is what it is, but it always bites me when I'm coding
22:14 alester joined
whiteknight and since winxed uses the keyword "null" for both PMCNULL and STRINGNULL, it's very easy to run into that problem, when null is a valid value to be passed to a function as a string 22:14
bubaflub soh_cah_toa: let me summarize what i'm thinking just to see if i'm on the right track - we need a simple runcore that while it's in the main loop prints out the line number any time it changes. then we need simple PIR files that we know how they will execute. finally, we'll need some kind of test harness that compares what is actually outputted by the runcore and what we expect. 22:15
NotFound whiteknight: maybe the calling conventions should take care of some cases.
whiteknight yes, calling conventions is where I run into it the most
22:16 daniel-s joined 22:19 theory left, theory joined 22:20 particle1 joined 22:23 particle left 22:24 PacoLinux left
darbelo tcurtis: ping. 22:26
tcurtis darbelo: pong
darbelo Hey. I'm mostly back among the living. Hou have you been?
How* 22:27
davidfetter
.oO(braaaaaainns)
22:29
tcurtis darbelo: alright. Running behind somewhat, though. Just fixed a bug in my CFSM-building code. Hopefully will get some of the other LR(0) parsing stuff done tonight.
22:29 cotto joined
tcurtis Though I won't be able to push it until the morning, since I'll be back at my apartment, which doesn't have working Internet yet. 22:29
darbelo Ouch.
Well, a bit less ouch with git. But still ouch. 22:30
tcurtis Well, $dayjob also has air conditioning, unlike my apartment, so I'd probably spend most of my time there anyway.
soh_cah_toa bubaflub: i think that'd make a great first test 22:31
darbelo In my case, $dayjob has a way better coding atmosphere. I'm way more productive there, but the productivity gets spent on actual work... 22:33
tcurtis $dayjob is very laidback for me, so I can go there even when I'm not actually working for it. (Had to avoid saying "My $dayjob" because I don't want a new one yet. :) 22:35
dalek sella/event_queues: 97c1410 | Whiteknight++ | src/event/ (2 files):
Update toggle_queue to return the current state of the queue, and to also autocreate named queues if necessary
22:50
sella/event_queues: 370bda6 | Whiteknight++ | t/event/EventManager.t:
Fill in the rest of the tests for Event.Manager
sella/gh-pages: 922a260 | Whiteknight++ | libraries/event.md:
Rework Event docs to include Queue. Add a quick code example for NQP
sella: 97c1410 | Whiteknight++ | src/event/ (2 files):
Update toggle_queue to return the current state of the queue, and to also autocreate named queues if necessary
sella: 370bda6 | Whiteknight++ | t/event/EventManager.t:
Fill in the rest of the tests for Event.Manager
sella: 2ca724d | Whiteknight++ | / (7 files):
Merge branch 'event_queues'
sella: 3fe6474 | Whiteknight++ | src/event/Manager.winxed:
de-null the queue name before we check if the queue exists
whiteknight tcurtis: your apartment sounds a lot like the house I am buying 22:51
no internet access, no airconditioning
tcurtis whiteknight: we have ceiling fans in every room. 22:52
whiteknight oh, we have out-of-code electrical wiring
which is almost as good
dalek rrot: e612808 | NotFound++ | / (2 files):
vtable get_bool in UnManagedStruct
22:56
NotFound whiteknight: the advantage is that you don't need to maintain legacy stuff ;) 22:59
tcurtis darbelo: do you have any questions, statements, imperatives, or suggestions on your mind? (Including "HURRY UP AND GET STUFF ACTUALLY PARSING!" :)
darbelo I was actually reading the code now. "Get it parsing" sounds like a good enough goal for now. 23:00
tcurtis is also planning to add more explanatory comments tonight. 23:01
darbelo Once it's parsing you can iterate from there.
I might be able to free up some time to cook up some test cases for you this/next week. 23:02
23:04 daniel-s left
darbelo If I get the complexity right we might be able to achieve a sort of "testcase ramp" that you can use to guide yourself through development. 23:04
tcurtis darbelo: ooh. that would be very helpful. 23:06
darbelo: even if you just were to get them to me in a BNF-ish format, it would be quite helpful. Converting them to actual tests wouldn't take me much time. 23:08
darbelo I'm not sure I'll be able to pull it off, since I'm not really sure I have enough of the literature in my head to go "The only difference in parsing this and that is feature X" for anything more than toy examples. 23:10
But I'll give it a shot.
23:11 Tene left
darbelo Even if I cant make a "test ladder" I'll still be whipping up some test cases for you. 23:12
tcurtis darbelo: That's great. Thank you.
darbelo tcurtis: No problem. 23:13
23:19 whiteknight left
tcurtis darbelo: would you mind if I head out soon? 23:31
darbelo No prob. 23:32
I should probably get away from this screen while I still have retinas.
mail/msg me if you need anything. 23:33
tcurtis darbelo: will do. Good luck with retaining your retinas! 23:34
23:36 whiteknight joined
dalek rrot: c412e89 | Whiteknight++ | / (2 files):
Merge branch 'whiteknight/add_vtable_override'
23:49
23:54 Tene joined 23:58 cotto left