Parrot 5.5.0 "Salvadori's Fig Parrot" | parrot.org/ | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 13 July 2013.
01:29 rurban1 joined 02:19 rurban1 joined 03:00 rurban1 joined 03:35 benabik joined 03:54 preflex_ joined 05:02 mtk joined 05:05 rurban1 joined 06:05 rurban1 joined 06:14 zby_home joined 06:20 dukeleto joined
dukeleto ~~ 06:21
sorear ~~
06:29 Mike-PerlRecruiter_ joined
dukeleto sorear: how goes it? 06:33
sorear: i hear that you have a new coworker that I know, xenoterracide
sorear dukeleto: you know-know Caleb or just from #perl6? 06:34
these rumors are accurate
dukeleto sorear: i hung out with him a bunch at YAPC::NA 06:35
sorear: i am very interested in working on a real-time GC for Parrot with you 06:36
sorear: that is essential for Parrot on RTEMS 06:37
sa1: ping 06:41
sorear yeahhhh... 06:43
I've a million things to do for work, a million things I want to do for rakudo/jvm, and I may have promised to set up a new evalbot for diakopter
06:44 PacoAir joined
dukeleto sorear: can you help me in the right direction? How would you proceed to add an RTGC to Parrot if you had all the time you needed? 06:44
sorear: you understand these things much better to me, but I may be able to follow your advice and occasionally ask you to bail me out :) 06:45
s/better to/better than/
sorear: with a plan from you, it would be a SMOP... 06:46
sorear dukeleto: step 1: read parrot & try and understand the GC interface
dukeleto i am somewhat of the pluggability of the GC, but yes, making the GC "interface" my bedtime reading material is on the way... 06:47
s/somewhat/somewhat familiar/
sorear incremental collectors are generally done as variations on the tricolor theme 06:53
all objects are either "black" (will not be touched again this cycle), "grey" (will be retained, but the references haven't been processed), or "white" (not yet seen) 06:54
maintain the following invariant: a black object can never point to a white object 06:55
the fundamental quantum of marking is to take a single grey object, turn it black, and grey all the white objects it points to
do this enough times and eventually you'll have no more grey objects, then you can free all the white objects
and turn the black objects white 06:56
dukeleto: is a TPF CLA good enough? 07:01
07:08 rurban1 joined
dukeleto sorear: good enough for what? 07:09
sorear: how does a RTGC make guarantees about running time? i.e that a mark/sweep iteration will only take less than X ms ?
sorear dukeleto: good enough to contribute 07:12
dukeleto: i understand there used to be this "PaFo" thing with its own CLA, but I also understand PaFo is going away
dukeleto sorear: that legal nonsense doesn't concern you
sorear: some silly entity needs to own the IP of Parrot, it might change names, but something like that will always exist 07:13
sorear: my thoughts are that we should get Parrot CI on RTEMS working, then start a RTGC branch 07:14
sorear: then we will actually have the ability to test the RTGC
sorear: that is the way I think, anyway 07:15
sorear dukeleto: the fundamental difference between a nonincremental GC and an incremental GC is that the nonincremental GC treats the grey set as the stack of invoked but not yet returned "mark" procedures, while the incremental GC is stackless and reifies the grey set as an explicit stack or queue
dukeleto sorear: i can work with the RTEMS dudes to make that happen
sorear this allows the incremental GC to stop processing and return to the application after, for instance, marking 100 objects 07:16
dukeleto sorear: ah
sorear: so parrot currently has an incremental *and* generational GC, correct?
sorear: that is what I understand, anyway. Trying to very things
sorear dukeleto: I know you have gms2, other than that I'm not sure 07:17
dukeleto sorear: yes, gms2 is default
sorear if you already have incremental, real-time on the GC per se won't be hard
07:17 Psyche^ joined
sorear but I didn't think you had incremental 07:17
dukeleto sorear: do you have any good recommendations for books or articles about RTGC, which stress applications instead of theory?
sorear: i will have to verify that 07:18
sorear I think "Non-Stop Garbage Collection for Haskell" is the only one I've read
(and I'm quoting that from memory, so you should probably start with the SPJ papers list and look for some close amtch)
sorear suspects there is going to be some insane thing in IMCC or the strings system or elsewhere that prevents real-time operation, even if the GC can handle it 07:19
dukeleto sorear: I will kill that thing with extreme prejudice-fire 07:21
sorear I see gms, ms2, ms, and inf 07:22
none of those is incremental 07:23
dukeleto sorear: ok, thanks
sorear: so should i attempt to make parrot do incremental, on the way to real-time ?
07:24 Psyche^ joined 07:26 Psyche^ joined
sorear dukeleto: looks like the last time parrot had an incremental GC, it was unceremoniously ripped out in 2009 by some "Jesse Taylor" dude 07:31
813e4f34
dukeleto sorear: quite interesting
sorear how much guarantee do I have that if I add a new one, it'll *stay* in?
dukeleto sorear: well, I can assure you that I will protect anything that is required for an RTGC 07:32
sorear: Parrot being real-time is essential to it being relevant in the future and I am working, slowly but surely, in that direction 07:33
sorear: interesting that it doesn't mention any github issue or anything. And I don't even recognize the name... 07:34
sorear: that looks like a "refactoring" branch 07:38
dalek rrot/m0: 98b8b60 | (Martin VorlƤnder)++ | / (2 files):
Change some dependency rules to make them work with MMS/MMK (VMS make utilities).

The VMS make utilities always need an action if they determine that a target is older than a denpendency element.
Besides, rules like
some/header.h : some/source.c
some/source.c : some/file.dump
  \t$(PMC2CC) some/source.pmc
don't reflect the building process, as both the C and header file are generated by the $(PMCCC) call.
07:39
rrot/m0: 86b7619 | dukeleto++ | / (2 files):
Merge pull request #865 from mvorl/depend-h_c_dump

Change some dependency rules to make them work with VMS.
rrot/m0: 6b79c78 | dukeleto++ | / (2 files):
[doc] Add a note about VMS make to our changelog
rrot/m0: 5dbd17b | dukeleto++ | README.pod:
[doc] Update readme with some more helpful pointers
dukeleto failed merge detection
rrot/m0: 0286c71 | coke++ | README.pod:
fix typo
dukeleto blarg
rrot/m0: ebd9b7e | (Kent Fredric)++ | config/ (2 files):
Always use redirection and *NEVER* perldoc -d ( github #520 )

perldoc -d $path is limited because perldoc SETUID's to `UID=nobody` if
  `UID=0`, which basically guarantees that `perldoc -d $path` will not be
able to write anywhere in the working directory.
Though using redirection may be limited on some platforms, any competing solution should change the code executed depending on platform.
On UNIX as UID=0, -d should **always** be avoided because of perldocs inherent defects.
sorear dukeleto: it has a git-svn-id line, which means it predates our use of github
rrot/m0: 05d8871 | dukeleto++ | config/ (2 files):
Merge pull request #973 from kentfredric/master

Correctly give an error message only when PC is invalid
dukeleto sorear: yes, i did "git log -p" on the sha1 and I seem to have created the branch for the dude to refactor on
sorear what kind of "refactor" is removing an incremental GC? 07:41
dukeleto sorear: the "gc-refactor" branch
sorear dukeleto: trac.parrot.org/parrot/ticket/980 07:46
dukeleto sorear: looks like the old incremental GC was thrown away in the attempt to give the GC a public/private api and to move forward on GMS 07:50
sorear: not sure of the correctness of that, but it happened
sorear: thanks for finding that. i will read the old incremental code and see if I can salvage anything
sorear i've got a frew ideas of my own 07:56
08:08 rurban1 joined
sorear who killed dalek? 08:16
dukeleto $me->sleep() 08:20
08:23 dalek joined, Coke joined 08:25 p6eval joined 08:26 Util joined 08:52 patspam joined 09:13 rurban1 joined
dalek p/cached-serialization: a1783a1 | (Pawel Murias)++ | src/ (2 files):
Add a QAST::CompUnit.serialize_sc, which serializes the sc on the first use, and subsequently returns that value.
10:07
10:14 rurban1 joined
dalek p: 655b7da | (Solomon Foster)++ | src/HLL/sprintf.nqp:
Refactor a tad.
10:34
11:14 rurban1 joined 12:15 rurban1 joined
dalek p/cached-serialization: 2bb2232 | (Pawel Murias)++ | src/ (2 files):
Serialize the sc only when explicitly told to.
12:16
12:17 kid51 joined
dalek kudo/nom: ebb29be | jonathan++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java:
Implement type checking return values.
12:40
p: 754bc44 | jonathan++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Tweak nqp::backtrace() to give VM coderef back.

This is what the usage of it in Rakudo expects. Gets us passing a good bit more of S32-exceptions/misc.t.
12:58
13:10 mtk joined 13:17 rurban1 joined 14:18 rurban1 joined 14:37 rurban1 joined 15:24 kid51 joined 16:16 dukeleto joined
dukeleto sa1: pong 16:16
sa1 dukeleto: hello 16:17
dukeleto sa1: tell me all the details 16:19
sa1: why you are stuck, what you have tried, what you think might work but haven't tried
sa1: everything :)
sa1: bring me up to date, while I get my parrot+rosella+libgit2 environment to where you are
sa1: are you working on the master branch? 16:20
sa1 dukeleto: no, switch to the structview branch
dukeleto Util: are you ok on the next release?
Util: you are the only person signed up to do releases, which worries me
sa1: ah, ok
sa1 dukeleto: the test harness still has some problems. But run the test directly
dukeleto sa1: we are targetting the 0.19 release of libgit2, correct? 16:21
sa1: what command-line, exactly, are you running the test directly with?
sa1 dukeleto: right.
dukeleto sa1: i want to reproduce exactly what you are doing
sa1 dukeleto: winxed t/winxed/001_load.t
dukeleto: There should be 2 errors. 16:22
The first one pastebin.mozilla.org/2592456 16:23
The second one is the dead coroutine error mentioned here: github.com/letolabs/parrot-libgit2/issues/8 16:25
But like in that issue, I believe its a solvable one.
dukeleto dead coroutines! How exotic. 16:27
too few positional arguments: 0 passed, 1 (or more) expected
# Called from 'get_sv' (src/Git2/Repository.winxed : 11)
sa1: that bug in on Repository.winxed line 11
sa1: just for reference, plobsing wrote StructView 16:28
sa1: so definitely listen to him first, *then* me
sa1: he taught me everything I know about it :)
sa1 dukeleto: I don't get the too few positional arguments error
dukeleto Initializer too short (4) for struct type `struct' with 3 elements 16:29
# Called from 'get_sv' (src/Git2/RefCache.winxed : 16)
sa1 dukeleto: Yes. 16:30
I don't see where 4 and 3 came in.
The RefCache struct has 2 elements 16:31
dukeleto sa1: it is trying to tell you "I WANT 4 BUT YOU GAVE ME 3"
sa1 Yes, but why would it want 4?
And I gave it 2, not 3
dukeleto sa1: it doesn't count the first argument 16:32
sa1 Changing that does not change the errors
dukeleto sa1: maybe it does
sa1 dukeleto: Yes, but the error didn't change 16:33
on adding or removing a element
dukeleto sa1: that is bad. Means something is not getting recompiled
sa1 Of course, first thing I thought. 16:34
Did run clean and make some times
dukeleto sa1: if you create a syntax error and run it, does it still work?
sa1 dukeleto: I get compile errors, yes. 16:37
dukeleto sa1: ok. that is an (in)sanity check :) 16:38
sa1 dukeleto: Let me push out some more things to structview branch. 16:41
dukeleto sa1: sounds good 16:43
sa1 Only minor errors I should have pushed before giving it to you to test. :) 16:44
dukeleto sa1: no worries 16:47
sa1: still getting my env up and running
sa1 Yes, done 16:50
16:58 rurban1 joined
dukeleto sa1: ok 17:00
sa1: what is your current plan? What are you totally stuck on? What can you make progress on right now? 17:01
sa1: this is a good time to stop and write documentation. Give your coding brain a break
sa1: and think like somebody that has *no clue* what the insides look like
sa1: how do we make it easy for people to read our docs and find what they need 17:02
sa1: good docs is what seperates interesting code that nobody uses from usable software
sa1 dukeleto: Current plan is improving setup.winxed
unifying the buildsystem
dukeleto: Yes, I will start writing some docs. 17:03
dalek rrot: 226d49d | dukeleto++ | config/ (2 files):
Revert "Always use redirection and *NEVER* perldoc -d ( github #520 )"

This reverts commit ebd9b7e9a12f65beebdc61d7e428e11fffc6a2fc.
dukeleto sa1: great 17:04
sa1: let me poke around and fix the structview thing
do we have a msg bot in here anymore?
sa1: do you need me for anything right else? 17:13
sa1 dukeleto: No, not at the moment. 17:14
dukeleto sa1: any questions, concerns, suspicions or preminition ?
sa1: ok :)
sa1: you are doing good work
sa1: keep on going!
sa1 dukeleto: I had questions regarding the license btw. 17:15
dukeleto sa1: the Github people are watching our work :)
sa1: speaketh your question
sa1 Is not LGPL better than GPL for our purpses?
purposes*
dukeleto sa1: one of the libgit2 devs that works for Github lives in Portland :)
sa1: the short answer is "meh"
sa1: there is no LGPLv3 17:16
sa1: licenses are very complex
sa1: gplv3 protects us from a companie patenting what we do in parrot-libgit2 and then suing us 17:17
s/companie/company/
sa1: gplv3 has a patent clause, nothing else does
sa1: not that i am worried about it
sa1: that is just my default these days
sa1: i am open to people using it under other licenses 17:18
sa1: so it really is a non-issue
sa1: keep writing docs and don't worry about licenses for a bit longer. Ignorance is bliss :)
sa1 Yes, after it works well and people use it, then it may be an issue
dukeleto sa1: i am very open to giving people additional licensing, but that is a case-by-case basis 17:19
sa1: in my opinion, that keeps the spirit of free software
17:19 rurban1 joined
dukeleto sa1: i am a free software pragmatist, i guess 17:19
sa1 Right, it is a good view. 17:20
dukeleto sa1: so if a company said "we really need parrot-libgit2 under the MIT license, here is a pile of money to fund parrot-libgit2 development", I would say "Yes" 17:21
Free software isn't free to write.
sa1 Yes, that is good. Other people I know personally have tried the same approach. 17:22
17:47 Maddingue joined 18:27 Maddingue joined 18:30 Mike-PerlRecruiter_ joined 19:25 Hunger joined 19:29 benabik joined 19:37 Maddingue joined 20:27 Maddingue joined 21:06 mtk joined 21:13 Maddingue joined 21:15 sivoais joined 21:58 Maddingue joined 22:43 Maddingue joined 23:28 sivoais joined 23:29 Maddingue joined 23:45 sivoais joined