|
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
|
|||