Parrot 3.3.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today” | Accepted GSoC Students announced! | GSoC student information emails coming out soon
Set by moderator on 26 April 2011.
bacek_at_work seen benabik 00:04
aloha benabik was last seen in #parrot 5 hours 7 mins ago saying "I was fascinated by Hurd for a while... Then I found MINIX. Then I decided I don't have enough free time to make either really worth while.".
whiteknight Tene: I'm extremely interested in all that information. Both your prior attempts and your future ideas 00:06
Tene whiteknight: Hm? Interested in how I was screwing something up? 00:07
whiteknight yes
that kind of experience is extremely valuable
helps us to avoid mistakes going forward 00:08
or, avoid the same ones. I plan to make new, novel mistakes
lucian r.e. benabik's last comment. an exokernel parrot port would be awesome 00:10
hmm, interesting conversation on freenode#pypy 00:35
ionmonkey may spell the death of nanokit
jit
cotto_work interesting
It seemed like Firefox was its big user. 00:37
dalek rrot/m0-prototype: c5e1b43 | cotto++ | t/m0/m0bgen.t:
add some subs to calculate the size of mob chunks
00:45
whiteknight I know FireFox was the big user 00:46
and if nanoJit dies, we won't be using it for PArrot
unless we want to try to adopt it wholesale for Parrot 00:50
but that seems like a waste
cotto_work: I think nanoJIT was made expressly for FireFox 00:52
00:52 whiteknight left
cotto_work tonight, I generate valid m0 bytecode 00:54
lucian afaik, Adobe started nanojit, and it got forked when mozilla was gifted tracemonkey 00:58
bah, i'm really getting sick of this dissertation. and i'm very likely complaining too much 00:59
cotto_work: that sounds epic 01:05
bah, firefox memory usage is insane (at least on osx) 01:06
i wonder how on earth tomshardware benchmarked firefox to have the least average memory usage
Tene lucian: I have to restart firefox daily to deal with memory usage growing.
lucian on what platform? 01:07
Tene Chrome, however, just uses too much ram constantly.
linux x86_64
Fx 4.something
it wasn't so bad on 3.whatever
lucian chrome does use a lot, yes
but if i close tabs, it shrinks fast
i think firefox has really crappy JS and xpcom GCs 01:08
bubaflub lucian: i've noticed that as well
i'm also on OS X and have to switch between Safari, Firefox, and Chrome for browsing sanity 01:09
i blame flash plugins remaining resident in memory long after they should be dead
01:10 bluescreen joined
lucian i mostly just stick to chrome 01:12
atrodo cotto_work> m0 night, eh? 01:13
lucian bubaflub: hmm, chrome memory usage with 30 tabs < firefox memory usage with 1 tab 01:15
bubaflub lucian: hmmm. i haven't been very scientific about it. i try to close or migrate my tabs consistently. i keep safari for non-flash pages (i have ClickToFlash). i also like the reader feature. 01:16
lucian if you use more than one browser at a time, it's likely they'll each load lots of things 01:17
01:29 benabik joined
benabik ~~ 01:31
01:34 rohit_nsit08 left 01:35 rohit_nsit08 joined 01:36 davidfetter left
bacek_at_work benabik, aloha. How is your gsoc going? 01:39
benabik bacek_at_work: Greetings! Not very much GSoC work yet. Put up an intro blog and a fork of parrot. But I'm trying to finish a couple projects and a term paper. :-/ Finals in 2 weeks, then I get to dig in. 01:41
bacek_at_work benabik, ok. We still have plenty of time :)
cotto ~~ 01:42
lucian, I'm only generating valid bytecode. Running it and generating *useful* bytecode are entirely different matters.
lucian cotto: i see 01:43
cotto but it's an important step
01:44 rurban_ joined
benabik bacek_at_work: Really really looking forward to digging into Parrot. It's what keeps me motivated on the more irritating schoolwork. :-D 01:44
01:46 rurban left 01:47 rurban_ is now known as rurban
lucian benabik: SCHOOLWORK IS EXTREMELY IRRITATING, ISN'T IT? 01:56
benabik lucian: Tell us how you really feel about it. :-D 01:57
lucian i don't want to segfault perlnet
02:29 woosley joined
tcurtis gets to give a lightning talk about his project at the Chicago GSoC meetup next Thursday. 03:12
cotto tcurtis, awesome 03:24
03:27 hudnix left
cotto Hacking in Perl 5 after doing PHP all day is like a breath of fresh air. 03:28
03:36 mtk0 left
cotto Wheee. I found a problem in the M0 spec. 03:42
03:43 mtk0 joined 03:44 lateau joined
sorear Aren't you glad it has a version now? 03:46
cotto That'd matter a lot more if anything could read it. 03:47
03:54 ShaneC joined 03:55 lateau left
cotto dukeleto, ping 04:10
dukeleto cotto: pong 04:12
04:13 bubaflub left
cotto dukeleto, any thoughts on adding type information to the M0 variables table? 04:13
presumably we'll be storing different types in there anyway, so adding explicit information will make the format less opaque 04:15
dukeleto github.com/brixen/poetics 04:59
Native implementation of CoffeeScript on Rubinius
05:17 cotto_work left
dalek rrot/m0-prototype: 8a354c4 | cotto++ | t/m0/m0bgen.t:
make m0b generation code "work"

The code seems to be correct and generates sane-looking results, but it'll be hard to tell if it's actually correct without an actual interp.
05:17
rrot/m0-prototype: f2263b3 | cotto++ | t/m0/m0bgen.t:
finish fake mob generation code, add a batch of failing tests

