Camelia, the Perl 6 bug

IRC log for #parrot, 2011-10-05

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:40 dalek Rosella: b8d7d89 | Whiteknight++ | src/proxy/ (14 files):
00:40 dalek Rosella: cleanups for Proxy
00:40 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/b8d7d899f9
00:40 dalek Rosella: c9ac976 | Whiteknight++ | src/query/ (11 files):
00:40 dalek Rosella: Fixes to Query for consistency
00:40 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/c9ac976c9d
00:40 dalek Rosella: 1456d77 | Whiteknight++ | src/mockobject/ (11 files):
00:40 dalek Rosella: formatting updates for MockObject
00:40 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/1456d774c9
00:46 whiteknight joined #parrot
01:01 cotto ~~
01:18 alester_ joined #parrot
01:19 alester_ seen coke
01:19 aloha coke was last seen in #parrot 4 hours 46 mins ago joining the channel.
01:25 ScottD joined #parrot
01:26 ScottD Good evening everyone.
01:27 cotto hi ScottD
01:29 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:30 cotto fire away
01:31 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:32 ScottD In Avian, I just statically compile everything together, use SWIG to generate Java bindings for the various libraries, and link it all together...
01:33 ScottD 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:34 cotto Hmmm.
01:35 cotto 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:36 cotto that includes nci, which is what you'd use to talk to C libraries
01:37 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"?
01:38 cotto what do you mean by that?
01:39 ScottD I link SDL in with Avian and then add the Java side to the embedded class library.
01:40 ScottD 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
01:41 cotto ok
01:41 ScottD But how does that get to the HLL?  Or doesn't it as of yet?
01:41 cotto so sdl is build in to the interpreter.  I'm not sure why that'd be better than a shared library, but ok.
01:42 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
01:42 cotto hopefully coapp changes that
01:42 ScottD Coapp?
01:43 cotto apt-like package management for windows, still under active development but with a very capable bunch of hackers behind it
01:44 ScottD Nice.  Windows needs sane package management.
01:44 cotto srsly
01:44 ScottD Or, it just needs to go away.  :-)
01:45 cotto good luck with that
01:45 ScottD hehe
01:45 ScottD I can dream!
01:46 bubaflub joined #parrot
01:46 jsut joined #parrot
01:47 cotto ScottD, does that answer your question?
01:47 ScottD Yea, I think so.  I'll continue to read.  Parrot is neat stuff.
01:52 ScottD Thanks, cotto - gotta run for now.  Hopefully I'll be back with better questions.  :-)
01:53 cotto ScottD, have fun
02:15 dukeleto nice to see new nicks asking questions
02:16 cotto yup
02:16 cotto dukeleto++  btw for recommending dircproxy
02:27 rfw joined #parrot
04:36 jsut_ joined #parrot
05:11 dalek parrot: 1406d01 | petdance++ | src/runcore/subprof.c:
05:11 dalek parrot: Use NULL instead of 0 for pointers. Const some func parms and local vars. Localized some temp vars.
05:11 dalek parrot: review: https://github.com/parrot/parrot/commit/1406d01885
05:22 SHODAN joined #parrot
06:34 mtk joined #parrot
06:59 mj41 joined #parrot
07:48 baest joined #parrot
07:55 mj41 joined #parrot
08:02 lucian joined #parrot
08:16 dalek rakudo/nom: 3d67ff2 | moritz++ | lib/Test.pm:
08:16 dalek rakudo/nom: [Test] do not count dying will Null PMC access as a success
08:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/3d67ff22d0
08:16 dalek rakudo/nom: 840ad74 | moritz++ | t/spectest.data:
08:16 dalek rakudo/nom: run another test file
08:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/840ad74415
08:51 dalek rakudo/nom: fc304e3 | moritz++ | src/core/Exception.pm:
08:51 dalek rakudo/nom: report errors to $*ERR
08:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fc304e3d7a
08:52 woosley joined #parrot
09:08 Coke joined #parrot
09:16 dalek rakudo/nom: b7af9ff | moritz++ | src/Perl6/Actions.pm:
09:16 dalek rakudo/nom: improve error message, masak++
09:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b7af9ff283
09:43 woosley left #parrot
10:05 kurahaupo joined #parrot
10:17 dalek rakudo/nom: bbe823d | moritz++ | src/Perl6/Actions.pm:
10:17 dalek rakudo/nom: avoid @_ being reported as @^_
10:17 dalek rakudo/nom:
10:17 dalek rakudo/nom: It seems easier to pass the full variable name to add_placeholder_parameter
10:17 dalek rakudo/nom: than to reconstruct it from sigil, identifier and the twigil
10:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bbe823d64d
10:18 kurahaupo_mobi joined #parrot
10:24 kurahaupo_mobi joined #parrot
10:40 AndChat- joined #parrot
10:58 tewk_ 3
11:12 dalek rakudo/nom: 4f19b79 | Coke++ | t/spectest.data:
11:12 dalek rakudo/nom: run unfudged test
11:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4f19b79107
11:36 Psyche^ joined #parrot
11:48 whiteknight joined #parrot
11:48 whiteknight good morning, #parrot
11:54 bluescreen joined #parrot
11:58 dalek rakudo/nom: ff78b5b | moritz++ | tools/build/Makefile.in:
11:58 dalek rakudo/nom: clean up CORE.setting
11:58 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ff78b5ba7b
12:11 AzureStone joined #parrot
12:17 Coke I'm working on a replacement for smolder, not taptinder.
12:18 Coke taptinder is mj41.
12:18 Coke seen alester
12:18 aloha alester was last seen in #parrot 17 hours 57 mins ago saying "What's wrong with the existing one?".
12:18 Coke seen alester_\
12:18 aloha Sorry, I haven't seen alester_\.
12:18 Coke seen alester_
12:18 aloha alester_ was last seen in #parrot 10 hours 59 mins ago saying "seen coke".
12:18 Coke aloha, you should consider treating those as the same guy.
12:19 bluescreen joined #parrot
12:41 atrodo joined #parrot
13:08 cosimo joined #parrot
13:13 cosimo_ joined #parrot
13:15 benabik joined #parrot
13:15 Tene joined #parrot
13:25 tewk_ api.yaml = "automated communication",  "automated communication" isn't communication its only notification.compiler IR
13:27 benabik o/ #parrot
13:29 dukeleto ~~
13:30 dukeleto tewk_: huh?
13:30 alester Coke:  I'm here
13:33 Coke alester: what's up?
13:33 Coke oh, I have a picture I took on the way into work today I need to send you.
13:35 Coke 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 Coke alester: you were looking for me earlier. was it about taptinder?
13:40 bubaflub_ joined #parrot
14:00 dalek winxed: 9d2eebd | NotFound++ | winxedst1.winxed:
14:00 dalek winxed: fix bug in passing null args introduced in a recent refactor
14:00 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/9d2eebdd01
14:01 dalek winxed: 03a193a | NotFound++ | t/advanced/05mreturn.t:
14:01 dalek winxed: one more test for multiple return
14:01 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/03a193a435
14:03 alester Coke: Yeah, someone said you were the guy behind taptinder.
14:03 alester I see that http://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.
14:04 Coke taptinder is mj41.
14:04 Coke I have access to run a client, but have to remember to restart it after a reboot.
14:04 alester OK
14:04 Coke I can try to start it up and see if anything answers. momentito.
14:05 alester The site is up.  It just hasn't had any updates in weeks.
14:05 Coke New msjobp_cmd_id not found.
14:05 Coke Waiting for 15 s ...
14:05 Coke looks like the server isn't handing out work.
14:06 Coke aloha, seen mj41?
14:06 aloha Coke: mj41 was last seen in #perl6 6 hours 11 mins ago joining the channel.
14:06 Coke aloha, tell mj41 that taptinder server isn't handing out work units.
14:06 Coke aloha, msg mj41 that taptinder server isn't handing out work units.
14:06 aloha Coke: OK. I'll deliver the message.
14:06 * Coke grumbles at the 8 different perl bots he has to interact with that all speak different languages.
14:06 alester the clientmonitor page 500s
14:07 dodathome joined #parrot
14:07 dngor joined #parrot
14:08 * Coke kills his client and restarts it in another screen so it'll start working when TT comes back.
14:08 Coke alester++ #reminder.
14:09 alester I actually wanted to use it to check the commits I'd been making.
14:09 Coke alester++ !
14:10 alester Crazy, I know.
14:10 Coke I can fire up a build on windows today to keep you honest if you like.
14:10 alester At first I thought that my commits weren't getting through, until I noticed 9-19-2011
14:12 dalek rakudo/eval-throws: 741a933 | moritz++ | src/core/control.pm:
14:12 dalek rakudo/eval-throws: Do not catch exceptions from eval()
14:12 dalek rakudo/eval-throws: review: https://github.com/rakudo/rakudo/commit/741a93358f
14:14 dukeleto wow, people have test bots that comment on github: https://github.com/andreasgal/pdf​.js/pull/599#issuecomment-2297103
14:14 benabik Awesome!
14:20 dukeleto it even has good instructions to install/maintain it: https://github.com/arturadib/pdf.js-bot
14:22 benabik Instructions?  What are those?  ;-)
14:22 dukeleto https://github.com/pdfjsbot
14:22 benabik Heh.  I would have made the bot's code a repo for the bot.
14:23 dalek rakudo/eval-throws: fa2d5c5 | moritz++ | lib/Test.pm:
14:23 dalek rakudo/eval-throws: Test.pm needs to deal with eval() not catching exceptions
14:23 dalek rakudo/eval-throws: review: https://github.com/rakudo/rakudo/commit/fa2d5c525a
14:33 contingencyplan joined #parrot
15:11 klavs joined #parrot
15:12 klavspr_android joined #parrot
15:17 klavspr_android joined #parrot
15:21 klavs joined #parrot
15:21 klavs Hello, #parrot !
15:22 benabik Hello, klavs ~
15:22 benabik s/~/!
15:26 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?
15:29 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 benabik Anybody have a link?
15:31 * benabik digs through the logs...
15:31 atrodo https://github.com/gerdr/m0-pm
15:31 benabik atrodo++ # stopping me from digging.
15:31 atrodo And https://github.com/gerdr/on-parrot for his basic thoughts about m0+/-
15:32 klavs the instruction set for m0 is going to be changed? i read something about variable instruction length.
15:33 benabik klavs: gerd was having problems with making m0+ efficient on both 32/64 bit.
15:34 whiteknight not_gerd, not gerd
15:34 benabik ...
15:35 atrodo whiteknight++
15:35 benabik gerdr == not_gerd.  Right.
15:37 whiteknight and gerd != not_gerd
15:37 whiteknight clearly
15:37 whiteknight :)
15:38 benabik I apparently need to finish my coffee first.
15:38 atrodo and gerd ne not_gerd, for the perl folks like me
15:38 benabik whiteknight: I'm trying to extract a README from "design.md", which I'm tempted to rename something like "brainstorming.md".
15:38 benabik That's true.  In perl, 'gerd' == 'not_gerd'.  Which always confuses me for a moment.
15:40 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:41 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 benabik I'm more used to `2 == '2'` being a type error these days, rather than true.
15:47 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:49 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.
15:50 benabik 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
15:50 benabik whiteknight: +1, although I always remember "oh, yeah P5 doesn't have types" after using it for a while.
15:50 whiteknight benabik: after a while, I stopped using perl5
15:50 benabik Yeah.
15:51 benabik 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 :)
15:51 benabik You can have strongly typed dynamic languages.
15:51 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
15:51 benabik Not sure why you would.
15:51 benabik The point of strong typing (IMHO) is getting errors very quickly.
15:52 benabik 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
15:52 whiteknight I get plenty of recommendations about it
15:53 benabik Major problem with it is that it's big.  Uses lots of objects, has a large runtime.
15:54 benabik I was reading about people using it on Android.  That's fun.  Default heap size won't even run simple scala programs.
15:54 benabik But pattern matching, lazy lists, and functional style in the JVM is awesome.
15:55 benabik But this is #parrot, not #scala, so I'll get back to that PACT thing.
16:01 dmalcolm joined #parrot
16:04 dalek PACT: 2f8b563 | dukeleto++ | README.md:
16:04 dalek PACT: Add a readme
16:04 dalek PACT: review: https://github.com/parrot/PACT/commit/2f8b563ecd
16:04 benabik ack
16:05 atrodo benabik++  I've been too busy to see this start. I have high hopes for it
16:06 benabik atrodo: I have no idea how much time I have for it right now, but I'll do what I can.
16:08 cotto ~~
16:25 not_gerd joined #parrot
16:25 not_gerd hello, #parrot
16:26 benabik o/ not_gerd.  Were your ears burning?
16:26 not_gerd benabik: should they?
16:27 benabik not_gerd: klavs was interested in your m0+/- work.
16:37 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 TimToady Perl 5 put its precision into its operators, not its types; Perl 6 lets you do it both ways
16:38 TimToady (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
16:39 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."
16:39 TimToady benabik: eh, that's what eqv and === are
16:40 benabik TimToady: Should have specified "lack in Perl 5".  Do those exist in P5?
16:40 TimToady not yet :)
16:41 TimToady 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 ~~ ?
16:41 TimToady indeed
16:41 not_gerd for an example on how not to do ==, see Javascript
16:42 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.
16:43 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
16:43 * benabik is currently learning formal type systems and is enjoying it.
16:55 not_gerd klavs: if you're interested in m0±, see https://github.com/gerdr/on-parrot/commit/9940dc for some additional comments
16:55 not_gerd klavs: I'm currently implementing a prototype to see if the vague ideas mentioned there are fasible in pratice
16:59 klavs joined #parrot
17:03 klavs joined #parrot
17:05 klavspr_android joined #parrot
17:06 cotto ~~
17:23 dalek PACT: d004ddd | benabik++ | / (3 files):
17:23 dalek PACT: Organization, part 1: README
17:23 dalek PACT:
17:24 dalek PACT: Having a repository full of just my brainstorming seems less than
17:24 dalek PACT: useful.  Let's mark my brainstorming notes as that and pull out the
17:24 dalek PACT: goals into the README so others can see why we're bothering.
17:24 dalek PACT:
17:24 dalek PACT: I plan on separating out other useful parts of brainstorming.md soon.
17:24 dalek PACT: review: https://github.com/parrot/PACT/commit/d004ddd7a7
17:24 benabik I can get wordy really quickly.
17:25 cotto What's pact going to be written in?
17:26 benabik cotto: Current thought is Winxed.
17:26 cotto so pir, just indirectly
17:26 benabik Basically.
17:26 cotto unless winxed starts generating pbc directly, which would be awesome
17:26 benabik But pure-PIR is heinous for new people to get into.
17:27 cotto a language only a code generator could love
17:28 benabik Except no, because it assumes too much so that us poor humans can use it.  :-D
17:28 cotto sigh
17:29 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.
17:30 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.
17:31 atrodo And if I ever get time, I'd like to be able to use it for draak
17:32 cotto It sounds like it'd be a good thing for a hypothetical php compiler to target too.
17:33 benabik Ideally it's be a good thing for everything to target.  I plan 100% world domination.  :-D
17:38 fperrad joined #parrot
17:40 bluescreen joined #parrot
17:44 nine Aaah...a cup of coffee, a glass of wine, ready for code.
17:45 dalek PACT: 8e2319b | benabik++ | / (2 files):
17:45 dalek PACT: Organization: TODO
17:45 dalek PACT:
17:45 dalek PACT: Split out the implementation plan into its own document for ease of
17:45 dalek PACT: finding.  Turns out I had already been fairly verbose there, so little
17:45 dalek PACT: addition was required.
17:45 dalek PACT: review: https://github.com/parrot/PACT/commit/8e2319b72b
17:49 dalek rakudo/optimizer: ad8f64a | moritz++ | src/core/Int.pm:
17:49 dalek rakudo/optimizer: more native int ops
17:49 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/ad8f64a571
17:50 not_gerd nine: careful with the wine - hitting for the Ballmer Peak is not an easy endeavour
17:51 nine but a worthwhile oen ;)
17:51 nine s/oen/one/
17:51 not_gerd (btw, my beverage of choice is green tea and cider)
17:51 nine cider++
18:02 moritz nine: mixed together? :-)
18:02 moritz sorry, meant not_gerd
18:03 not_gerd moritz: well, no, so that should probably have read beverages ;)
18:04 not_gerd 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:05 not_gerd s/as//
18:05 moritz well, fruit juices are sweet, green tee not so :-)
18:07 not_gerd some experimentation on the ratio of various compounds is probably necessary
18:07 dalek PACT: a34eb92 | benabik++ | / (3 files):
18:07 dalek PACT: Organization, part 1: README
18:08 dalek PACT:
18:08 dalek PACT: Having a repository full of just my brainstorming seems less than
18:08 dalek PACT: useful.  Let's mark my brainstorming notes as that and pull out the
18:08 dalek PACT: goals into the README so others can see why we're bothering.
18:08 dalek PACT:
18:08 dalek PACT: I plan on separating out other useful parts of brainstorming.md soon.
18:08 dalek PACT: review: https://github.com/parrot/PACT/commit/a34eb92fbf
18:08 dalek PACT: b05010e | benabik++ | / (2 files):
18:08 dalek PACT: Organization: TODO
18:08 dalek PACT:
18:08 dalek PACT: Split out the implementation plan into its own document for ease of
18:08 dalek PACT: finding.  Turns out I had already been fairly verbose there, so little
18:08 dalek PACT: addition was required.
18:08 dalek PACT: review: https://github.com/parrot/PACT/commit/b05010ed50
18:08 whiteknight holy crapamole
18:08 cotto srsly
18:08 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
18:09 benabik benabik-- # rebasing pushed branches
18:09 whiteknight whatev
18:10 cotto who's played with the install process?  Hard-coded paths make Rakudo * hard to install to a non-fixed location.
18:11 whiteknight I stay as far away from the install process as possible
18:11 bluescreen joined #parrot
18:24 dalek PACT: 8e34f71 | benabik++ | TODO.md:
18:24 dalek PACT: Organization: TODO
18:24 dalek PACT:
18:24 dalek PACT: Split out the implementation plan into its own document for ease of
18:24 dalek PACT: finding.  Turns out I had already been fairly verbose there, so little
18:24 dalek PACT: addition was required.
18:24 dalek PACT: review: https://github.com/parrot/PACT/commit/8e34f71057
18:24 benabik ARG.
18:24 benabik DIE FILE FIE
18:32 dalek rakudo/optimizer: b6c5071 | moritz++ | src/core/Num.pm:
18:32 dalek rakudo/optimizer: native num trig ops
18:32 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/b6c5071970
18:32 dalek rakudo/optimizer: e19f726 | moritz++ | src/core/Num.pm:
18:32 dalek rakudo/optimizer: more num builtins, including log() and the rest of the trig functions
18:32 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/e19f7262a2
18:55 nine longjmp(square, 1)
18:55 benabik ?
18:56 nine well, another path turned out to be a dead end
18:56 atrodo nine++ # clever
18:58 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:59 whiteknight doing that in a way that is going to work on multiple systems is not a good idea
19:00 bluescreen joined #parrot
19:00 nine Well according to http://homepage.mac.com/sigfpe​/Computing/continuations.html it works surprisingly well. But I'd rather explore other options before turning to such desperate measures.
19:00 whiteknight okay
19:02 nine The other option being: trying to find out why continuations depend on their runloops and if I can change that.
19:05 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 benabik Actually, I think scratch the second.
19:06 benabik 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
19:06 whiteknight nine: if we restrict preemption to only happen in the top-level runloop, we can avoid that problem
19:06 nine benabik: jumping down does not work. Except if you restore the stack beforehand manually
19:07 dalek rakudo/optimizer: 2146e92 | moritz++ | / (14 files):
19:07 dalek rakudo/optimizer: Merge branch 'nom' into optimizer
19:07 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/2146e92546
19:07 whiteknight Like, if we have a "runloop depth" counter, we can only preempt when the runloop depth == 1
19:07 benabik This is why we want M0.  We want to be in an environment with GC and continuations as rapidly as possible.
19:07 nine we do have runloop_level
19:07 * nine is getting interested in M0
19:07 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
19:08 whiteknight 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.
19:08 whiteknight ew?
19:09 benabik updating jumpbufs?
19:09 nine Calling back into parrot will do that anyway, since it certainly will end up calling runops
19:11 whiteknight right
19:11 whiteknight nine: definitely take a look at the embedding API in src/embed/* and include/parrot/api.h
19:11 whiteknight the callin/callout sequences are both instructive and open for modification
19:14 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:17 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 whiteknight at least, I think so
19:23 nine Well as it happens, there's already a interp->current_runloop_level <= 1 in Parrot_cx_run_scheduler
19:30 whiteknight oh, nice
19:31 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.
19:32 benabik Including manipulation of the C stack.
19:32 moritz I thought we did that long ago
19:32 benabik get/setcontext may be more useful than set/longjmp
19:32 moritz we do CPS after all
19:32 benabik Our C code isn't CPS.
19:33 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:34 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
19:34 whiteknight 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
19:36 benabik Oh!  I renamed design.md, but left it open in Vim.  No wonder!
19:36 nine benabik: preemption
19:37 bluescreen_ joined #parrot
19:38 dalek PACT: 05f6f99 | benabik++ | / (2 files):
19:38 dalek PACT: Organization: Nodes
19:38 dalek PACT:
19:38 dalek PACT: This leaves really only information on compilation and stages in the
19:38 dalek PACT: brainstorming doc.  Cleaning those up is the last task.
19:38 dalek PACT: review: https://github.com/parrot/PACT/commit/05f6f99315
19:39 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:40 benabik dukeleto++ whiteknight++
19:40 whiteknight we're nefarious like that
19:40 benabik Although I think this is something like 99% of my free time for the week.  :-)
19:42 not_gerd blog post: http://gerdr.github.com/on-pa​rrot/introducing-m0--pm.html
19:42 awwaiid nine (re:preemption) still think you're crazy (though I have very little basis)
19:42 benabik Preemption is really tough.
19:42 nine What's life without a little challenge?
19:42 awwaiid death?
19:43 benabik nine: That's more like a lot of challenge.
19:43 tadzik it depends
19:57 moritz benabik: if you just preempt on the runloop level, is it really that tough?
19:57 moritz or is that the not-so-interesting type of preemption?
19:58 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:59 benabik 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
20:06 not_gerd good night, #parrot
20:09 nine holy hell, core tests pass! (almost...some expected task related failures)
20:09 benabik nine++
20:09 benabik nine++
20:10 perlite joined #parrot
20:11 mj41 joined #parrot
20:11 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 nine So no way that there could be an id clash
20:13 dalek rakudo/optimizer: 5b40d01 | moritz++ | src/core/ (4 files):
20:13 dalek rakudo/optimizer: use native types in the setting a bit more
20:13 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/5b40d01462
20:14 whiteknight nice
20:19 nine full parrot build now worked for the first time :)
20:19 tadzik wow
20:19 tadzik nine++
20:20 benabik What's the multi syntax in winxed?
20:20 benabik Eh.  I'll go pseudo-codeish.
20:20 whiteknight GABADAGABAGOO
20:20 whiteknight it's not very readable
20:20 nine I think at this point I earned myself an hour of reading a good book before going to sleep. Good night #parrot
20:20 whiteknight :)
20:20 benabik whiteknight: :-P
20:21 whiteknight benabik: for simple multi, you would just write a normal function with var/string/int/float
20:21 whiteknight for complex, it would be something like thisL:
20:21 tadzik g'night nine
20:22 whiteknight function foo[multi(string, class Foo.Bar, int, class ResizablePMCArray)](string s, var b, int i, var r) { }
20:24 benabik Bleh.  Definitely going pseudocode then.  :-D
20:54 mj41 joined #parrot
21:06 dalek PACT: f3a2189 | benabik++ | / (3 files):
21:06 dalek PACT: Organization Finished: Compilers and Stages
21:06 dalek PACT:
21:06 dalek PACT: Split the remaining notes into information on stages and the compiler
21:06 dalek PACT: object structure in general.  None of my ugly brainstorming remains,
21:06 dalek PACT: only something that resembles very hand-wavey design documents.
21:06 dalek PACT: review: https://github.com/parrot/PACT/commit/f3a2189f16
21:07 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.
21:08 benabik dukeleto: cotto: ^^, if you want more readable thoughts on PACT
21:09 benabik aloha: msg NotFound You expressed interest in PACT, so I thought you might want to know I have more readable notes on it now. https://github.com/parrot/PACT
21:09 aloha benabik: OK. I'll deliver the message.
21:09 benabik Wheeeeeee....
21:14 dalek rakudo/nom: d3e6519 | moritz++ | src/core/Int.pm:
21:14 dalek rakudo/nom: add some missing :D markers on Int ops, masak++
21:14 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d3e651975a
21:17 cotto benabik: how long did it take you to write that?
21:18 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:20 cotto I'm excited.  This has good potential.
21:21 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:32 dalek PACT: 3195755 | benabik++ | TODO.md:
21:32 dalek PACT: Update TODO
21:32 dalek PACT:
21:32 dalek PACT: My brainstorming notes are mostly done, but the resulting docs are
21:32 dalek PACT: probably fairly incomplete.
21:32 dalek PACT: review: https://github.com/parrot/PACT/commit/3195755a4c
21:33 sorear what's pact?
21:33 benabik Blog post incoming on the topic for more publicity.
21:33 benabik PACT = Parrot Alternate Compiler Toolkit
21:34 benabik 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 rakudo/nom: fb53581 | moritz++ | src/core/Cool.pm:
21:34 dalek rakudo/nom: missing coercers, gfldex++
21:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/fb5358187d
21:53 benabik dalek'll probably squawk about it in a minute, but: http://www.parrot.org/content/pact-design-notes
21:53 benabik And with that I'm off
21:55 dalek website: benabik++ | PACT - Design Notes
21:55 dalek website: http://www.parrot.org/content/pact-design-notes
21:55 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 #parrot
23:13 dalek rakudo/optimizer: a47b0cd | jnthn++ | src/Perl6/Actions.pm:
23:13 dalek rakudo/optimizer: Tighten up what we admit for inlining; require that the arguments are *all* mentioned.
23:13 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/a47b0cd4bd
23:13 dalek rakudo/optimizer: fb111db | jnthn++ | / (3 files):
23:13 dalek rakudo/optimizer: 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.
23:13 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/fb111db88f
23:42 dalek rakudo/optimizer: c191cfe | jnthn++ | src/Perl6/Optimizer.pm:
23:42 dalek rakudo/optimizer: Improve error reporting. When we determine a call could never work, shows the desired signature(s) in the error.
23:42 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/c191cfe663
23:43 nbrown_ joined #parrot
23:45 dalek rakudo/optimizer: b5d2c9b | jnthn++ | src/Perl6/Actions.pm:
23:45 dalek rakudo/optimizer: Try to get better line reporting for calls.
23:45 dalek rakudo/optimizer: review: https://github.com/rakudo/rakudo/commit/b5d2c9bb54

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced