Parrot 3.9.0 "Archaeopteryx" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 19 October 2011.
dalek rrot/kid51/testsets2: 9f9c6af | jkeenan++ | / (4 files):
Instead of introducing two more Perl modules to the Parrot distribution, have user of 'make fulltest' install them from CPAN.
00:21
Coke should update Task::Parrot at some point. 00:22
feel free to ping me with stuff to put in it.
dalek rrot/kid51/testsets2: b249d79 | jkeenan++ | lib/Parrot/Distribution.pm:
lib/TAP/ has been removed from distro; remove it from Parrot::Distribution as well.
00:25
plobsing msg benabik Ωη;)XD supports pattern-matching in parrot. OMeta augments PEGs (parsing expression grammars, not your PEGs) with destructuring bind and a unique calling convention to enable what the docs refer to as "ML-like syntax". See github.com/plobsing/ohm-eta-wink-k...CE%B7#L111 for a simple example. 00:29
aloha OK. I'll deliver the message.
00:37 NotFound joined 00:46 kid51 joined 00:51 benabik joined
whiteknight I still haven't used ohm-eta for anything. I have been meaning to take it for a spin 01:06
ah damnit, my optimization earlier today to Task PMC on green_threads broke some stuff 01:07
plobsing whiteknight: same here. I haven't had many parsing tasks after finishing it. If you do get around to it, let me know about any issues. I may not have a lot of tuits, but I'll try to support my 1-man projects. 01:15
whiteknight yeah, it really does look like a fun tool that's in desperate need of testing 01:20
benabik I tend to find aloha messages to me in the logs before aloha actually sends it to me. 01:25
dalek rrot/green_threads: 944fa0e | Whiteknight++ | src/ops/ (2 files):
fix a bug I introduced earlier today. kid51++ for finding it
01:29
benabik I'm not quite sure what that "ML-like" syntax is supposed to be. 01:30
Oh! It's doing pattern matching in the compilation rules. Very excellent. 01:31
plobsing++
plobsing I'm sure it isn't as rich as SML pattern matching, but it is quite usable. The ohm-eta compiler uses it to implement it's "optimization" and emission passes. 01:32
benabik I was expecting it to parse an ML-esque syntax. 01:33
01:34 perlite joined
dalek rrot/green_threads: 51684dc | jkeenan++ | src/ops/experimental.ops:
[codingstd] No trailing whitespace.
01:47
01:54 wagle joined
kid51 paste? 02:14
nopaste?
Do we have a working pastebot? nopaste.ch is out of commission?
pastebin.com/9xiqtwiC 02:18
build failure in green_threads branch with all g++ build
cotto 'evening 02:29
02:43 jsut joined
dalek kudo/nom: d264275 | (Geoffrey Broadwell)++ | src/core/Main.pm:
Don't treat an option prefix followed immediately by a digit or period as an option (it's probably a negative or radix-notation number)
04:35
05:00 pmichaud joined 05:02 SHODAN joined 05:47 contingencyplan joined
dalek rrot/green_threads: 4e347b1 | bacek++ | / (5 files):
Fix c++ build
05:53
dukeleto bacek++ the magic coding robot is back!
05:56 TiMBuS joined
moritz \\o/ 05:58
dukeleto fractured his foot :(
moritz dukeleto: oh noez, how did you manage that? 05:59
moritz wishes a swift recovery/healing
dalek kudo/nom: 642e789 | (Geoffrey Broadwell)++ | src/core/Str.pm:
Delete trailing whitespace
dukeleto moritz: fell off an Old Man Of The Desert. Didn't have my hooks in deep enough... 06:00
sorear dukeleto: how is "leto" pronounced? (curiousity) 06:02
cotto says leet-o 06:03
dukeleto, did you get a cast out of the deal? 06:08
06:12 contingencyplan joined
dukeleto sorear: lee-toe 06:15
cotto: got a temporary boot thing. need to get an xray tomorrow
www.slideshare.net/BrendanEich/splash-9915475# 06:28
very interesting, some slides about multi-language vm's that are just strawmen
dukeleto must sleep
07:59 jsut_ joined 08:07 lucian joined 08:16 lucian joined 09:08 mj41 joined
nine Good morning, #parrot 09:27
moritz good am, 9
dukeleto ~~ 11:24
11:39 Psyche^ joined 12:17 whiteknight joined
whiteknight good morning, #parrot 12:18
Interesting article about GC in .NET: samsaffron.com/archive/2011/10/28/i...-collector
moritz whiteknight: interesting thing is, if you have such GC pauses, it will show if measure both the average and the standard deviation of the page load time 12:29
but if you just measure the average, and it doesn't happen very often, it will drown in the noise
whiteknight yes, assuming your profiler is including the GC pauses
if they happen after the request, like the article suggests, you wouldn't even see them in a naive measurement
moritz well, they wrote they noticed slow page loads 12:30
so it's the page load time you have to measure
whiteknight it's interesting to me that the .NET GC has only three generations 12:31
it's also interesting to me that they have an eventing mechanism to warn the program when a full GC run is about to start 12:32
that's something that we could definitely have (after the green_threads merge) but that I would have never thought about 12:34
12:43 bluescreen joined 12:56 nbrown joined 13:00 bluescreen joined 13:06 pbaker joined
lucian whiteknight: it's not that useful, generally 13:24
java also has one, and it's rarely used
whiteknight I didn't suspect it would be very useful. But I didn't think about it before and it will be possible soon
lucian sure 13:25
dalek rrot/green_threads: 713dd02 | Whiteknight++ | config/gen/makefiles/root.in:
my old nemesis, checkdepend.t.
13:26
lucian it's useful as a stopgap if the gc has ridiculous pauses
whiteknight usable eventing opens up a lot of doors for us in the future
even if not all the doors are worth opening
14:16 SHODAN joined
nine whiteknight: fixed that dependency already :) 14:46
whiteknight what dependency? 14:56
nine the missing events.h in green_threads 14:57
fixed it in my repo this morning
dalek rrot/green_threads: db1e323 | Whiteknight++ | / (2 files):
code cleanup in scheduler.c. Add const to give the optimizer a fighting chance. Remove some dead code
15:02
rrot/green_threads: 78459c0 | Whiteknight++ | src/scheduler.c:
remove CX_DEBUG flag and all related debugging messages. Most of these are old and not in places that make sense for the current system. We can re-add in debugging/dumping functionality later as needed
15:02 RobertLJ joined
whiteknight hmmm... I found some bugs in scheduler.pmc that are worrisome 15:08
it is clearly not being well tested
nine something I could have a look at? 15:09
whiteknight yeah, I'm going to commit a fix here in a minute 15:13
in the active_tasks method, the call to Parrot_pcc_invoke_method_from_c_args is all wrong 15:14
and wrong in a dangerous way
since we're returning a PMC from the method call, it needs to be &task, not task
and we need to initialize it to PMCNULL first, in case the GC tries to mark the pointer before it has been properly initialized 15:15
(these are the kinds of things you learn after having spent a lot of time refactoring PCC and GC, not things that are obvious)
it *really* bugs me that the scheduler is using string messages to coordinate GC pauses between threads 15:20
That part of it is going to change, if nothing else does
actually, those things are dead code 15:21
nine Have not even looked yet at the messaging stuff 15:22
whiteknight some of it is dead, I'm removing the crap now
well, some of the crap 15:24
there is lots of crap
mls hi parrot 15:25
I've got an imcc question
whiteknight hi mls. We've got IMCC answers
mls great! 15:26
whiteknight and most of them are "because it sucks"
mls awww
whiteknight :)
what's the question
nine scheduler.pmc: "Implements the core concurrency scheduler". Not true at all...the pmc is mostly used as data store for the scheduler implemented in src/scheduler.c
mls in pbc.c: build_key there's a "if key is a register, the original sym is in r->reg" comment
whiteknight nine: eventually, we should refactor it so that the two are closer
mls and a "if (r->reg) r = r->reg" afterwards 15:27
whiteknight mls: yeah, that seems very poorly worded
mls that leads to a miscompilation if the register is used in a .lex
nine whiteknight: if we want the HLL to be able to influence the scheduler, we should probably move the implementation into the pmc
mls cause in that case ->reg points to the lex symreg and reg->color is the string entry of the lex name 15:28
whiteknight nine: We need a richer and faster API than either vtables or methods can provide. What we do need to do is expose more of the CX API through the scheduler PMC
mls: do you have a code example where this pops up? 15:29
mls sure... pasteing...
whiteknight nine: look at the PackfileView PMC sometime as an example. It's basically a thin wrapper around the packfile API
mls gist.github.com/1322542 15:30
nine whiteknight: will do
mls whiteknight: the lines are needed for something, deleting them makes hash.t fail 15:31
whiteknight mls: ugly. I can see how that would be a problem 15:32
mls: Can you do something like $S2 = $S0, set $P0[$S2], "TEST"
mls yes, that'll work, but I ran into it in generated code (rakudo to be specific ;) ) 15:33
So I prefer to fix it in imcc ;)
whiteknight yeah, I just wanted to see what was causing it. So it seems like it's an issue with symreg refcounts or something?
mls no
whiteknight no, so we're actually losing the original symreg reference? 15:34
mls no, we're not losing anything
15:34 pbaker joined
mls .lex entries are chained via ->reg 15:34
15:35 pbaker joined
mls but we mustn't use the lex symreg in this case 15:35
whiteknight mls: oh, I didn't know that about .lex
mls I'll debug why we need that code at all
whiteknight mls: It seems like ->reg is being overloaded too much.
maybe we add a new field to SymReg and use that for .lex instead? 15:36
mls there is probably some whay to identify that the symreg is a .lex entry 15:38
whiteknight yeah, we can add a flag if we need 15:39
I do wonder what that code is for, and how it affects hash.t
somewhere, it seems like we're relying on something we shouldn't be
dalek rrot/green_threads: 9ddac31 | Whiteknight++ | src/pmc/ (2 files):
cleanup Scheduler.pmc and Task.pmc. Add const for the optimizer. Fix a bug in Scheduler.active_tasks() involving a bad PCC call.
15:40
rrot/green_threads: 524fd09 | Whiteknight++ | / (5 files):
rename Parrot_task_current to Parrot_cx_current_task for pleasantness. Remove some old, dead, message-related code.
mls seems to work if I change the if statement to: r->reg && (r->reg->type & VTCONST) == 0 15:43
nine whiteknight: why did you comment out the code in thawfinish instead of removing it? 15:45
whiteknight nine: because I wasn't sure if we needed it for something. I didn't want to delete the vtable outright without checking first 15:46
mls: that seems a little closer to correct
15:46 GodFather joined
whiteknight mls: if that fixes your code and doesn't break any tests, ship it. We can figure it out later 15:46
nine hmm..... the terminate_requested seems not to be used anywhere, so Parrot_cx_runloop_end is basically a no-op 15:56
whiteknight nice 15:59
the more cruft code we can remove, the cleaner things will be when we need to rebuild all this
or, when we try to refactor thigns
nine There's only one caller of this function. Removed it and running tests right now 16:03
mls whiteknight: got it: link_keys creates copies if the symregs if nkeys > 1. The copy's ->reg entry points to the real register. That's what the r = r->reg is for 16:05
if nkeys == 1, no copy gets created and ->reg may point to the .lex
tadzik dukeleto: ping 16:06
nine loves parrot's test suite 16:09
16:20 fperrad joined
dalek rrot: dc64ce8 | mls++ | compilers/imcc/pbc.c:
fix miscompilation if a register is used in a .lex and also used as a key
16:27
rrot: 09210aa | mls++ | frontend/pbc_dump/packdump.c:
fix pbc_dump's key display, VTABLE_get_integer() seems to get the register from the current context
cotto ~~ 16:38
dukeleto tadzik: pong 16:39
nine: what do you love about the test suite?
tadzik dukeleto: what's todo re tasks now? 16:41
nine dukeleto: that it catches pretty much all of my mistakes. Forgot make headerizer? Test catches it 16:42
dukeleto nine: indeed, we have a thorough test suite :)
tadzik: we need to make sure we have at least 5 tasks in each category 16:43
whiteknight many brave men and women gave their lives so we might have this valuable tool
dukeleto tadzik: training and translation need some task ideas
nine I feel confident enough to clean up code relying on the test suite to show me if I am correct 16:44
dukeleto nine: great to hear. thanks so much for all your work! 16:45
nine :) my pleasure 16:46
dukeleto tadzik: and we need to expand the tasks to use the task template. GCI students need a lot of direction 16:48
tadzik: i am working on expanding a task as an exampel 16:50
example, even
16:50 jsut joined
dukeleto tadzik: i just expanded one of the UI tasks 16:56
tadzik ok 16:59
17:09 pbaker joined 17:17 SHODAN joined 17:27 zby_home joined
whiteknight if we get accepted, the tasks are all going to have to be moved into melange, and we can expand them there 17:58
or, do most of the expansion there. Right now I think it's good enough to just have ideas
dalek kudo: b2cd763 | coke++ | t/spectest.data:
track failures, run (fudged) tests
18:06
18:19 contingencyplan joined
dalek kudo/nom: 087a68e | moritz++ | tools/build/Makefile.in:
[build] when cloning roast, set it up for committing too

  [Coke]++ for complaining; I too found the old