At this point I'm only marginally confident that the generated M0 bytecode is correct, but I'd much rather start writing the interp than stare at a hexedit some more.
cotto It seems that "false" makes a poor M0 interp. I guess I'll have to write a real one. 05:18
dalek website: tcurtis++ | The adventure begins 05:20
website: www.parrot.org/content/adventure-begins
lucian dukeleto: were you in freenode#coffeescript ?
dalek rrot/m0-prototype: 1339338 | cotto++ | t/m0/m0bgen.t:
update test plan for the M0 interp tests
cotto tcurtis++
05:30 cosimo joined
dukeleto lucian: no, why? 05:35
tcurtis++ # bloggin' 05:36
05:36 lucian__ joined
dukeleto "But maybe if someone provides some nice suggestions, either by email or on #parrot, the Parrot community will be spared this travesty of nomenclature." 05:36
lulz 05:37
msg tcurtis my suggestion for the name is "lollerskates"
aloha OK. I'll deliver the message.
cotto tcurtis, I'm not sure what dukeleto's talking about, but I approve. 05:38
dukeleto cotto: knowyourmeme.com/memes/lollerskates
05:39 lucian left
cotto dukeleto, of course. I'm reading his post now to get the context. 05:39
dukeleto msg tcurtis look how many logos you have to choose from already! knowyourmeme.com/memes/lollerskates
aloha OK. I'll deliver the message.
dukeleto cotto: mea culpa 05:40
msg tcurtis or possibly lalrskate
aloha OK. I'll deliver the message.
cotto Sweet. We'll get an algorithm that was published in the year I was born. 05:41
'80s GC, '80s parser generator 05:42
now all we need is an '80s soundtrack
dukeleto slow and steady wins the race 05:43
KaeseEs cotto: i nominate Powerslave 05:51
05:56 lucian joined 06:00 lucian__ left
dalek rrot/m0-spec: 73df301 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
add a place in the binary format for the M0 version number
06:11
rrot/m0-spec: a36275c | cotto++ | docs/pdds/draft/pdd32_m0.pod:
delete a TODO about where the version should go
06:12
rrot/m0-prototype: 6d5fd46 | cotto++ | t/m0/m0bgen.t:
update m0bgen with version number, make header code more readable
06:16
06:23 particle1 left 06:24 fperrad joined
cotto dukeleto, I'd appreciate an eye on t/m0/m0bgen.t to make sure it's sane. 06:28
dalek rrot/m0-prototype: 0276976 | cotto++ | t/m0/m0bgen.t:
clean up after ourselves
rrot/m0-prototype: 0174b30 | cotto++ | src/m0/m0_interp.pl:
beginnings of the prototype M0 interp
cotto time for sleep.
06:33 rohit_nsit08 left 06:44 theory left 07:15 dod joined 07:36 rhebus joined 07:37 lateau joined 07:45 mj41 joined, cosimo left 07:51 UltraDM joined 07:53 rhebus left 08:01 lateau left 08:35 bluescreen left 08:38 jrt4__ left
bacek ~~ 08:56
08:57 contingencyplan left 09:00 rohit_nsit08 joined 09:06 lucian left 09:08 lucian joined 09:13 lucian_ joined 09:17 lucian left 09:45 rurban_ joined 09:46 rurban left 09:47 rurban_ is now known as rurban 10:09 woosley left 10:23 particle joined 10:38 woosley joined, lucian joined 10:43 lucian_ left 11:24 mtk0 left 11:30 mtk0 joined 11:57 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner 12:06 woosley left 12:09 whiteknight joined
whiteknight good morning, #parrot 12:17
interesting article today about source control: www.troyhunt.com/2011/05/10-command...ntrol.html
12:55 ambs joined
lucian whiteknight: i'm not sure i agree with the last one 12:57
coke_ was that "dependencies" ? I mentally translated that one to "make sure your dependencies are easily installable", not "exist in the vcs" 13:01
13:01 bubaflub joined
whiteknight I've seen it done both ways. 13:02
moritz s/the vcs/a vcs/
whiteknight I had a boss at my last job who insisted on including the whole IDE in svn
coke_ urg?
whiteknight I thought that was bananas, but keeping some libraries in there is nice
In general, it depends. If the dependency is easy enough to get yourself and easy enough to keep up to date, it's no big deal 13:03
coke_ I have a build.xml (ARGH) that I use to fetch all the deps I need. 13:05
whiteknight I think that counts 13:06
coke_ I am "fighting" with developers new to svn who want to include the entire unzipped 3rd party libraries into their own project.
whiteknight I mean, whether you have the dependencies themselves, or a mechanism to fetch the correct ones automatically makes no functional difference as far as I am concerned
where libraries become a problem is if somebody updates to a new version of the lib
13:29 ambs left 13:34 hudnix joined 13:35 lateau joined
whiteknight seen cgaetner 13:37
aloha Sorry, I haven't seen cgaetner.
whiteknight seen cgaertner
aloha cgaertner was last seen in #parrot 30 days 23 hours ago saying "btw, who would be willing to mentor the project? the proposal template ask for that information, I I don't remeber anyone actually mentioning that...".
whiteknight blah
13:44 lucian_ joined 13:47 lucian left 13:48 lucian_ is now known as lucian
whiteknight opbots trust lucian 13:51
slavorg But I already trust lucian
slavorgn But I already trust lucian
whiteknight opbots names 13:52
lucian ? 13:53
whiteknight ??
lucian i was wondering what you were trying to do 13:54
whiteknight lucian: I'm making sure you have ops 13:57
lucian i see
i don't really know what they do :)
whiteknight basically, nothing
but my IRC client sorts usernames with ops at the top, and now I can actually see when you are signed on without scrolling
AND I AM WATCHING YOU
lucian yeah, my client does the same 13:58
I FOUND THE PROBLEM! dammit 14:00
whiteknight what problem? 14:02
14:02 bluescreen joined
lucian in my dissertation demo 14:03
sadly it's hard to fix and i have little time ...
i've had this problem for very long, too
14:07 hudnix left 14:08 hudnix joined 14:09 cotto_work joined
whiteknight when is the demo? 14:10
and will you be videotaping it and sending me a link?
:)
PerlJam whiteknight: ask if there's remote participation. Maybe you can heckle^Wparticipate. 14:11
:)
lucian no remote participation. i'll consider videotaping 14:16
whiteknight I used to love going to dissertations and other presentations when I was in school 14:18
PerlJam whiteknight: I always liked going to the ones that weren't train wrecks. 14:19
when they were clearly not prepared (i.e., their chair wasn't doing his/her job) it was just sad. 14:20
whiteknight My thesis presentation ended up being shorter than I anticipated. I talked too fast and had too few questions 14:21
so that was disappointing 14:22
14:22 Andy joined
lucian mine'll suck immensely 14:23
PerlJam lucian: but you'll get through it, they'll suggest some minor changes, everyone will sign off on it, then party time! 14:25
lucian PerlJam: meh, if i don't fail the year 14:26
whiteknight that's the spirit! 14:28
pmichaud hola, #parrot 14:30
PerlJam greetings pmichaud!
whiteknight good morning, pmichaud
pmichaud just a quick note that I'm getting some very strange timings on the core.pm test that bacek++ cited earlier today 14:31
whiteknight strange in the good way?
pmichaud no
whiteknight damnit. It's never the good way
pmichaud first time I did the test, core.pm with Parrot 3.0 took 900s to compile
I then tested with Parrot 3.3, took 300s. I'm thinking "wow, 66% speedup!"
I then recompiled core.pm with Parrot 3.0, it took 270s the second time 14:32
jnthn__ lolWUT?!
PerlJam vagaries of GC?
pmichaud so, I rebooted, untarred a fresh copy of Rakudo 2011.01 (Parrot 3.0), rebuilt and did the core.pm test: 200s
whiteknight is that Parrot 3.3.0 with --gc=gms?
jnthn__ pmichaud: Some adaptive CPU thingy? 14:33
pmichaud yes, 3.3.0 with --gc=gms
whiteknight pmichaud: my suggestion is to keep compiling, because it gets faster every time
jnthn__ lol
whiteknight pmichaud: when it gets down to 10s, stop touching it
:)
PerlJam how many GC runs does parrot go through when compiling core.pm?
pmichaud PerlJam: I don't know
jnthn__ fwiw, I've found nqp test times quite stable. Though it's a much smaller workload...
whiteknight PerlJam: that is a very good question. I have to assume GC churn there is quite high 14:34
PerlJam that's what I'd guess too
jnthn__ Yeah, but gen-gc can run regularly...the nursery is meant to be small.
whiteknight I'd suggest profiling it, but there may not be enough time left in the universe
jnthn__ Compared to the entire working set.
pmichaud I don't have an easy way to count the gc runs for Parrot 3.0 14:35
whiteknight what we could do is insert some kind of stderr debugging statement in the function that runs it
print out a count
pmichaud that starts to get messy :(
PerlJam pmichaud: also, did you only have the one really long run? Maybe something else was going on on your system at that time?
whiteknight I never said it would be pretty, but for a first blush it will give us a general ballpark count 14:36
pmichaud PerlJam: that's what I'm guessing now -- something else must have been running on the system
PerlJam: but even so, the difference between 300s and 200s is pretty big also 14:37
whiteknight pmichaud: yes, that is pretty big. We would expect some small regressions because of the way we are handling packfiles now, but that can't be adding up to 33% of the total
I'm talking about a handful of new PMCs in the old generation 14:38
so 100s difference there is pretty extreme
pmichaud just ran again with 3.0: 207s 14:41
trying 2011.04/3.3...
PerlJam you'll have to do a lot more runs to get anything statistically significant ;) 14:42
pmichaud as long as I have 3.0 runs that are faster than 3.3 runs.... I think I can say that 3.3 isn't a speed improvement over 3.0 :-)
PerlJam in anycase if your timeline is accurate it went 900 300 270 200 ... seems like a decreasing trend to me. Whatever was running during the 900s run was trailing off. 14:43
pmichaud if any(@parrot_3_0) < all(@parrot_3_3) { say "3.3 isn't faster"; }
I rebooted after the 300, yes 14:44
also, it's not quite that simple
because
whiteknight I don't think there is an expectation that 3.3 is faster than 3.0 --gc=gms
pmichaud 3.0 is gc=ms2 14:45
gms didn't exist in 3.0
whiteknight hmm, I'm muddling up my timelines
pmichaud I'm saying that 3.3 with gms isn't faster than 3.0 with ms2
PerlJam do any profiling tools exist for GC? Even something like counting the marks/sweeps/whatever
pmichaud at least, for spectests and for my limited testing of core.pm
PerlJam: there are some interpreter variables that can be queried 14:46
but those were broken for much of the past six months
whiteknight that's a weird result because we were seeing significant performance improvements in various Rakudo benchmarks when GMS landed.
pmichaud I don't remember when they got fixed
moritz had the feeling (but no data to prove it) that rakudo on parrot got slower since 3.1 or 3.2
whiteknight moritz: that's possible. more data would be very nice
pmichaud whiteknight: right, that's why I've been bringing it up
PerlJam moritz: oddly I had the same feeling (but again, no evidence)
pmichaud I ran some simple tests on the 2011.04 star release versus the 2011.01 star release because I wanted to say "Rakudo Star is now X% faster" 14:47
but I couldn't do that
because it wasn't. :()
whiteknight I could very well be underestimating the performance effects of some of the IMCC and packfile changes that have happened
that's probably the biggest changeset that has landed recently
moritz should start up his otherwise unused desktop computer when he's home, and automate some speed tests
pmichaud 3.3 retest: 289s 14:49
whiteknight okay, can we get a timing of 3.2?
pmichaud sure
it'll take a bit to build Parrot 14:50
whiteknight if that's as fast or faster than 3.0, we can start to expect the imcc/packfile changes of being the culprit
If the problems started before 3.2, we have a different set of things to look at
pmichaud here's what I propose to do (after I get a few house errands taken care of): 14:52
1. Run the core.pm test four times for each of 3.0, 3.2, and 3.3
2. Throw out the slowest time of each
3. Compare (a) the fastest time of each and (b) the average time of each 14:53
the other tests I've been running are t/spec/S05-mass/rx.t and t/spec/S32-trig/sin.t
is there a table or easy way to find out what the default gc is for each of the parrot versions? 14:54
moritz it's ms2 for 3.3 and older
pmichaud well, only back until ms2 was created, yes?
when did ms2 land?
moritz the switch to gms as only after the 3.3 release
pmichaud rakudo requests gms for 2011.03 (3.2) and 2011.04 (3.3), though 14:55
moritz yes
pmichaud so, 2011.01 is using ms2, 2011.02 is using m2, 2011.03 is using gms, 2011.04 is using gms... is that right? 14:56
(does that sound right?)
s/m2/ms2/
jnthn__ has a machine now building all <2011.02 2011.03 2011.04> 14:57
moritz pmichaud: I think that's right, yes
15:02 lucian left
pmichaud first run of 3.2: 262s 15:02
(faster than 3.3, slower than 3.0) 15:03
running again 15:04
15:14 dmalcolm joined
pmichaud 3.2 second run: 262s 15:16
15:17 ambs joined 15:20 UltraDM left
whiteknight okay, so 3.2 is about midway between 3.0 and 3.3? 15:22
what I really need to see is a graph 15:27
my powers of number-understanding are poor today
PerlJam Has the chief benchmark for GC performance been "time to compile rakudo"? 15:28
whiteknight I can't say that there is a single "chief benchmark" unfortunately 15:30
rakudo build and spectest run times are high on the list
PerlJam so, no one has built a test suite designed to stress the GC in various ways? 15:32
tcurtis ~~ 15:35
whiteknight PerlJam: nosir
There may be some things in the examples folder that have the side effect of describing GC performance, but no benchmark explicitly designed to stress it 15:36
pmichaud besides, I'm not necessarily pointing at the gc
I do know that a new gc was implemented, and several of us "observed" significant rakudo performance improvements as a result 15:37
plobsing we have examples/benchmarks/gc_*
whiteknight pmichaud: well, to narrow the GC out of contention, we could run 3.3 with --gc=ms2, same as what 3.0 used
PerlJam pmichaud: no, just the GC switch across the versions you were looking at made me think of it.
pmichaud but now when I try it in 2011.04, I'm not seeing any improvements -- in fact, it's arguably 40% worse than it was in January
15:37 hercynium joined
pmichaud whiteknight: I did that already (by accident) -- it was *way* worse 15:37
whiteknight okay, so that rules out GC algorithm 15:38
so we are seeing other slowdowns
including slowdowns before and after 3.2 it seems
pmichaud whiteknight: when I was building the 2011.04 star release, it didn't have the --gc option in its configure, thus Parrot got built with its default (ms2). And the spectest run took 55m instead of 30m
whiteknight ouch
gms for the win, then
tcurtis aloha, msg dukeleto the lalrskate idea didn't seem too great to me, but then I realized I could name a tool for outputting the parsing table "lalrcat".
aloha tcurtis: OK. I'll deliver the message.
pmichaud so gms is definitely better than ms2 for the spectest, at least for that one test I ran 15:39
but we're still heading in the wrong direction w.r.t. parrot speed, it seems :(
whiteknight I think we definitely need to review those imcc_compreg_pmc and packfile_wrap branch merges
pmichaud third run of 3.2: 262s 15:40
so it seems that 3.2 is consistently 262s :-)
whiteknight I don't want to undo those merges, but if we can narrow down to that being a part of the problem we can focus our optimization efforts
pmichaud (core.pm)
okay, I'll start my long string of test runs now
whiteknight that's I really appreciate it
15:40 contingencyplan joined
whiteknight pmichaud: if we can get a test before the imcc_compreg_pmc merge, that should be sufficient. packfile_wrap went in right before 3.3 15:41
so the difference between those two should give us the aggregate effect
pmichaud I'll start with the releases first
whiteknight okay
pmichaud that gives us a good, stable baseline that makes it very reproducible for everyone that wants to try
(also, it's what our collective users are seeing) 15:42
whiteknight timings I saw for imcc_compreg_pmc didn't look like they were any worse, I don't know that packfile_wrap was ever benchmarked
at least not aggressively
15:42 dmalcolm left
whiteknight IMCC man, let me tell you about IMCC. Every night I pray for god to light it on fire 15:42
and every morning, disappointment 15:43
plobsing whiteknight: (re: PI) yeah, runcore_optable_fixup() is just wrong. That was part a mechanical translation of code whose underlying assumptions were broken by dynop mapping. You'll need to figure out a different way to accomplish what that code does. 15:44
whiteknight plobsing: thanks for looking at it. I figured that was the problem, and I have no idea what to do differently. I still don't completely understand what PI does in all cases 15:45
plobsing: tracing through it is a bit of a nightmare sometimes
plobsing That code is supposed to maintain the probe hooks in sync with the op table of instrumented interp so the intruments know what an executed op is. 15:46
whiteknight how is it inserting those probe hooks, a copy of the optable? 15:47
plobsing It assumes the op table works the old way and only grows when we load new oplibs.
but it also messes with the instrumented interp for some reason 15:48
whiteknight: I think it is a runloop thing
whiteknight plobsing: I've already ripped out the instrumentgc pmc, because it was causing massive fail with the new GC system. I may have to pull out instrumentruncore too
plobsing whiteknight: what would that leave?
whiteknight That is, I'm trying to get to some kind of stable core of stuff that "works" 15:49
I want a baseline
and I have no idea what would be left
class hooks, I think. Although those tests look fail too
the bad news is that cotto and soh_cah_toa are going to need to re-evaluate some of the entries in his GSoC timeline 15:50
plobsing if there were one things PI should do, regardless of all others, it is intrument the runcore.
whiteknight because we were going on the assumption that PI was mostly workable and needed just a few tweaks to be fixed
but if it's making some hugely wrong underlying assumptions, that's a big problem
plobsing whiteknight: I don't think PI is suitable for the debugger project. It does different things. 15:51
dukeleto whiteknight: sounds like perhaps PI should not be used for the debugger project, as plobsing++ mentions
whiteknight inserting hooks and probes into the runcore wouldn't be helpful for the debugger?
dukeleto: at the moment, it can't be used because it doesn't work
if it were working, the introspection capabilities are quite interesting 15:52
plobsing whiteknight: yes, but the way PI does it is *way* more flexible than what a debugger needs
dukeleto whiteknight: yes, I gathered that. I don't want a student to be blocked by their dependencies not working.
if the new debugger is written in such a way that it could use PI down the line, when it works properly, that may be the best course of action here 15:53
whiteknight plobsing: so we shouldn't use a base library because the base library provides a superset of functionality?
plobsing from my perspective, it would be easier to just write a new, special-purpose instrumentation system than to resurect PI.
whiteknight plobsing: I am coming to that conclusion now too. Back when the project was proposed, I thought the effort to resurrect PI would be much lower 15:54
plobsing Please do not construe this as a commitment on my part to write such a system.
whiteknight clearly it's turning into a much larger project than is feasible
I think the better course of action is to have soh_cah_toa borrow code liberally where necessary, but to write his own system from the ground up
plobsing Again, I think, from the perspective of a debugger, the way PI does things is too general and not the most direct. 15:57
whiteknight that's fine. At this point it is up to cotto and soh_cah_toa about how to proceed
but clearly, PI is not a viable option right now
damnit. Not the result I was hoping for 15:58
15:59 theory joined
whiteknight brb food 16:00
jnthn__ pmichaud: I build the 2011.0[432] releases of Rakudo with their chosen Parrot versions. I then did three runs of core.pm compilation. (OK, I didn't...a script I wrote did :-)). Results: gist.github.com/953615 16:02
pmichaud interesting.
I have my script running now... we'll see what it reports
how about 2011.01? 16:03
dukeleto jnthn__: that looks quite nice
jnthn__ pmichaud: Updated the gist with the script, fwiw. 16:04
dalek nxed: r970 | NotFound++ | trunk/winxedst1.winxed:
fix bug in new qualified introduced in recent refactor, issue 24, plobsing++
jnthn__ pmichaud: running a 2011.01 now 16:05
pmichaud: This is in a powerful and lightly loaded 64-bit Linux box.
s/in/on/
moritz would love to get similar numbers :-) 16:06
jnthn__ I...don't use this box for that much :) 16:08
Maybe I should :) 16:09
dalek nxed: r971 | NotFound++ | trunk/pir/winxed_compiler.pir:
update installable compiler
16:18 dod left
jnthn__ pmichaud: gist.github.com/953615 updated with 2011.01 times. 16:20
pmichaud: First time there's a way-out-there figure.
But other two are very close.
pmichaud my numbers will start to come in soon 16:31
jnthn__ pmichaud: btw, I'm two test fails off merging ctmo branch in nqp repo. After that, it's "just" installation issues. 16:35
pmichaud: Then I can dig into rakudo/nom :)
Expect to fix those fails today :) 16:36
whiteknight jnthn__++
Those numbers seem to be exactly the opposite of what pmichaud is reporting 16:37
if I'm reading it correctly
pmichaud yes, they are
whiteknight there's a chance that GMS might be badly behaved on systems with various limitations 16:38
that is, it's not really tuned, much less tuned for any particular platform
what we might need to do is start putting together a collection of valgrind reports 16:39
pmichaud I'm re-running my tests now. You can watch the updates (as I make them) at pmichaud.com/sandbox/rak-bench-1.txt
16:40 rohit_nsit08 left 16:42 davidfetter joined
dukeleto Smalltalk on Javascript: github.com/NicolasPetton/jtalk 16:45
what will those kids think of next?
moritz parrot on JS? 16:47
actually I've read about a protype C-to-javascript compiler that could run (modified) Doom in the browser 16:48
maybe we could port parrot to it
and then run on top of V8, to speed things up
SCNR
plobsing moritz: emscripten? 16:49
NotFound: the -I flag on winxed doesn't seem to be working any more 16:51
dalek rrot: dc5f4cf | mikehh++ | src/call/pcc.c:
add missing ASSERT_ARGS
16:56
rrot: cccbf37 | mikehh++ | src/debug.c:
add missing ASSERT_ARGS
rrot: 8b0397b | mikehh++ | src/debug.c:
add missing documentation
rrot: e3ecaf8 | mikehh++ | src/gc/gc_ms.c:
add missing documentation
16:59 dodathome joined
plobsing msg kid51 can you try the latest tt1931-nci-parameters-deprecation on your machine? I suspect it may work. 16:59
aloha OK. I'll deliver the message.
17:00 mj41 left
cotto_work ~~ 17:11
17:11 whiteknight left 17:23 dmalcolm joined
cotto_work That's too bad about PI, but it definitely does about 500% of what a mere debugger would need. 17:25
well, did
17:26 whiteknight joined
cotto_work hio whiteknight 17:27
whiteknight hio
NotFound plobsing: I haven't used it recently. Are you using the installed version or the source tree?
cotto_work I saw that GSoC will be a bit more work for me and soh_cah_tao than it first looked like it'd be.
whiteknight cotto_work: maybe not. Readjust the schedule 17:31
you're starting at a lower point, so will end up at a lower point maybe
pmichaud bench mark results after two trials: pmichaud.com/sandbox/rak-bench-1.txt 17:34
whiteknight pmichaud: okay, so it looks like 3.3 is faster than 3.0 17:36
dalek nxed: r972 | NotFound++ | trunk/examples/Mysql.winxed:
update example Mysql
pmichaud no
3.3 is *slower* than 3.0
should I change the signs on the percents?
whiteknight oh, sorry. the percents surprised me 17:37
okay, so 3.1 was the slowest
pmichaud yes
whiteknight okay okay.
pmichaud looks like something happened between 3.0 and 3.1 to really slow things down
and then maybe gms is recovering some of that speed loss
should I use +26.0% to mean "26% slower?" instead of "-26.0%"? 17:38
cotto_work You could use % of 3.0, i.e. 126%
whiteknight it doesn't matter now that I know how to read it
okay, 3.1 was pretty big. Looking at news I see a few items that could potentially cause slowdowns 17:39
pmichaud what will be easiest for others? I plan to post this to the m/l
cotto_work Yeah. More important is that we figure out how to act on it.
whiteknight "Exception PMCs are now subclassable from PIR"
"Improved GC performance on low-memory systems"
"Improved GC latency"
those things all raise red flags for me
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#16100) fulltest) at 3_3_0-86-ge3ecaf8 17:40
Kubuntu 11.04 amd64 (g++)
PerlJam As long as you put a note that say "negative percentages are slower" it should be fine IMHO. 17:44
pmichaud I switched to cotto++'s suggestion
17:45 rurban_ joined
moritz currently has his desktop machine set up to measure rakudo compilation times for 4 releases, three times each 17:47
cotto_work moritz++
17:47 rurban left 17:48 rurban_ is now known as rurban
dalek rdinal: c2ad937 | (Kim, Daehyub)++ | Rakefile:
fix: coding miss in Rakefile:335
17:50
rdinal: ef84b79 | (Kim, Daehyub)++ | / (3 files):
Integer#pred
rdinal: 3fa71e7 | dukeleto++ | / (3 files):
Merge pull request #5 from lateau/master.

