weekly Rakudo status meetings with phase transitions: Tue 19:00 UTC | IR clogs at irclog.perlgeek.de/phasers/today
Set by moderator on 26 April 2011.
17:10 mberends joined 18:03 masak joined 18:05 benabik joined 18:29 mikehh joined
Util Pre-report: No Perl 6 work this past week (or coming week); Working on old Parrot tickets and YAPC talk. 18:56
masak pre-report: been at YAPC::Russia and talked about parsing and DSLs. written a manifesto. not done much else to speak of. EOR 18:57
tadzik I'm not late! 19:03
jnthn either!
tadzik jnthn: I just got a ticket you would be proud of :P 19:04
that almost made me late 19:05
is anyone chairing?
jnthn A...ticket? :)
tadzik yeah, I've been found guilty of... drinking beer :) 19:06
masak \\o/
jnthn \\o/
tadzik++
tadzik I feel proud too
jnthn In Poland you get tickets for drinking beer? :)
Gee, here you only get bankrupt... P
tadzik yeah, when it's in the park
jnthn aww.
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
jnthn masak: You're...not in this one?
masak jnthn: technically no, but no-one cares if you behave.
tadzik smokers smoke everywhere and you can't calmly drink a beer in the wild, that's ridiculous
jnthn :)
tadzik: Yes, it's silly. :/
tadzik that's why I don't mind
masak tadzik: smoking is basically outlawed here too. 19:08
tadzik well, at least that's consistent
jnthn So, does anyone here have a beer^Wreport?
tadzik here you can smoke wherever you are (excluding indoor places not suited for smokers), but drinking beer is strictly forbidden
I has a report, yes 19:09
I could've precached it if I wasn't given a stupid beer ticket *grumble mumble*
can I?
masak go ahead.
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:10
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:11
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:12
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.
jnthn she...left me... :'(
tadzik honestly, compared to the next week, the exam session is going to be _so_ chillout
but I'm offtopicing. =end REPORT 19:14
jnthn tadzik: Hope exam prep/session goes well. :)
masak tadzik++
tadzik oh, and also I removed some invalid Pod from Rakudo :)
masak yay
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:15
plus moritz would probably be sad if I failed physics yet another time :) 19:16
jnthn can has report? 19:17
masak aye.
jnthn Over the last couple of weeks...
* Went to YAPC::Russia. Hacked a bit. Gave talks.
* Drank beer in Russia.
* Ate nice food in Russia.
* Did sightseeing in Russia. Saint Petersburg...quite an eyeful. :-)
* Thankfully for Rakudo, left distracting Russia, came home and resumed hacking
* nom now gets through the build
* First trait mod for inheritance is in place and works - need multi-dispatch to do more really
* Got the binder using new unified parameter/signature objects; very happy with that. More to do here but good start.
* Many other bits working towards getting Rakudo on its feet again
Next steps...
* Type lookups
* Methods
* Attributes
* Stashes, package scoped stuff
* Whatever else I have time for...got family visiting at weekend though 19:18
EOR
masak jnthn++!
jnthn Oh, and tossed named to postional binding in nom :)
tadzik nice, jnthn++ indeed
jnthn masak++ for writing up the manifesto :)
tadzik I like how nom builds now
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. :)
tadzik :)
jnthn 48,640 perl6.exe
\\o/ :)
masak wow!
tadzik > duhs `which perl6` 19:20
0/home/tadzik/bin/perl6
...but I think it may be a symlink
plus it's a nom perl6 executable :P
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 :)
masak unless someone has more beers^Wreports...
tadzik masak? everyone else seems absent
mberends haz 19:22
masak tadzik: I already pre-reported
tadzik aye
masak mberends: go right ahead.
tadzik mberends: go on
mberends Report: Didn't do: write the promised native library to help zavolaj testing/troubleshooting. I'll get a round tuit, really.
Also didn't continue with 6model/JVM development, will probably never get a round tuit on that, so other interested people please volunteer.
Did do: much work on "Perlduino", a tiny Perl 6 subset to C compiler for Arduino microcontrollers (2K RAM, 32K ROM, 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
Plan: more Perl 6 to C work, including maybe an experimental 6model/C containing some aspects of SMOP.
My first software love was C, and getting back together with the old flame to make some Perl 6 feels very nice. 19:24
.EOR
tadzik mberends++ # yay for Perlduino
!
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 :)
mberends cool! 19:25
masak \\o/
tadzik having an efficient C-level Perl 6 subset not only for Arduino seems nice-ish too
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
jnthn ouch :/ 19:27
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 :/
tadzik going home, bbi 40-60 mins 19:29
mberends jnthn: would it be ok with you if I made a C subtree in the 6model repo? 19:33
sorear hi #phasers
masak hi sorear. any report?
jnthn mberends: Feel free. 19:34
sorear 1. this is finals week. I have much more time now
2. I've done random hacking on niecza, largely in the back end 19:35
3. I'm seriously considering making niecza avoid appdomains (details on request)
4. the niecza backend is moving towards a "serialized metaobject blobs" model, in a slow and incremental way
5. mono run/Niecza.exe --help is down from 5.1s to 2.1s (after make reboot) 19:36
EOR I think? did other stuff last week but not much interesting stuff to comment on 19:37
maybe the design of numbers, maybe
masak sorear++
sorear did we come to a decision on what to do about trigbase?
19:38 ashleydev left 19:39 ashleydev joined
pmichaud oops, I'm late for phasers 19:51
jnthn Well, it's important to CHECK the time it'll BEGIN, INIT? :) 19:52
masak dƄligt. 19:53
jnthn :P
sorear hello, pmichaud. 19:55
you aren't late
I just got here too
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?
pmichaud I'm sure it's legal. I'm not sure what it should do. :) 19:57
jnthn compile to foo($y, $x) iiuc
PerlJam pmichaud: magic
sorear well right now niecza compiles it to pass two Pair positionals
pmichaud *compile* to foo($y, $x) 19:58
that sounds icky magic
?
jnthn pmichaud: ?
masak it's just sugar...
jnthn pmichaud: It's a relatively straightforward transformation, imho
pmichaud: I'm not so sure I see the need for it as a language feature.
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"
pmichaud I'm not thinking about it so much from a "hard to implement" standpoint
PerlJam jnthn: and foo(1 => $x, 7213 => $y) ?
jnthn PerlJam: Non-contiguous positionals error. :)
pmichaud: Oh, you meant "icky magic" from a user perspective? 20:00
OK, that I can buy much more :)
pmichaud jnthn: yes.
PerlJam jnthn: and foo(1 => $x) ?
pmichaud to me, it also relates somewhat to the notion of $/<0> being mapped to $/[0]
masak fwiw, I also don't see the need for the feature. 20:01
but it might just be lack of imagination :P
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
my $parcel = (1 => $x, 0 => $y)
sorear it doesn't feel funny to me - I think I get it
pmichaud does that end up being the same as my $parcel = ($y, $x) ?
sorear the crux of the change is that the binder now looks for $cap<2> if it can't find $cap[2] 20:02
basically the same as what Match objects already do
pmichaud sorear: that doesn't sound compile-time-ish to me, though. I suppose it could be.
sorear one might go so far as to say that now, Captures do not have a positional part except as an optimization 20:03
they're more like Lua tables - a hash, with special storage for contiguous integer keys starting at 0
pmichaud or, that positional arguments are simply named '0', '1', '2', etc. -- same as in regex matches.
sorear now, \\(1 => $x, 0 => $y) can be optimized at compile time to \\($y, $x)
but it's just that - an optimization 20:04
jnthn sorear: That wasn't how I'd understood it at all.
sorear the unoptimized semantics feel simpler to me now
masak there's something to that.
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
jnthn pmichaud: Same, I was hoping to just get a chunk of spec ripped out rather than a chunk of spec replaced.
pmichaud jnthn: which chunk of spec?
masak the chunk talking about binding named args to positional params.
jnthn pmichaud: The bit where nameds can fill positional arguments.
masak parameters. 20:06
jnthn er, yes, parameters.
pmichaud jnthn: you're wanting to eliminate that?
jnthn Yes.
pmichaud fwiw, that was one of things that got an "oh wow cool" response at the last Perl 6 presentation I gave in April.
masak pmichaud: gist.github.com/984783 20:07
pmichaud I disagree that it's not used.
masak go on. 20:08
pmichaud I do things like that all the time in shell scripts and the like
i.e., provide for arguments to be filled in either positionally or by name
it seems like MAIN() would be a primary example of where this feature could be very very useful
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
that said, I wouldn't want to require the arguments to be specified by name
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
and we've lost that from the current spec
pmichaud it'd be nice to call that as mysql_real_connect($client, $host, :$database, :$user, :$password, ...)
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.
jnthn pmichaud: If it goes back into the spec then it should be explicitly "opt in", imo.
Not the default that you can do both.
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
sorear pmichaud: agreed
jnthn I agree with that.
masak +1
sorear masak: +1 to my strawman syntax, really???
masak no, to pmichaud's guarantee ;) 20:13
pmichaud we already have a syntax for "is also named" iirc
sorear que?
pmichaud sub xyz($text, :abc($case)) 20:14
although maybe that's only for named parameters
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
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.
sorear also, the implementation jnthn ripped out of rakudo looks way overcomplicated
adding "named parameters can fill positional slots" to niecza was a 1-line change
pmichaud I can't comment on that piece. 20:17
(at least, not at the moment)
jnthn sorear: You're probably comparing apples and oranges. 20:18
sorear jnthn: probably.
pmichaud hmm, looks like I didn't get a commit email for the latest changes to S06. Looking.
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:20
jnthn pmichaud: oh, ouch :/ 20:21
Then it's no help at all.
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.
pmichaud I don't think the new feature is helpful at all.
I think TheDamian would agree with me. Positions make lousy descriptors.
jnthn Aye.
pmichaud that's why we're also trying to move away from $0, $1, $2, in regexes into named forms. 20:22
I have to leave shortly, so here are my two pennies:
Being able to specify parameters either positionally or by name is very useful in some contexts.
It doesn't have to be the default (and probably shouldn't be the default)
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".
pmichaud the example I gave of mysql_real_connect is another
masak oh, true.
pmichaud also any time there is a subroutine with lots of defaulted parameters
see, for example, IO::Prompt 20:24
(which may have parameters that make sense both positionally and by name)
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
I agree that the fact that any positional parameter implies an API is troublesome and ought to be fixed.
jnthn pmichaud: I can see the argument that some opt-in way to do this could be useful.
Equally, I value the binder simplification :) 20:27
pmichaud can someone point TimToady at the above comments, if he's not already reading them?
I have to go in a minute or two -- I'll post my #phasers report a bit later 20:29
summary: got sufficient changes into Parrot release that I think we can get zavolaj and friends working again
did a lot more benchmarking of rakudo and parrot, especially the 2011.05 release
I think we should issue a Star 2011.05 release 20:30
20:30 masak left
pmichaud I refactored the "rakbench" suite to be "rpbench" 20:30
various benchmarking results now appear in their own repository: github.com/pmichaud/rpbench-results
(and based on those results, you can see why I think we need a 2011.05 star release) 20:31
plan to finish out more benchmarking, review some reports, write some articles, and (time permitting) dive into nqp and nom a bit more.
EOR
afk, house errands 20:33
20:39 ashleydev left 20:40 ashleydev joined 20:45 spinclad joined, ashleydev left, ashleydev joined 21:42 benabik left 23:20 mikehh left