Perl 6 - the future is here, just unevenly distributed

IRC log for #phasers, 2011-05-24

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

All times shown according to UTC.

Time Nick Message
17:10 mberends joined #phasers
18:03 masak joined #phasers
18:05 benabik joined #phasers
18:29 mikehh joined #phasers
18:56 Util Pre-report: No Perl 6 work this past week (or coming week); Working on old Parrot tickets and YAPC talk.
18:57 masak pre-report: been at YAPC::Russia and talked about parsing and DSLs. written a manifesto. not done much else to speak of. EOR
19:03 tadzik I'm not late!
19:03 * jnthn either!
19:04 tadzik jnthn: I just got a ticket you would be proud of :P
19:05 tadzik that almost made me late
19:05 tadzik is anyone chairing?
19:05 jnthn A...ticket? :)
19:06 tadzik yeah, I've been found guilty of... drinking beer :)
19:06 masak \o/
19:06 jnthn \o/
19:06 jnthn tadzik++
19:06 tadzik I feel proud too
19:06 jnthn In Poland you get tickets for drinking beer? :)
19:06 jnthn Gee, here you only get bankrupt... P
19:06 tadzik yeah, when it's in the park
19:06 jnthn aww.
19:07 masak you're allowed to drink in the park in your country? :P
19:07 tadzik I find it _so_ wrong I actually don't mind getting the ticket
19:07 jnthn masak: You're...not in this one?
19:07 masak jnthn: technically no, but no-one cares if you behave.
19:07 tadzik smokers smoke everywhere and you can't calmly drink a beer in the wild, that's ridiculous
19:07 jnthn :)
19:07 jnthn tadzik: Yes, it's silly. :/
19:07 tadzik that's why I don't mind
19:08 masak tadzik: smoking is basically outlawed here too.
19:08 tadzik well, at least that's consistent
19:08 jnthn So, does anyone here have a beer^Wreport?
19:08 tadzik here you can smoke wherever you are (excluding indoor places not suited for smokers), but drinking beer is strictly forbidden
19:09 tadzik I has a report, yes
19:09 tadzik I could've precached it if I wasn't given a stupid beer ticket *grumble mumble*
19:09 tadzik can I?
19:09 masak go ahead.
19:10 tadzik so, I started GSoC work early. The parser in gsocmess repo is mostly done for the first two weeks of my schedule. The grammar is migrated to Rakudo, and at the moment of speaking, gsoc-podparser branch passes more spectests than master does
19:11 tadzik the action methods are not migrated yet, I need to think a bit about how to exponate the AST to the Perl 6 code, at least temporarily
19:12 tadzik I also did some minor panda tuning, and renamed the repo: it's not "Pies" anymore, it's now "panda", as panda is actual thing people care about
19:13 tadzik plans: complete GSoC week #1 and #2, preferably in week #1, the next week on the University is so "funny" I'm not sure whether I should cry, or is it already too late for crying
19:13 masak it's never too late to cry.
19:13 jnthn she...left me... :'(
19:13 tadzik honestly, compared to the next week, the exam session is going to be _so_ chillout
19:14 tadzik but I'm offtopicing. =end REPORT
19:14 jnthn tadzik: Hope exam prep/session goes well. :)
19:14 masak tadzik++
19:14 tadzik oh, and also I removed some invalid Pod from Rakudo :)
19:14 masak yay
19:15 tadzik jnthn: I hope so too, but... what can I say... compared to GSoC, the Uni work is so boaring and not-sensemaking... ah
19:16 tadzik plus moritz would probably be sad if I failed physics yet another time :)
19:17 * jnthn can has report?
19:17 masak aye.
19:17 jnthn Over the last couple of weeks...
19:17 jnthn * Went to YAPC::Russia. Hacked a bit. Gave talks.
19:17 jnthn * Drank beer in Russia.
19:17 jnthn * Ate nice food in Russia.
19:17 jnthn * Did sightseeing in Russia. Saint Petersburg...quite an eyeful. :-)
19:17 jnthn * Thankfully for Rakudo, left distracting Russia, came home and resumed hacking
19:17 jnthn * nom now gets through the build
19:17 jnthn * First trait mod for inheritance is in place and works - need multi-dispatch to do more really
19:17 jnthn * Got the binder using new unified parameter/signature objects; very happy with that. More to do here but good start.
19:17 jnthn * Many other bits working towards getting Rakudo on its feet again
19:17 jnthn Next steps...
19:17 jnthn * Type lookups
19:17 jnthn * Methods
19:17 jnthn * Attributes
19:17 jnthn * Stashes, package scoped stuff
19:18 jnthn * Whatever else I have time for...got family visiting at weekend though
19:18 jnthn EOR
19:18 masak jnthn++!
19:18 jnthn Oh, and tossed named to postional binding in nom :)
19:18 tadzik nice, jnthn++ indeed
19:18 jnthn masak++ for writing up the manifesto :)
19:18 tadzik I like how nom builds now
19:19 masak (river Neva)++ for providing a nice backdrop for discussing the manifesto. and for me forgetting how sore my feet were ;)
19:19 jnthn Yeah. We should tell that guy who was complaining about the size of the perl6 executable about the improvement to its size. :)
19:19 tadzik :)
19:19 jnthn 48,640 perl6.exe
19:19 jnthn \o/ :)
19:19 masak wow!
19:20 tadzik > duhs `which perl6`
19:20 tadzik 0/home/tadzik/bin/perl6
19:20 tadzik ...but I think it may be a symlink
19:20 tadzik plus it's a nom perl6 executable :P
19:21 tadzik are we done? Not that I'm accelerating, but I should be home, not the-first-place-around-with-wifi-when-#phasers-time-is-now
19:21 * jnthn has nothing more :)
19:21 masak unless someone has more beers^Wreports...
19:21 tadzik masak? everyone else seems absent
19:22 * mberends haz
19:22 masak tadzik: I already pre-reported
19:22 tadzik aye
19:22 masak mberends: go right ahead.
19:22 tadzik mberends: go on
19:22 mberends Report: Didn't do: write the promised native library to help zavolaj testing/troubleshooting.  I'll get a round tuit, really.
19:22 mberends Also didn't continue with 6model/JVM development, will probably never get a round tuit on that, so other interested people please volunteer.
19:23 mberends Did do: much work on "Perlduino", a tiny Perl 6 subset to C compiler for Arduino microcontrollers (2K RAM, 32K ROM, http://arduino.cc) salvaged from the earlier Vill project.  It should prove its feasibility in a few weeks.  A brand new tokenizer and parser are beginning to work.
19:23 mberends Plan: more Perl 6 to C work, including maybe an experimental 6model/C containing some aspects of SMOP.
19:24 mberends My first software love was C, and getting back together with the old flame to make some Perl 6 feels very nice.
19:24 mberends .EOR
19:24 tadzik mberends++ # yay for Perlduino
19:24 tadzik !
19:24 jnthn mberends: fwiw, the Parrot 6model rendering is mostly 6model-on-C with some Parrot wrappings. Toss the Parrot wrapping and you may be able to steal a bunch of bits :)
19:25 mberends cool!
19:25 masak \o/
19:25 tadzik having an efficient C-level Perl 6 subset not only for Arduino seems nice-ish too
19:26 jnthn Yeah. We could write a VM in it... :)
19:26 tadzik or maybe I just think so because of the previous experiences today. Basically, a fellow student attacking his fellow students with the glass he got from the door he broke is... LTA
19:27 jnthn ouch :/
19:28 tadzik add an ER taking him to a psychiatric hospital... I suddenly feel so down-to-earth, even looking at the calendar for the next week
19:28 masak :/
19:29 * tadzik going home, bbi 40-60 mins
19:33 mberends jnthn: would it be ok with you if I made a C subtree in the 6model repo?
19:33 sorear hi #phasers
19:33 masak hi sorear. any report?
19:34 jnthn mberends: Feel free.
19:34 sorear 1. this is finals week.  I have much more time now
19:35 sorear 2. I've done random hacking on niecza, largely in the back end
19:35 sorear 3. I'm seriously considering making niecza avoid appdomains (details on request)
19:35 sorear 4. the niecza backend is moving towards a "serialized metaobject blobs" model, in a slow and incremental way
19:36 sorear 5. mono run/Niecza.exe --help is down from 5.1s to 2.1s (after make reboot)
19:37 sorear EOR I think?  did other stuff last week but not much interesting stuff to comment on
19:37 sorear maybe the design of numbers, maybe
19:37 masak sorear++
19:37 sorear did we come to a decision on what to do about trigbase?
19:38 ashleydev left #phasers
19:39 ashleydev joined #phasers
19:51 pmichaud oops, I'm late for phasers
19:52 jnthn Well, it's important to CHECK the time it'll BEGIN, INIT? :)
19:53 masak dåligt.
19:53 jnthn :P
19:55 sorear hello, pmichaud.
19:55 sorear you aren't late
19:55 sorear I just got here too
19:55 sorear let's have a mini-phasers, just the two of us :)  Have you made up your mind yet whether foo(1 => $x, 0 => $y) should be implemented?
19:57 pmichaud I'm sure it's legal.  I'm not sure what it should do.  :)
19:57 jnthn compile to foo($y, $x) iiuc
19:57 PerlJam pmichaud: magic
19:57 sorear well right now niecza compiles it to pass two Pair positionals
19:58 pmichaud *compile* to foo($y, $x)
19:58 pmichaud that sounds icky magic
19:58 pmichaud ?
19:58 jnthn pmichaud: ?
19:58 masak it's just sugar...
19:58 jnthn pmichaud: It's a relatively straightforward transformation, imho
19:58 jnthn pmichaud: I'm not so sure I see the need for it as a language feature.
19:59 jnthn But implementing it, if it's just that transform, bothers me a little less.
19:59 sorear pmichaud: logically, it's just compiling two "named" arguments with names "1" and "0"
19:59 pmichaud I'm not thinking about it so much from a "hard to implement" standpoint
19:59 PerlJam jnthn: and foo(1 => $x, 7213 => $y)  ?
19:59 jnthn PerlJam: Non-contiguous positionals error. :)
20:00 jnthn pmichaud: Oh, you meant "icky magic" from a user perspective?
20:00 jnthn OK, that I can buy much more :)
20:00 pmichaud jnthn: yes.
20:00 PerlJam jnthn: and foo(1 => $x)  ?
20:00 pmichaud to me, it also relates somewhat to the notion of   $/<0>  being mapped to $/[0]
20:01 masak fwiw, I also don't see the need for the feature.
20:01 masak but it might just be lack of imagination :P
20:01 pmichaud and also feels funny in that I'm not sure if this is just for function calls or for generic parcel/capture semantics as well
20:01 pmichaud my $parcel = (1 => $x, 0 => $y)
20:01 sorear it doesn't feel funny to me - I think I get it
20:01 pmichaud does that end up being the same as   my $parcel = ($y, $x)     ?
20:02 sorear the crux of the change is that the binder now looks for $cap<2> if it can't find $cap[2]
20:02 sorear basically the same as what Match objects already do
20:02 pmichaud sorear: that doesn't sound compile-time-ish to me, though.  I suppose it could be.
20:03 sorear one might go so far as to say that now, Captures do not have a positional part except as an optimization
20:03 sorear they're more like Lua tables - a hash, with special storage for contiguous integer keys starting at 0
20:03 pmichaud or, that positional arguments are simply named '0', '1', '2', etc. -- same as in regex matches.
20:03 sorear now, \(1 => $x, 0 => $y) can be optimized at compile time to \($y, $x)
20:04 sorear but it's just that - an optimization
20:04 jnthn sorear: That wasn't how I'd understood it at all.
20:04 sorear the unoptimized semantics feel simpler to me now
20:04 masak there's something to that.
20:05 jnthn sorear: If 0 => ..., 1 => ... exists it's a compile time transformation. The point is the binder doesn't have to ever worry about mapping nameds to positionals.
20:05 pmichaud I just have trouble seeing its utility being worth the potential confusion
20:05 jnthn pmichaud: Same, I was hoping to just get a chunk of spec ripped out rather than a chunk of spec replaced.
20:05 pmichaud jnthn: which chunk of spec?
20:05 masak the chunk talking about binding named args to positional params.
20:05 jnthn pmichaud: The bit where nameds can fill positional arguments.
20:06 masak parameters.
20:06 jnthn er, yes, parameters.
20:06 pmichaud jnthn: you're wanting to eliminate that?
20:06 jnthn Yes.
20:06 pmichaud fwiw, that was one of things that got an "oh wow cool" response at the last Perl 6 presentation I gave in April.
20:07 masak pmichaud: https://gist.github.com/984783
20:07 pmichaud I disagree that it's not used.
20:08 masak go on.
20:08 pmichaud I do things like that all the time in shell scripts and the like
20:08 pmichaud i.e., provide for arguments to be filled in either positionally or by name
20:08 pmichaud it seems like MAIN() would be a primary example of where this feature could be very very useful
20:09 pmichaud sometimes when I'm calling programs/scripts/functions that have long argument lists, it's much more beneficial to specify some or all of the arguments by name instead of having to worry about their order
20:09 pmichaud that said, I wouldn't want to require the arguments to be specified by name
20:10 pmichaud an example:  sub mysql_real_connect( OpaquePointer $mysql_client, Str $host, Str $user, Str $password, Str $database, Int $port, Str $socket, Int $flag )
20:10 sorear I think that the ability to have arguments that are either positional or named is useful
20:10 sorear and we've lost that from the current spec
20:10 pmichaud it'd be nice to call that as   mysql_real_connect($client, $host, :$database, :$user, :$password, ...)
20:11 sorear I'm not wedded to "every positional gets a name from its variable name"
20:11 pmichaud but if we eliminate the "named fills positionals" feature, that goes away.
20:11 jnthn pmichaud: If it goes back into the spec then it should be explicitly "opt in", imo.
20:11 jnthn Not the default that you can do both.
20:12 sorear I could see something like sub foo($h is also-named<host>) {...}
20:12 pmichaud and I guarantee that    mysql_real_connect($client, $host, 4=>$database, 2=>$user, 3=>$passwd)   is not a good replacement
20:12 sorear pmichaud: agreed
20:12 jnthn I agree with that.
20:12 masak +1
20:12 sorear masak: +1 to my strawman syntax, really???
20:13 masak no, to pmichaud's guarantee ;)
20:13 pmichaud we already have a syntax for "is also named"  iirc
20:13 sorear que?
20:14 pmichaud sub xyz($text, :abc($case))
20:14 pmichaud although maybe that's only for named parameters
20:15 pmichaud still, we have   :g(:$global)   which is used to give $global an alias of 'g'
20:15 sorear it looks like both niecza and rakudo interpret that as being a non-positional param with 1 name
20:16 pmichaud right, I'm wondering if it makes more sense to say that it's a positional param with a name
20:16 masak I'd like to put forth the "oh, and this clashes with base conversion" paragraph in the recent S06 addition as a strong indication of ENOTTHEREYET.
20:16 sorear also, the implementation jnthn ripped out of rakudo looks way overcomplicated
20:16 sorear adding "named parameters can fill positional slots" to niecza was a 1-line change
20:17 pmichaud I can't comment on that piece.
20:17 pmichaud (at least, not at the moment)
20:18 jnthn sorear: You're probably comparing apples and oranges.
20:18 sorear jnthn: probably.
20:18 pmichaud hmm, looks like I didn't get a commit email for the latest changes to S06.  Looking.
20:20 pmichaud jnthn: also, note that the change says that keyed positionals isn't restricted to compile-time analysis (in commit 74b208c).  Maybe you saw that already.
20:21 jnthn pmichaud: oh, ouch :/
20:21 jnthn Then it's no help at all.
20:21 masak I think the fact that you can write :bar($foo) but not :1($foo) is a sign that either base conversion has the wrong syntax, or the new feature really wants to be something else.
20:21 pmichaud I don't think the new feature is helpful at all.
20:21 pmichaud I think TheDamian would agree with me.  Positions make lousy descriptors.
20:21 jnthn Aye.
20:22 pmichaud that's why we're also trying to move away from  $0, $1, $2,    in regexes into named forms.
20:22 pmichaud I have to leave shortly, so here are my two pennies:
20:22 pmichaud Being able to specify parameters either positionally or by name is very useful in some contexts.
20:22 pmichaud It doesn't have to be the default (and probably shouldn't be the default)
20:23 pmichaud so it would be nicer to have a syntax to say  "this positional can also be filled by a named argument of '...'"
20:23 masak from what you described, pmichaud, it sounds like "some contexts" are "in MAIN".
20:23 pmichaud the example I gave of mysql_real_connect is another
20:23 masak oh, true.
20:23 pmichaud also any time there is a subroutine with lots of defaulted parameters
20:24 pmichaud see, for example,  IO::Prompt
20:24 pmichaud (which may have parameters that make sense both positionally and by name)
20:26 pmichaud anyway, I see that the change as it stands now is (1) no help, as jnthn++ says, and (2) of far less utility than what we had before.
20:26 pmichaud I agree that the fact that any positional parameter implies an API is troublesome and ought to be fixed.
20:26 jnthn pmichaud: I can see the argument that some opt-in way to do this could be useful.
20:27 jnthn Equally, I value the binder simplification :)
20:27 pmichaud can someone point TimToady at the above comments, if he's not already reading them?
20:29 pmichaud I have to go in a minute or two -- I'll post my #phasers report a bit later
20:29 pmichaud summary: got sufficient changes into Parrot release that I think we can get zavolaj and friends working again
20:29 pmichaud did a lot more benchmarking of rakudo and parrot, especially the 2011.05 release
20:30 pmichaud I think we should issue a Star 2011.05 release
20:30 masak left #phasers
20:30 pmichaud I refactored the "rakbench" suite to be "rpbench"
20:30 pmichaud various benchmarking results now appear in their own repository:  https://github.com/pmichaud/rpbench-results
20:31 pmichaud (and based on those results, you can see why I think we need a 2011.05 star release)
20:31 pmichaud plan to finish out more benchmarking, review some reports, write some articles, and (time permitting) dive into nqp and nom a bit more.
20:31 pmichaud EOR
20:33 pmichaud afk, house errands
20:39 ashleydev left #phasers
20:40 ashleydev joined #phasers
20:45 spinclad joined #phasers
20:45 ashleydev left #phasers
20:45 ashleydev joined #phasers
21:42 benabik left #phasers
23:20 mikehh left #phasers

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