|
Parrot 3.8.0 "Magrathea" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 29 September 2011. |
|||
| dalek | sella: b8d7d89 | Whiteknight++ | src/proxy/ (14 files): cleanups for Proxy |
00:40 | |
| sella: c9ac976 | Whiteknight++ | src/query/ (11 files): Fixes to Query for consistency |
|||
| sella: 1456d77 | Whiteknight++ | src/mockobject/ (11 files): formatting updates for MockObject |
|||
|
00:46
whiteknight joined
|
|||
| cotto | ~~ | 01:01 | |
|
01:18
alester_ joined
|
|||
| alester_ | seen coke | 01:19 | |
| aloha | coke was last seen in #parrot 4 hours 46 mins ago joining the channel. | ||
|
01:25
ScottD joined
|
|||
| ScottD | Good evening everyone. | 01:26 | |
| cotto | hi ScottD | 01:27 | |
| ScottD | I do a fly-by of Parrot every so often to keep tabs on things. It's looking really good! I had some general "can it do" type questions, if you have a minute? | 01:29 | |
| cotto | fire away | 01:30 | |
| ScottD | I've been experimenting with "Avian" - an embeddable Java VM - to rewrite a game engine I did a number of years ago. I'd love to use Parrot for the variety of languages that can target it. However, I need to make a big static "runtime" of everything the games that run on it may need... | 01:31 | |
| In Avian, I just statically compile everything together, use SWIG to generate Java bindings for the various libraries, and link it all together... | 01:32 | ||
| Is anything similar possible on Parrot? I looked around quite a bit and wasn't able to find an explanation of how languages other than PIR talk to native code. | 01:33 | ||
| cotto | Hmmm. | 01:34 | |
| The assumption is that HLLs will be built on top of PIR and will be able do anything PIR can do by generating the right PIR code. | 01:35 | ||
| that includes nci, which is what you'd use to talk to C libraries | 01:36 | ||
| ScottD | Right. But say I compile in SDL and then want the HLLs to be able to access it... Right now, with Avian, an "SDL" class is just magically added to the HLL (Java in this case) thanks to the SWIG bindings. | 01:37 | |
| cotto | "compile in SDL"? | ||
| what do you mean by that? | 01:38 | ||
| ScottD | I link SDL in with Avian and then add the Java side to the embedded class library. | 01:39 | |
| From Java's point of view, I'm doing JNI. Except instead of to a loadable library of SDL stuff, it's just referencing the same binary the JVM is in. | 01:40 | ||
| cotto | for Parrot, you'd write the bindings in nci | ||
| ok | 01:41 | ||
| ScottD | But how does that get to the HLL? Or doesn't it as of yet? | ||
| cotto | so sdl is build in to the interpreter. I'm not sure why that'd be better than a shared library, but ok. | ||
| ScottD | Eases distribution on those, eh, "other" OSs. You know, the one where users aren't as smart. :-) | 01:42 | |
| cotto | any symbols that nci can find are capable of being exported to HLL code | ||
| hopefully coapp changes that | |||
| ScottD | Coapp? | ||
| cotto | apt-like package management for windows, still under active development but with a very capable bunch of hackers behind it | 01:43 | |
| ScottD | Nice. Windows needs sane package management. | 01:44 | |
| cotto | srsly | ||
| ScottD | Or, it just needs to go away. :-) | ||
| cotto | good luck with that | 01:45 | |
| ScottD | hehe | ||
| I can dream! | |||
|
01:46
bubaflub joined,
jsut joined
|
|||
| cotto | ScottD, does that answer your question? | 01:47 | |
| ScottD | Yea, I think so. I'll continue to read. Parrot is neat stuff. | ||
| Thanks, cotto - gotta run for now. Hopefully I'll be back with better questions. :-) | 01:52 | ||
| cotto | ScottD, have fun | 01:53 | |
| dukeleto | nice to see new nicks asking questions | 02:15 | |
| cotto | yup | 02:16 | |
| dukeleto++ btw for recommending dircproxy | |||
|
02:27
rfw joined
04:36
jsut_ joined
|
|||
| dalek | rrot: 1406d01 | petdance++ | src/runcore/subprof.c: Use NULL instead of 0 for pointers. Const some func parms and local vars. Localized some temp vars. |
05:11 | |
|
05:22
SHODAN joined
06:34
mtk joined
06:59
mj41 joined
07:48
baest joined
07:55
mj41 joined
08:02
lucian joined
|
|||
| dalek | kudo/nom: 3d67ff2 | moritz++ | lib/Test.pm: [Test] do not count dying will Null PMC access as a success |
08:16 | |
| kudo/nom: 840ad74 | moritz++ | t/spectest.data: run another test file |
|||
| kudo/nom: fc304e3 | moritz++ | src/core/Exception.pm: report errors to $*ERR |
08:51 | ||
|
08:52
woosley joined
09:08
Coke joined
|
|||
| dalek | kudo/nom: b7af9ff | moritz++ | src/Perl6/Actions.pm: improve error message, masak++ |
09:16 | |
|
09:43
woosley left
10:05
kurahaupo joined
|
|||
| dalek | kudo/nom: bbe823d | moritz++ | src/Perl6/Actions.pm: avoid @_ being reported as @^_ It seems easier to pass the full variable name to add_placeholder_parameter than to reconstruct it from sigil, identifier and the twigil |
10:17 | |
|
10:18
kurahaupo_mobi joined
10:24
kurahaupo_mobi joined
10:40
AndChat- joined
|
|||
| tewk_ | 3 | 10:58 | |
| dalek | kudo/nom: 4f19b79 | Coke++ | t/spectest.data: run unfudged test |
11:12 | |
|
11:36
Psyche^ joined
11:48
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 11:48 | |
|
11:54
bluescreen joined
|
|||
| dalek | kudo/nom: ff78b5b | moritz++ | tools/build/Makefile.in: clean up CORE.setting |
11:58 | |
|
12:11
AzureStone joined
|
|||
| Coke | I'm working on a replacement for smolder, not taptinder. | 12:17 | |
| taptinder is mj41. | 12:18 | ||
| seen alester | |||
| aloha | alester was last seen in #parrot 17 hours 57 mins ago saying "What's wrong with the existing one?". | ||
| Coke | seen alester_\\ | ||
| aloha | Sorry, I haven't seen alester_\\. | ||
| Coke | seen alester_ | ||
| aloha | alester_ was last seen in #parrot 10 hours 59 mins ago saying "seen coke". | ||
| Coke | aloha, you should consider treating those as the same guy. | ||
|
12:19
bluescreen joined
12:41
atrodo joined
13:08
cosimo joined
13:13
cosimo_ joined
13:15
benabik joined,
Tene joined
|
|||
| tewk_ | api.yaml = "automated communication", "automated communication" isn't communication its only notification.compiler IR | 13:25 | |
| benabik | o/ #parrot | 13:27 | |
| dukeleto | ~~ | 13:29 | |
| tewk_: huh? | 13:30 | ||
| alester | Coke: I'm here | ||
| Coke | alester: what's up? | 13:33 | |
| oh, I have a picture I took on the way into work today I need to send you. | |||
| bah, it's nearly illegible. it's the car in front of me on the way to work, and he's got a white oval stick with the letters "ACK" in it. zoom in, and it's illegible though. ah well. I'll try to catch him in the neighborhood. ;) | 13:35 | ||
| alester: you were looking for me earlier. was it about taptinder? | |||
|
13:40
bubaflub_ joined
|
|||
| dalek | nxed: 9d2eebd | NotFound++ | winxedst1.winxed: fix bug in passing null args introduced in a recent refactor |
14:00 | |
| nxed: 03a193a | NotFound++ | t/advanced/05mreturn.t: one more test for multiple return |
14:01 | ||
| alester | Coke: Yeah, someone said you were the guy behind taptinder. | 14:03 | |
| I see that tt.taptinder.org/buildstatus/parrot/master hasn't had any updates since 9/19, and wondered if there was anythign I could do to get things going again. | |||
| Coke | taptinder is mj41. | 14:04 | |
| I have access to run a client, but have to remember to restart it after a reboot. | |||
| alester | OK | ||
| Coke | I can try to start it up and see if anything answers. momentito. | ||
| alester | The site is up. It just hasn't had any updates in weeks. | 14:05 | |
| Coke | New msjobp_cmd_id not found. | ||
| Waiting for 15 s ... | |||
| looks like the server isn't handing out work. | |||
| aloha, seen mj41? | 14:06 | ||
| aloha | Coke: mj41 was last seen in #perl6 6 hours 11 mins ago joining the channel. | ||
| Coke | aloha, tell mj41 that taptinder server isn't handing out work units. | ||
| aloha, msg mj41 that taptinder server isn't handing out work units. | |||
| aloha | Coke: OK. I'll deliver the message. | ||
| Coke grumbles at the 8 different perl bots he has to interact with that all speak different languages. | |||
| alester | the clientmonitor page 500s | ||
|
14:07
dodathome joined,
dngor joined
|
|||
| Coke kills his client and restarts it in another screen so it'll start working when TT comes back. | 14:08 | ||
| alester++ #reminder. | |||
| alester | I actually wanted to use it to check the commits I'd been making. | 14:09 | |
| Coke | alester++ ! | ||
| alester | Crazy, I know. | 14:10 | |
| Coke | I can fire up a build on windows today to keep you honest if you like. | ||
| alester | At first I thought that my commits weren't getting through, until I noticed 9-19-2011 | ||
| dalek | kudo/eval-throws: 741a933 | moritz++ | src/core/control.pm: Do not catch exceptions from eval() |
14:12 | |
| dukeleto | wow, people have test bots that comment on github: github.com/andreasgal/pdf.js/pull/...nt-2297103 | 14:14 | |
| benabik | Awesome! | ||
| dukeleto | it even has good instructions to install/maintain it: github.com/arturadib/pdf.js-bot | 14:20 | |
| benabik | Instructions? What are those? ;-) | 14:22 | |
| dukeleto | github.com/pdfjsbot | ||
| benabik | Heh. I would have made the bot's code a repo for the bot. | ||
| dalek | kudo/eval-throws: fa2d5c5 | moritz++ | lib/Test.pm: Test.pm needs to deal with eval() not catching exceptions |
14:23 | |
|
14:33
contingencyplan joined
15:11
klavs joined
15:12
klavspr_android joined
15:17
klavspr_android joined
15:21
klavs joined
|
|||
| klavs | Hello, #parrot ! | 15:21 | |
| benabik | Hello, klavs ~ | 15:22 | |
| s/~/! | |||
| atrodo | error: Substitution replacement not terminated | 15:26 | |
| klavs | i am back. i was here for a few weeks in june. now, in fact, i am studying computer science in university, so i hope i will be able to do something for parrot. I am rewriting dm0 - m0 disassembler in perl6, i really hope i will finish it. i was reading your conversations about m0. so... what`s new about m0? i am reading some m0+ and m0-. what are they? | ||
| benabik | klavs: I don't remember who came up with them, but they're something like macro and microcode on a processor. m0+ is roughly m0 and m0- is the bare minimums. | 15:29 | |
| Anybody have a link? | |||
| benabik digs through the logs... | 15:31 | ||
| atrodo | github.com/gerdr/m0-pm | ||
| benabik | atrodo++ # stopping me from digging. | ||
| atrodo | And github.com/gerdr/on-parrot for his basic thoughts about m0+/- | ||
| klavs | the instruction set for m0 is going to be changed? i read something about variable instruction length. | 15:32 | |
| benabik | klavs: gerd was having problems with making m0+ efficient on both 32/64 bit. | 15:33 | |
| whiteknight | not_gerd, not gerd | 15:34 | |
| benabik | ... | ||
| atrodo | whiteknight++ | 15:35 | |
| benabik | gerdr == not_gerd. Right. | ||
| whiteknight | and gerd != not_gerd | 15:37 | |
| clearly | |||
| :) | |||
| benabik | I apparently need to finish my coffee first. | 15:38 | |
| atrodo | and gerd ne not_gerd, for the perl folks like me | ||
| benabik | whiteknight: I'm trying to extract a README from "design.md", which I'm tempted to rename something like "brainstorming.md". | ||
| That's true. In perl, 'gerd' == 'not_gerd'. Which always confuses me for a moment. | |||
| atrodo | benabik> It's both a blessing and curse. And it's only a curse when I forget, which is more rare these days | 15:40 | |
| benabik | atrodo: I've been using too many strongly typed functional languages, where == : A -> A -> Bool. The fact that == : Num -> Num -> Bool and eq : Str -> Str -> Bool bothers me every time I notice. | 15:41 | |
| I'm more used to `2 == '2'` being a type error these days, rather than true. | |||
| nine | I always found Perl's approach rather elegant. Better than in fact having types, but not being able to influence them like PHP, or getting errors when trying to concatenate two things that should be strings like "foo" + 2 in languages like Python. | 15:47 | |
| whiteknight | I was never a fan of the perl approach. It makes no sense to me that using == with two strings would perform a non-string comparison | 15:49 | |
| benabik | I rather appreciate the elegance of strong type systems. Perl's typing often confuses me. I rather appreciate ~~ in P6. | ||
| odd phrasing there from me. Whatever. | 15:50 | ||
| whiteknight | I've had more programs be subtly broken because I used == instead of eq or vice-versa | ||
| benabik | whiteknight: +1, although I always remember "oh, yeah P5 doesn't have types" after using it for a while. | ||
| whiteknight | benabik: after a while, I stopped using perl5 | ||
| benabik | Yeah. | ||
| I tend to use Ruby or sh these days. | 15:51 | ||
| nine | Of course, if you want strong typing a dynamically typed language cannot be good for you :) | ||
| benabik | You can have strongly typed dynamic languages. | ||
| whiteknight | I don't recommend that course of action for everybody, but it was important for my own sanity to pick languages that better fit my personality | ||
| benabik | Not sure why you would. | ||
| The point of strong typing (IMHO) is getting errors very quickly. | |||
| whiteknight: Scala was wonderful while I was using it. | 15:52 | ||
| whiteknight | I haven't tried scala yet. I might have to pick it up some day | ||
| I get plenty of recommendations about it | |||
| benabik | Major problem with it is that it's big. Uses lots of objects, has a large runtime. | 15:53 | |
| I was reading about people using it on Android. That's fun. Default heap size won't even run simple scala programs. | 15:54 | ||
| But pattern matching, lazy lists, and functional style in the JVM is awesome. | |||
| But this is #parrot, not #scala, so I'll get back to that PACT thing. | 15:55 | ||
|
16:01
dmalcolm joined
|
|||
| dalek | CT: 2f8b563 | dukeleto++ | README.md: Add a readme |
16:04 | |
| benabik | ack | ||
| atrodo | benabik++ I've been too busy to see this start. I have high hopes for it | 16:05 | |
| benabik | atrodo: I have no idea how much time I have for it right now, but I'll do what I can. | 16:06 | |
| cotto | ~~ | 16:08 | |
|
16:25
not_gerd joined
|
|||
| not_gerd | hello, #parrot | 16:25 | |
| benabik | o/ not_gerd. Were your ears burning? | 16:26 | |
| not_gerd | benabik: should they? | ||
| benabik | not_gerd: klavs was interested in your m0+/- work. | 16:27 | |
| TimToady | I think if Perl 5 had always had strict and warnings, you guys wouldn't be carping about == now, which usefully distinguishes the semantics desired, rather than overloading one symbol with too many different meanings | 16:37 | |
| Perl 5 put its precision into its operators, not its types; Perl 6 lets you do it both ways | |||
| (and defaults to telling you when you've misused ==) | 16:38 | ||
| whiteknight | Like I said, it's not a bad decision. It didn't mesh well with the way my head works | ||
| benabik | Perl6 does, in fact, do it better. And while the different semantics of ==/eq are very useful, the lack of a generic same-type equality operator tends to trip me up. | 16:39 | |
| TimToady | it's like, what does '+' mean in other languages, other than, "I dunno, ask the type system." | ||
| benabik: eh, that's what eqv and === are | |||
| benabik | TimToady: Should have specified "lack in Perl 5". Do those exist in P5? | 16:40 | |
| TimToady | not yet :) | ||
| otoh, past attempts to cargo cult syntax back into P5 have not been entirely successful, in the absense of a sane type system :) | 16:41 | ||
| benabik | See ~~ ? | ||
| TimToady | indeed | ||
| not_gerd | for an example on how not to do ==, see Javascript | ||
| benabik | Perl6 does many more things right⦠And I'm fascinated by it as far as studying language design goes. I'm not quite ready to use it on a regular basis. | 16:42 | |
| PerlJam | To be fair(er), smart matching was still in flux when p5p adopted it. | ||
| TimToady | sure, but it's really the type system that is the killer here, not the assumption of symmetry | 16:43 | |
| benabik | type systems FTW | ||
| benabik is currently learning formal type systems and is enjoying it. | |||
| not_gerd | klavs: if you're interested in m0±, see github.com/gerdr/on-parrot/commit/9940dc for some additional comments | 16:55 | |
| klavs: I'm currently implementing a prototype to see if the vague ideas mentioned there are fasible in pratice | |||
|
16:59
klavs joined
17:03
klavs joined
17:05
klavspr_android joined
|
|||
| cotto | ~~ | 17:06 | |
| dalek | CT: d004ddd | benabik++ | / (3 files): Organization, part 1: README Having a repository full of just my brainstorming seems less than useful. Let's mark my brainstorming notes as that and pull out the goals into the README so others can see why we're bothering. I plan on separating out other useful parts of brainstorming.md soon. |
17:23 | |
| benabik | I can get wordy really quickly. | ||
| cotto | What's pact going to be written in? | 17:25 | |
| benabik | cotto: Current thought is Winxed. | 17:26 | |
| cotto | so pir, just indirectly | ||
| benabik | Basically. | ||
| cotto | unless winxed starts generating pbc directly, which would be awesome | ||
| benabik | But pure-PIR is heinous for new people to get into. | ||
| cotto | a language only a code generator could love | 17:27 | |
| benabik | Except no, because it assumes too much so that us poor humans can use it. :-D | 17:28 | |
| cotto | sigh | ||
| benabik | I'll note that replacements for PASM/PIR are part of my manifesto^W^Wthe goals for PACT. | 17:29 | |
| cotto | I saw that. That's why I ask. | ||
| benabik | NotFound expressed interest in using PACT for Winxed, so that might be useful. I imagine as the project goes, we'll hit some level of bootstrapping so we can avoid PIR. Or I'll implement a newPASM compiler in C for libparrot. | 17:30 | |
| cotto | That's where I'd expect it to go. | ||
| atrodo | And if I ever get time, I'd like to be able to use it for draak | 17:31 | |
| cotto | It sounds like it'd be a good thing for a hypothetical php compiler to target too. | 17:32 | |
| benabik | Ideally it's be a good thing for everything to target. I plan 100% world domination. :-D | 17:33 | |
|
17:38
fperrad joined
17:40
bluescreen joined
|
|||
| nine | Aaah...a cup of coffee, a glass of wine, ready for code. | 17:44 | |
| dalek | CT: 8e2319b | benabik++ | / (2 files): Organization: TODO Split out the implementation plan into its own document for ease of finding. Turns out I had already been fairly verbose there, so little addition was required. |
17:45 | |
| kudo/optimizer: ad8f64a | moritz++ | src/core/Int.pm: more native int ops |
17:49 | ||
| not_gerd | nine: careful with the wine - hitting for the Ballmer Peak is not an easy endeavour | 17:50 | |
| nine | but a worthwhile oen ;) | 17:51 | |
| s/oen/one/ | |||
| not_gerd | (btw, my beverage of choice is green tea and cider) | ||
| nine | cider++ | ||
| moritz | nine: mixed together? :-) | 18:02 | |
| sorry, meant not_gerd | |||
| not_gerd | moritz: well, no, so that should probably have read beverages ;) | 18:03 | |
| however, I do find cider as a nice basis for adding various other fruit juices, so now that you have mentioned it, I might actually try it out... | 18:04 | ||
| s/as// | 18:05 | ||
| moritz | well, fruit juices are sweet, green tee not so :-) | ||
| not_gerd | some experimentation on the ratio of various compounds is probably necessary | 18:07 | |
| dalek | CT: a34eb92 | benabik++ | / (3 files): Organization, part 1: README Having a repository full of just my brainstorming seems less than useful. Let's mark my brainstorming notes as that and pull out the goals into the README so others can see why we're bothering. I plan on separating out other useful parts of brainstorming.md soon. |
||
| CT: b05010e | benabik++ | / (2 files): Organization: TODO Split out the implementation plan into its own document for ease of finding. Turns out I had already been fairly verbose there, so little addition was required. |
|||
| whiteknight | holy crapamole | ||
| cotto | srsly | ||
| benabik | Yes, those might look familiar. The first commit didn't pick up the deletion, so I just fixed it and pushed the fixed version. Figured the # of users for the repo is very very low right now. :-D | ||
| benabik-- # rebasing pushed branches | 18:09 | ||
| whiteknight | whatev | ||
| cotto | who's played with the install process? Hard-coded paths make Rakudo * hard to install to a non-fixed location. | 18:10 | |
| whiteknight | I stay as far away from the install process as possible | 18:11 | |
|
18:11
bluescreen joined
|
|||
| dalek | CT: 8e34f71 | benabik++ | TODO.md: Organization: TODO Split out the implementation plan into its own document for ease of finding. Turns out I had already been fairly verbose there, so little addition was required. |
18:24 | |
| benabik | ARG. | ||
| DIE FILE FIE | |||
| dalek | kudo/optimizer: b6c5071 | moritz++ | src/core/Num.pm: native num trig ops |
18:32 | |
| kudo/optimizer: e19f726 | moritz++ | src/core/Num.pm: more num builtins, including log() and the rest of the trig functions |
|||
| nine | longjmp(square, 1) | 18:55 | |
| benabik | ? | ||
| nine | well, another path turned out to be a dead end | 18:56 | |
| atrodo | nine++ # clever | ||
| nine | except, if I want to manually save part of the stack and restore it later. But I am really really not sure if I want to go down that road... | 18:58 | |
| whiteknight | doing that in a way that is going to work on multiple systems is not a good idea | 18:59 | |
|
19:00
bluescreen joined
|
|||
| nine | Well according to homepage.mac.com/sigfpe/Computing/c...tions.html it works surprisingly well. But I'd rather explore other options before turning to such desperate measures. | 19:00 | |
| whiteknight | okay | ||
| nine | The other option being: trying to find out why continuations depend on their runloops and if I can change that. | 19:02 | |
| benabik | If we expect to call back to returned functions, implementing C continuations is the only option. Really you can only longjmp to a function that called you or longjmped to you. | 19:05 | |
| Actually, I think scratch the second. | |||
| I think longjmping down the call stack is hazardous. | 19:06 | ||
| whiteknight | nine: The reason why continuations depend on their runloops is because runloops can be nested on the C stack, and you don't want to be invoking a continuation that's in a different place on the C stack | ||
| nine: if we restrict preemption to only happen in the top-level runloop, we can avoid that problem | |||
| nine | benabik: jumping down does not work. Except if you restore the stack beforehand manually | ||
| dalek | kudo/optimizer: 2146e92 | moritz++ | / (14 files): Merge branch 'nom' into optimizer |
19:07 | |
| whiteknight | Like, if we have a "runloop depth" counter, we can only preempt when the runloop depth == 1 | ||
| benabik | This is why we want M0. We want to be in an environment with GC and continuations as rapidly as possible. | ||
| nine | we do have runloop_level | ||
| nine is getting interested in M0 | |||
| whiteknight | nine: okay, I was unaware. So use that to try and keep track of when we are in a top-most runloop, which will stay inside the stack until we exit parrot | ||
| if we do exit the top-most runloop and call back into parrot from external code, we can update our jumpbufs to point to the new top-level runloop instead | 19:08 | ||
| benabik | whiteknight: ew. | ||
| whiteknight | ew? | ||
| benabik | updating jumpbufs? | 19:09 | |
| nine | Calling back into parrot will do that anyway, since it certainly will end up calling runops | ||
| whiteknight | right | 19:11 | |
| nine: definitely take a look at the embedding API in src/embed/* and include/parrot/api.h | |||
| the callin/callout sequences are both instructive and open for modification | |||
| nine | Restricting to runloop level 1 is trivial. So if I do that it's save to give a resumed task's continuation a new runloop? | 19:14 | |
| whiteknight | if every task is scheduled in runloop 1, you can keep sharing the same runloop, I think. longjmp back to it because it's always there | 19:17 | |
| at least, I think so | |||
| nine | Well as it happens, there's already a interp->current_runloop_level <= 1 in Parrot_cx_run_scheduler | 19:23 | |
| whiteknight | oh, nice | 19:30 | |
| nine | But I cannot longjmp back to the runloop, because it's down the C stack. And the scheduler calls several other functions in between so runops' stack gets overwritten | 19:31 | |
| benabik | Tasks likely require implementing continuations in C. | ||
| Including manipulation of the C stack. | 19:32 | ||
| moritz | I thought we did that long ago | ||
| benabik | get/setcontext may be more useful than set/longjmp | ||
| moritz | we do CPS after all | ||
| benabik | Our C code isn't CPS. | ||
| nine | Having continuations in C would make this tremendously easier. But with the restriction to preempting only in the top level runloop, I might still be able to get this working without. | 19:33 | |
| benabik | nine: Are you doing preemption or cooperative multitasking only? | 19:34 | |
| whiteknight | we can do things however they need to be done, if we have to change the way runloops work we can definitely do that | ||
| if it's going to be a lot less work overall to throw out the baby with the bathwater and start rewriting our fail from scratch, that's fine | |||
| benabik | Oh! I renamed design.md, but left it open in Vim. No wonder! | 19:36 | |
| nine | benabik: preemption | ||
|
19:37
bluescreen_ joined
|
|||
| dalek | CT: 05f6f99 | benabik++ | / (2 files): Organization: Nodes This leaves really only information on compilation and stages in the brainstorming doc. Cleaning those up is the last task. |
19:38 | |
| benabik | I guess putting it in a repo was a good idea. Putting it somewhere not in my direct control gave me a lot more incentive to clean it up. | 19:39 | |
| dukeleto++ whiteknight++ | 19:40 | ||
| whiteknight | we're nefarious like that | ||
| benabik | Although I think this is something like 99% of my free time for the week. :-) | ||
| not_gerd | blog post: gerdr.github.com/on-parrot/introduc...0--pm.html | 19:42 | |
| awwaiid | nine (re:preemption) still think you're crazy (though I have very little basis) | ||
| benabik | Preemption is really tough. | ||
| nine | What's life without a little challenge? | ||
| awwaiid | death? | ||
| benabik | nine: That's more like a lot of challenge. | 19:43 | |
| tadzik | it depends | ||
| moritz | benabik: if you just preempt on the runloop level, is it really that tough? | 19:57 | |
| or is that the not-so-interesting type of preemption? | |||
| benabik | moritz: Generally speaking preemption makes implementing multitasking much much harder. If a task knows when it's handing over control, it's much simpler. Less worry about stacks and atomic operations and the like. | 19:58 | |
| moritz: I will admit that that's generally speaking. It may be fairly simple in parrot with large enough granularity. | 19:59 | ||
| moritz | benabik: makes a lot of sense | ||
| not_gerd | good night, #parrot | 20:06 | |
| nine | holy hell, core tests pass! (almost...some expected task related failures) | 20:09 | |
| benabik | nine++ | ||
|
20:10
perlite joined
20:11
mj41 joined
|
|||
| nine | so simple...the only thing I had to do was reseting the runloop_id_counter to 0, so the new runloop had id 1. As I allow preemption only in the top most runloop, by definition there cannot be any other active runloop than the one that just gets created | 20:11 | |
| So no way that there could be an id clash | |||
| dalek | kudo/optimizer: 5b40d01 | moritz++ | src/core/ (4 files): use native types in the setting a bit more |
20:13 | |
| whiteknight | nice | 20:14 | |
| nine | full parrot build now worked for the first time :) | 20:19 | |
| tadzik | wow | ||
| nine++ | |||
| benabik | What's the multi syntax in winxed? | 20:20 | |
| Eh. I'll go pseudo-codeish. | |||
| whiteknight | GABADAGABAGOO | ||
| it's not very readable | |||
| nine | I think at this point I earned myself an hour of reading a good book before going to sleep. Good night #parrot | ||
| whiteknight | :) | ||
| benabik | whiteknight: :-P | ||
| whiteknight | benabik: for simple multi, you would just write a normal function with var/string/int/float | 20:21 | |
| for complex, it would be something like thisL: | |||
| tadzik | g'night nine | ||
| whiteknight | function foo[multi(string, class Foo.Bar, int, class ResizablePMCArray)](string s, var b, int i, var r) { } | 20:22 | |
| benabik | Bleh. Definitely going pseudocode then. :-D | 20:24 | |
|
20:54
mj41 joined
|
|||
| dalek | CT: f3a2189 | benabik++ | / (3 files): Organization Finished: Compilers and Stages Split the remaining notes into information on stages and the compiler object structure in general. None of my ugly brainstorming remains, only something that resembles very hand-wavey design documents. |
21:06 | |
| benabik | aloha: msg whiteknight You might want to take a look at PACT now. I think my notes are a little more understandable now. | 21:07 | |
| aloha | benabik: OK. I'll deliver the message. | ||
| benabik | dukeleto: cotto: ^^, if you want more readable thoughts on PACT | 21:08 | |
| aloha: msg NotFound You expressed interest in PACT, so I thought you might want to know I have more readable notes on it now. github.com/parrot/PACT | 21:09 | ||
| aloha | benabik: OK. I'll deliver the message. | ||
| benabik | Wheeeeeee.... | ||
| dalek | kudo/nom: d3e6519 | moritz++ | src/core/Int.pm: add some missing :D markers on Int ops, masak++ |
21:14 | |
| cotto | benabik: how long did it take you to write that? | 21:17 | |
| benabik | cotto: The notes have been bubbling for a few weeks, since the end of GSoC. Cleaning it up took my lunch break and most of my between work task time today. | 21:18 | |
| cotto | I'm excited. This has good potential. | 21:20 | |
| benabik | cotto: It should be noted that I really intend this to be more like a violent refactoring of PCT than a reaction of "PCT sucks". But it'll be easier to get bytecode right baking it in from the start and then adding back in things from PCT, I think. | 21:21 | |
| dalek | CT: 3195755 | benabik++ | TODO.md: Update TODO My brainstorming notes are mostly done, but the resulting docs are probably fairly incomplete. |
21:32 | |
| sorear | what's pact? | 21:33 | |
| benabik | Blog post incoming on the topic for more publicity. | ||
| PACT = Parrot Alternate Compiler Toolkit | |||
| IMNSHO, PCT needs some serious rewrites to generate bytecode correctly and efficiently. So if we're going to do that, why not do some more tinkering. | 21:34 | ||
| dalek | kudo/nom: fb53581 | moritz++ | src/core/Cool.pm: missing coercers, gfldex++ |
||
| benabik | dalek'll probably squawk about it in a minute, but: www.parrot.org/content/pact-design-notes | 21:53 | |
| And with that I'm off | |||
| dalek | website: benabik++ | PACT - Design Notes | 21:55 | |
| website: www.parrot.org/content/pact-design-notes | |||
| benabik | And there it is. I'll check the backlog and page for comments. The design's in a repo for a reason, feel free to fork/hack/etc. | ||
|
22:55
alvis joined
|
|||
| dalek | kudo/optimizer: a47b0cd | jnthn++ | src/Perl6/Actions.pm: Tighten up what we admit for inlining; require that the arguments are *all* mentioned. |
23:13 | |
| kudo/optimizer: fb111db | jnthn++ | / (3 files): Add support for --optimize=[off|1|2|3]. The default is level 2. 'off' will not even enter the optimizer, so it skips CHECK time could-never-work analysis. Classify inlining and compile-time multi selection as level 2 for now; block inlining gets level 3 initially but should drop to two in the not too distant future; it needs some more aggressive testing. We build the setting with --optimize=3. |
|||
| kudo/optimizer: c191cfe | jnthn++ | src/Perl6/Optimizer.pm: Improve error reporting. When we determine a call could never work, shows the desired signature(s) in the error. |
23:42 | ||
|
23:43
nbrown_ joined
|
|||
| dalek | kudo/optimizer: b5d2c9b | jnthn++ | src/Perl6/Actions.pm: Try to get better line reporting for calls. |
23:45 | |