behavior inconvenient, but never enough to take action.
18:37
18:51 jsut_ joined
dalek kudo/nom: 1be6534 | moritz++ | src/core/Str.pm:
Speed up Str.succ and .pred

  ... by using natively typed variables, and avoiding calls
in favor of nqp:: opcodes
19:05
dukeleto ~~ 19:22
19:27 soh_cah_toa joined 19:37 zby_home_ joined 20:31 bluescreen joined 21:01 benabik joined
benabik So I leave my laptop overnight and I come back to a message that OS X has run out of room for application memory… My IRC client was up to 50 GB! What were you all doing? 21:04
21:20 rfw joined
dukeleto ~~ 21:53
21:59 bluescreen_ joined
dalek p/bigint: d548c21 | jnthn++ | / (126 files):
Bring in libtommath bigint library. Build it and link it all into an nqp_bigint.ops file (which is just a stub at the moment).
22:03
p/bigint: bcf7a04 | jnthn++ | src/6model/sixmodelobject.h:
Extend the REPR API a little in preparation for supporting inlining of more complex types in objects. Most immediately this is for bigint support, but it's also the basis for compact structs, and later compact arrays and nested structs in NCI.
p/bigint: 65f926d | jnthn++ | src/6model/reprs/P6int.c:
Fix copy-pasto in an error.
p/bigint: 22f49c1 | jnthn++ | src/6model/ (2 files):
A little infrastructure for dynamically registering 6model representations outside of the 6model core.
p/bigint: fcd90db | jnthn++ | / (4 files):
First cut of a P6bigint REPR, plus bigint library initialization code. With this, we can declare a type with repr('bigint') and have it box/unbox native ints; it's allocating the libtommath big integer under the hood.
p/bigint: 9491f38 | jnthn++ | tools/build/Makefile.in:
Make sure bigint ops file is copied to dynext dir.
p/bigint: 2dcba38 | jnthn++ | src/ops/nqp_bigint.ops:
Add a few ops to check out some basic arithmetic functions; seems to work.
22:22 SHODAN joined 22:35 bluescreen joined 22:36 bluescreen_ joined
dalek kudo/nom: 9c6aedb | jnthn++ | src/Perl6/Actions.pm:
Fix double-evaluation bug in | found by japhb++.
22:37
22:56 nbrown joined
dalek p/bigint: f75ce8f | jnthn++ | src/ops/nqp_bigint.ops:
String to bigint, bigint to string.
22:58
23:39 whiteknight joined
whiteknight good evening, #parrot 23:45
dukeleto whiteknight: howdy
whiteknight hello dukeleto. how are you doing tonight? 23:46
dukeleto whiteknight: meh-tastic, but trying to be productive 23:47