fix and add
dukeleto wow, merge buttons really do make merging pull requests dead simple
wow, i think cardinal is alive 17:52
moritz fwiw moritz.faui2k3.org/tmp/time-rakudo.txt is the script that I use
pmichaud The scripts I'm using: pmichaud.com/rakbench 17:53
moritz: what part of your script switch rakudo/parrot versions? I'm not seeing it 17:56
moritz pmichaud: oh shit, I forgot that part :(
pmichaud: thanks for pointing it out :-)
pmichaud this is one reason I prefer to work from the tarballs 17:57
also we don't have to worry about getting the correct version of the spectests :-)
moritz I'll abort after the current run, and edit the output data to indicate the actual version it used
pmichaud: then you can still forget a chdir - it's really one commit each :-) 17:58
s/commit/command/
dukeleto is going to miss #ps today 17:59
coke_ fights with svn and wishes that git had a prayer of working out here.
cotto_work dukeleto: do we need to reconsider when we have #ps? 18:00
whiteknight has duke been missing it regularly? 18:01
dukeleto cotto_work: not on case of me. I need to see an accountant today to get my state taxes done, before the taxman starts stalking me. 18:02
coke_ lateau?
18:02 lateau left
coke_ ... wow. 18:02
dukeleto coke_: ?
coke_ just seeing if aloha knew him.
aloha, lateau?
aloha coke_: No clue. Sorry.
18:06 rohit_nsit08 joined
pmichaud Results after three trials (file location has changed): pmichaud.com/rakbench/results-20110503.txt 18:07
whiteknight pmichaud: I think that's plenty of data, thanks 18:09
pmichaud: no need to keep wasting cycles. The trend is clear
pmichaud I'm a little suspicious of that 254, though. 18:10
since the others both came out to 278 +/- 1
(however, earlier today when I was running the same test I was down at 200.... so, *something* is weird about the 2011.01 timings
besides, cycles are cheap, and I have plenty of machines :) 18:11
whiteknight pmichaud: okay :) I won't tell you how to spend your cycles 18:12
so there was clearly a major slowdown between 3.0 and 3.1, and another slowdown between 3.2 and 3.3 18:14
that's good. That narrows it down and shows us that we have two separate slowdowns to deal with 18:15
pmichaud oh! does the compiled parrot have any sort of random seed in it?
e.g., for hashing or the like?
I wonder if some of the differences I'm seeing in the 2011.01 test have to do with having compiled different parrot binaries in previous tests 18:17
i.e., perhaps some parrot binaries are faster than others...?
jnthn__ I thought the hash seed was picked at startup and stashed in the interpreter.
pmichaud I thought so too... but I'm really curious how I got those ~200s numbers earlier.
jnthn__ Yeah, me too :/ 18:18
pmichaud because I'm not seeing them now.
and they were pretty consistent then
I guess I should start looking at a new desktop too, since everyone seems to be getting much faster compiles than I am :) 18:23
whiteknight here's your sign 18:24
I need to get a new laptop myself eventually. It still has plenty of power but my son keeps throwing it onto the floor 18:28
the one hinge is broken again, and the monitor flickers and makes a buzzing noise
I picked it up off my lap yesterday, and found a screw. I don't know where it came from 18:29
I've started hiding the laptop under the couch so my son can't find it
18:30 ShaneC left
whiteknight it's only a matter of time 18:30
cotto_work pmichaud: Parrot does pick a random hash seed at startup. You can fix it by passing --hash-seed=1234 to the parrot executable 18:34
pmichaud cotto_work: yeah, I'm not sure that's it. 18:41
it feels more like it has to be something that's in the executable
either that or I just ended up with a string of lucky seeds
but also, only the 2011.01 build seems to show significant variation. All of the other builds only have a variation of ~2s 18:42
I have another script running now to test multiple runs of the 2011.01, both rebuilding and not rebuilding parrot in between
moritz (355 - 338) / 355 18:43
aloha 0.047887323943662
whiteknight pmichaud: maybe a test script to randomize the order you test things in? Maybe you're getting into a really weird cache situation at the beginning of the loop
moritz that's my max variations for 2011.01
whiteknight I'm just throwing out weird ideas
I would hope that a single run of the program with fixed parameters would be a little bit more deterministic than that 18:44
18:44 ShaneC joined
pmichaud whiteknight: yes, I'm wondering about determinism also 18:47
but repeatability is important too
anyway, we'll see what this latest script gives me 18:48
18:49 jevin left
whiteknight pmichaud++ 18:55
plobsing NotFound: I tried both 18:59
19:00 jevin joined, ShaneC left 19:08 mtk0 left, mtk0 joined
pmichaud pmichaud.com/rakbench/results-20110503.txt # updated with timings from sin.t test 19:08
jnthn__ pmichaud: #phasers is on at the moment, btw :) 19:10
19:12 bubaflub left
whiteknight I really need to attend the #phasers meeting more regularly 19:21
19:23 Coke__ left, Coke joined
cotto_work #ps in 60 19:28
19:31 Coke left, Coke joined 19:33 bubaflub joined 19:38 Coke left, Coke joined 19:46 rohit_nsit08 left, Coke left, Coke joined
cotto_work anyone feel like writing an M0 disassembler? 19:50
benabik Sounds fascinating, but I lack tuits. 19:51
KaeseEs .goog M0 spec
i thought there was a phenny instance itc :(
tadzik .g M0 spec
bah 19:52
19:53 Coke left
cotto_work in the m0-spec branch in docs/pdds/draft 19:53
19:53 Coke joined
cotto_work aloha: m0 spec? 19:54
aloha cotto_work: Search me, bub.
cotto_work aloha: M0 spec is docs/pdds/drafts/pdd32-m0.pod in the m0-spec branch
aloha cotto_work: Okay.
cotto_work aloha: m0 spec?
aloha cotto_work: m0 spec is docs/pdds/drafts/pdd32-m0.pod in the m0-spec branch
cotto_work #ps in 32 19:56
get those reports posted!
19:56 rohit_nsit08 joined
luben pmichaud, I know what causes MS2 GC performance variation in parrot 3.1 19:58
KaeseEs fires up vmware to get at pdd32-m0.pod
cotto_work KaeseEs: no need for that
KaeseEs: github.com/parrot/parrot/blob/m0-s...d32_m0.pod 19:59
luben It does not have dynamic (adaptive) triggering - it triggers every 10% of free memory that was allocated by parrot
on linux this means all memory - buffers - cache
so usually it is very little 20:00
when you rebooted, you actually freed buffers and cache
you chould achieve the same effect with "echo 2 > /proc/sys/vm/drop_caches" 20:01
in later parrots I have fixed that behaviour - the memory for GC is comuted as a fraction of all available memory 20:02
s/comuted/computed/ 20:04
whiteknight luben: Okay, that's along the lines of what I thought it was 20:05
but it's good to hear a real explanation 20:06
luben there was a bug in linux platform files
I think that I wrote mail to parrot-dev at that time 20:07
whiteknight the variances are interesting but they're in the past now. What is most concerning is the big slowdown between 3.0 and 3.1, and the smaller slowdown between 3.2 and 3.3
that's something that we need to profile and understand aggressively
20:09 mj41 joined
luben execution time is not the only parameter of GC - peak memory usage is also very important parameter 20:09
we have mostly the same exec time but we manage with 1/3 of the memory
pmichaud luben: I'm not seeing variation in 3.1. I'm seeing variation in 3.0. 20:10
3.1 is very self-consistent.
KaeseEs the textual representation of M0 looks comfortingly similar to MIPS r-type instructions
luben (comparing MS2-without dynamic triggering and GMS)
pmichaud, my fault - I was thinking about 3.0
pmichaud regardless, 3.0 is still consistently faster than 3.3. 20:11
cotto_work aloha: going to yapc::na?
aloha cotto_work: Dunno.
cotto_work aloha: going to yapc::na is cotto
aloha cotto_work: Okay.
cotto_work aloha: going to yapc::na is also dukeleto
aloha cotto_work: Okay.
pmichaud where's the "not going" list?
cotto_work sad face 20:12
luben pmichaud, but 3.0 wastes a lot more memory than 3.3
pmichaud luben: right now speed is far more important to us. 20:13
(maybe not for parrot, though)
cotto_work KaeseEs: are you interested in being recruited for an M0 disassembler?
luben pmichaud, I am working to make this runtime option 20:14
also looking for better defaults
KaeseEs i don't know much about CPS except that a friend of mine who uses racket talks about it sometimes :(
20:15 dodathome left
pmichaud runtime option doesn't seem all that useful -- most people will be using the defaults 20:15
KaeseEs i don't have class on friday, i'll take a look then if someone else hasn't run with it yet
cotto_work KaeseEs: you won't need to care much about CPS for the disassembler.
It's most relevant to the interp, and once dukeleto and I understand it fully, we'll document it quite thoroughly.
atrodo aloha: going to yapc::na is also atrodo 20:16
aloha atrodo: Okay.
KaeseEs ok. i'll take a look at it. forgive my wariness for telling people i've got tuits when finals are on the 16th :/
pmichaud aloha: not going to yapc::na is also pmichaud 20:17
aloha pmichaud: Okay.
pmichaud aloha: not going to yapc::na
aloha: not going to yapc::na?
aloha pmichaud: not going to yapc::na is pmichaud
cotto_work KaeseEs: no worries. It won't block anything. It'd be nice to have as a way to ensure that we can losslessly round-trip between the assembler and disassembler, but that's it.
benabik is probably going to yapc::na, but hasn't made any arrangements yet.
KaeseEs cotto_work: makes sense 20:18
cotto_work aloha: going to yapc::na is also atrodo 20:21
aloha cotto_work: Okay.
atrodo aloha: going to yapc::na?
aloha atrodo: going to yapc::na is cotto or dukeleto or atrodo or atrodo
atrodo quite happy to put me in there twice. I'm REALLY going
moritz when did parrot switch to git?
cotto_work atrodo: I expect both you and your clone. 20:22
bubaflub moritz: a while back. dukeleto handled the conversion
20:22 _dolmen_ joined
moritz bubaflub: sorry, I should have asked "what's the parrot parrot release made with git?" 20:22
benabik The last git-svn-id I see is e0da8738, on 10/5/10
tcurtis moritz: November of last year.
moritz s/parrot/first/ 20:23
thanks
tcurtis moritz: Which is 2.10, I think.
mikehh think it was the one tcurtis++ did, let me check
atrodo cotto_work> what if i bring atrodo 2.0, will that count?
cotto_work atrodo: sure.
atrodo cotto_work> Perfect! Screaming boy in the sessions! No one will hate me at all! 20:24
20:24 rohitnsit08 joined, rohitnsit joined
cotto_work atrodo: how's his code? 20:24
moritz tahsnk benabik and tcurtis
atrodo cotto_work> still trying to get him to not eat the keyboard. so decent 20:25
moritz can't type today
20:25 rohitnsit08 left, rohit_nsit08 left
mikehh moritz: definately 2.10 was the firest using git 20:26
20:26 rohitnsit left, rohit_nsit08 joined
rohit_nsit08 hello #parrot 20:27
cotto_work #ps at now 20:28
moritz I'll try to extend my graph (see parrot-dev) to 2010.{11,12}
but it'll take some time
davidfetter #parrotsketch ?
20:28 whiteknight left
davidfetter contemplates irc channel aliases 20:29
mikehh davidfetter: for sure
atrodo pmichaud> If you have anything you want to see from isparrotfastyet.com or have any suggestions, I'd love to know 20:33
pmichaud atrodo: I don't yet understand that site 20:37
afk, errands
atrodo pmichaud> That's good to know. Thanks 20:38
bubaflub atrodo: how much data do you have in the past? it might help us determine some of the slow-downs 20:39
atrodo bubaflub> I should have all the releases for 2010, plus everything after 2010-12-3 20:44
bubaflub> although, i thought i had more then that
bubaflub atrodo: great - that should be useful in figuring out exactly when the slowdown from 3.0 to 3.3 occured
moritz to me it looks like the bulk of the slowdown was between 3.0 and 3.1 20:45
moritz.faui2k3.org/tmp/rakudo-perl-...-05-03.png
see my last parrot-dev mail of more details
but don't trust my data yet - I'll have more reliable data tomorrow
Util aloha: going to yapc::na is also Util 20:46
aloha Util: Okay.
dalek p/ctmo: 932f6da | jonathan++ | src/ (2 files):
Make sure derived dispatchers are fixed up. Fixes the last two test regressions in the ctmo branch after the full switch to using compile time meta-objects.
20:54
plobsing NotFound: never mind. the -I switch appears to be working for me now. not sure what I was doing wrong 20:57
NotFound plobsing: k
dalek p/ctmo: 61e5ea0 | jonathan++ | src/stage0/ (6 files):
Update bootstrap.
20:58
21:05 M_o_C joined 21:08 darbelo joined
dalek Heuristic branch merge: pushed 20 commits to nqp by jnthn 21:08
21:09 darbelo left 21:10 darbelo joined 21:11 ambs left 21:27 mj41 left
luben atrodo, it will be great to have option to switch scales, eg week, month, year for isparrotfastyet.com/ 21:36
21:37 darbelo_ joined 21:38 M_o_C left
NotFound (moved from #ps) Testing with ohm-eta should be easy, and more realistic than an artificial test. 21:39
benabik Some artificial benchmarks might be useful in pegging performance changes in particular sections of parrot. Real programs are good for pointing out when problems occur, but its sometimes difficult to figure out what underlying change caused it. 21:41
plobsing The lightest test would be to run the precompiled tests. Medium would be to compile those tests. Heavy would be the bootstrap stage.
What time-range do we want our benchmarks to run in?
21:42 darbelo left
NotFound For a start, we should find a test that mimics the pattern observed with rakudo. 21:42
mikehh in one sense yes, but I think we need general benchmarks as well 21:43
NotFound If ohm-eta does it, we can bisect it.
plobsing so the pattern we're looking for was with all the released versions from 3.0 through 3.3? 21:44
mikehh and see if we catch a hiccup somewherte between 3.0 and 2.1 21:45
NotFound mikehh: yes, but isolating first the known problem may be the better way.
mikehh 3.1
NotFound: sure, but I was also thinking long term as well (for later) 21:46
21:47 fperrad left
NotFound I'm definitely open to any plan involving more winxed usage ;) 21:47
mikehh NotFound: I agree, I think you have something positive there (in winxed that is) 21:49
plobsing I'm going to have to build all the release versions of parrot. It'll be a little while before I can give any results 21:50
mikehh also might need to track branch merges between 3.0 and 3.1 21:53
dalek p: 8bffb73 | jonathan++ | / (11 files):
Some PBC renaming so we can install without trampling on things already in Parrot's library directory.
21:54
p: 53e7266 | jonathan++ | src/stage0/ (6 files):
Update bootstrap after renaming.
22:32 bubaflub left 22:33 bluescreen left
cotto_work NotFound: ping 22:36
aloha: clock?
aloha cotto_work: LAX: Tue, 15:36 PDT / CHI: Tue, 17:36 CDT / NYC: Tue, 18:36 EDT / UTC: Tue, 22:36 UTC / LON: Tue, 23:36 BST / BER: Wed, 00:36 CEST / TOK: Wed, 07:36 JST / SYD: Wed, 08:36 EST
NotFound cotto_work: pong
cotto_work NotFound: what (if any) support for regexes does winxed have?
NotFound cotto_work: there is no direct support. 22:40
cotto_work NotFound: ok
NotFound BTW, I don't know what the plans are. If tge gets deprecated and killed, Is there any way to use regexes other than nqp? 22:41
cotto_work tge has been on life support since I joined the project, but it's been very stable throughout that time. 22:42
We most likely won't kill it while Lua still uses it. 22:43
22:44 Andy left, hercynium left
Tene cotto_work: you could always dlopen libpcre 22:44
cotto_work Tene: sure. That's an option.
22:46 kid51 joined 22:47 whiteknight joined
kid51 aloha: going to yapc::na is also kid51 22:51
aloha kid51: Okay.
whiteknight Is anybody looking at the performance issues right now? 22:56
NotFound whiteknight: plobsing said he's going to install the relevant parrot versions and test them with ohm-eta. 22:58
whiteknight NotFound: that's perfect
the first thing we really need to do is isolate the problem to Parrot and not Rakudo
plus, it can't hurt to have a benchmark that doesn't take quite so long to run 22:59
cotto_work whiteknight: plobsing wanted to talk about concurrency. I said he should catch you. 23:00
whiteknight okay, awesome 23:01
I always like talking to plobsing
cotto_work If the boths of yous are here, now'd be a great time.
whiteknight ENOPLOBSING 23:05
cotto_work well nuts 23:06
whiteknight I'm still up for talking. Let's talk. 23:11
how about that local sports team?
I hear they are doing differently from what was expected of them 23:12
cotto_work I hear they've got a chance for that big event.
whiteknight: how much time do you spend blogging per day? 23:13
whiteknight cotto_work: depends. Most days I don't do it at all
I have a very large pile of half-finished drafts. When it's time to post, I put some polish on them
I used to keep a daily blog/journal for personal stuff. I gave that up, but still have the urge to write pretty frequently 23:16
23:16 darbelo_ left
whiteknight I gave up poetry because I suck at it, so all I've got left is my technical blog 23:16
23:17 darbelo joined
whiteknight I had a series of professors in college who were very persuasive about the need to write frequently 23:17
cotto_work I guess it worked. 23:18
good for them\\ 23:19
whiteknight Inspiration comes in waves though. Some days I have a lot to talk about and I write up several drafts at once. Other days I have nothing to say, so I sit around like lump 23:20
cotto_work on an unrelated note, are you planning on yapc::na? 23:21
whiteknight unfortunately, not this year. We're trying to buy a house, and I'm saving my vacation time for that
next year is a distinct possibility
cotto_work aloha: not going to yapc::na is also whiteknight 23:22
aloha cotto_work: Okay.
cotto_work That's too bad, but that's also exciting for you.
whiteknight It is too bad, really. I really liked YAPC when I went 23:23
cotto_work and I like hanging out 23:24
whiteknight yeah, it was fun to meet you and the rest of the team
extremely high bandwidth
cotto_work btw, Randall Schwartz was at the Parrot talk. It was a trip to have him in the audience.
whiteknight oh really? that's awesome
so there wasn't a video of it or anything? 23:25
transcript? powerpoint slides?
cotto_work no video, though I'll post my slides
whiteknight second hand account from a guy who knew a guy who was there?
cotto_work mksig.org/slides/lfnw2011/
whiteknight I'm jonesing for more cotto
23:25 kid51 is now known as kid51_at_dinner
whiteknight cotto++ 23:26
nice presentation 23:28
nopaste "plobsing" at 192.168.1.3 pasted "â¦Î·-bench" (5 lines) at nopaste.snit.ch/43358 23:29
whiteknight <parrot git:master> ./parrot examples/benchmarks/stress3.pasm
A total of 76269849 GC runs were made
plobsing oh hai. i haz can haz benchmark
cotto_work plobsing: awesome. We have a small test case!
whiteknight I suspect that number is a lie
plobsing++ 23:30
23:30 darbelo left
cotto_work plobsing++ 23:30
whiteknight it's good to isolate the problem from Rakudo
plobsing cotto_work: only if the pattern is the same. there is a large jump between 3.0 and 3.1, but the rest isn't correlated so well
whiteknight and it's good to have a test case that runs in less than 5 minutes
its correlated well enough. the only way to perfectly match the Rakudo usage pattern is to use Rakudo 23:31
cotto_work It looks good for the first slowdown.
plobsing Ωη is close though. the parsing algo is very similar, and it makes use of exceptions
cotto_work yup 23:32
whiteknight okay. Let's get valgrind up in this biznatch. I guess I need to get ohm-eta to run the benchmark?
cotto_work hopes to see some concurrency talk now that plobsing and whiteknight are both online 23:33
plobsing yep. and you'll need winxed to build it (but not to run)
whiteknight plobsing: yeah, what's on your mind for concurrency? 23:34
plobsing whiteknight: I've been reading your concurrency blog posts.
what you describe is very similar to the architecture we have now (other than the whole not working thing), SFAICT. 23:35
whiteknight plobsing: we don't really have any mechanism for tasks/greenlets
plobsing we have a scheduler with tasks 23:36
whiteknight and we don't have any data sharing mechanism whatsoever
and our threads are extremely heavy weight, and require cloning the interp
plobsing we have a message passing architecture
whiteknight do we?
plobsing Parrot_cx_send_message() 23:37
whiteknight does that work? Is it used? I mean, I know we have SchedulerMEssage PMC or whatever it's called
and in either case, whether what we have is a vague shadow of what I suggested or not, the work to fix it is probably less than the effort just rewrite it correctly 23:38
plobsing I think working to bring the current framework up to the task has its advantages. 23:40
It makes considerations for things you haven't mentioned (so I assume you haven't thought about yet) 23:41
such as OS signals, asynchronous NCI callbacks, etc
whiteknight I glossed over those things, but I have thought about those plenty
I talked with lucian about those the other day
There are a lot of implementation details that I glossed over 23:44
plobsing but I'm more concerned about the timeline. sure 4.0 or later is acceptable for user-exposed threads, but we can get a lot of mileage out of internals which have a coherent thread-safety strategy 23:45
even if we're not exposing that to HLLs
whiteknight do you think our current system represents a "coherent thread-safety strategy"?
I've never seen any bit of it that inspired any kind of confidence 23:46
now, if you're up for rewrting the system, and rearranging the timeline, that's fine. The timeline was all hypothetical
like I said, those posts were more an attempt to get the conversation started than a final plan in itself 23:47
plobsing No. The current system far from coherent.
whiteknight okay
plobsing There are parts that pay attention to threading, and others that pay no mind
whiteknight the big problem right now is that the current threading system has been in disrepair for so long that the rest of Parrot has moved on without it 23:48
plobsing we have mutexes in some places, but the allocator, by far the most used susbsystem, is totally exposed
whiteknight I ripped out the old STM implementations with my bare hands, and nothing broke 23:49
no tests failed. No code outside the stm files needed to be changed at all
plobsing I'm not talking about user-exposed threads. I'm talking about things like embedding in a threaded webserver like apache.
whiteknight right
okay, so what do you propose? We start with an OS-threading implementation first, and build tasklets on top of that later? 23:50
I'm assuming that part of the OS-threading implementation is pervasive thread safety
plobsing we need the pervasive thread safety before anything, so I think that's where we should start 23:53
whiteknight well, my thinking is that we don't know the system is pervasively thread safe without starting to implement and use threads 23:54
that is, make threads, make a suite of tests for threads, fix all test failures, etc
plobsing we know the other parts and how they fit together currently. we can find a lot of structural problems without even testing. 23:57
whiteknight this is true. No argument there. we can definitely fix some glaring errors 23:58
for something like the PMC allocator however, we need a long-term plan for the GC before we attempt that
for instance, do we have per-thread GC? Or do we have a separate GC thred?
or a single stop-the-world global GC?
plobsing yes, that's the kind of decisions we need to be making
whiteknight each of them are going to have different strategies for making a thread-safe allocator 23:59
I purposefully glossed over GC in my posts, but I'm a big fan of a concurrent algorithm for GC
if the system supports enough threads, devote one to GC
plobsing and all of that has nothing to do with what flavour of threads HLLs deal with