»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
cxreg | you know what i meant | 00:00 | |
but yeha | |||
tadzik | well | 00:03 | |
I see nothing wrong with publishing just grammars and nothing else | |||
00:04
atrodo left
00:27
drbean joined
00:39
Crooky joined
|
|||
Crooky | fufrd go fu hrr`? | 00:53 | |
roh | |||
00:53
tokuhirom left
|
|||
Crooky | eh, can't see the keyboard, nbmvmdif .. see yoiu tomorrow | 00:53 | |
01:00
am0c joined
01:04
scott_ joined
01:06
lichtkind left,
xinming_ joined
01:09
xinming left
|
|||
cognominal | Génération of a json file is very slow. Recursive routine like to-json tends to concatenate at each level of recursion. would it not be possible to do lazy concatenation? Meaning doing the concatenations when the string are really needed. I suppose this is very different from full fledge ropes. | 01:16 | |
sorear | push onto an array, then call .join at the end | 01:22 | |
cognominal | sure enough, but I think that's eventually the compiler job. | 01:23 | |
anyway I will try it. The cost being loosing a chance to garbage collect the small chunks. | 01:25 | ||
01:27
PZt joined,
PZt left
01:31
Pzt3 joined
01:32
Pzt3 is now known as PZt
01:33
tyatpi left
01:34
mikemol joined
01:35
tyatpi joined
01:37
whiteknight left
01:40
cog_ joined
01:43
cognominal left
01:45
cog_ left,
cog_ joined
|
|||
[Coke] | This is like string vs. stringbuilder. We could make an explicit stringBuilder, but @strings is so easy. | 01:56 | |
02:05
Crooky left
02:21
orafu left,
orafu joined
02:25
arnsholt joined
|
|||
flussence | sorear: that would work... but the last time I had to do that in any language was because of IE6. :) | 02:25 | |
(wait, don't we already have a Cat object?) | 02:26 | ||
sorear | [Coke]: TimToady says Str should eventually be a rope with O(log n) concat, fwiw | 02:27 | |
03:04
Crooky joined
03:13
shinobicl joined
|
|||
shinobicl | hi | 03:13 | |
i'm having problems compiling rakudo .... | 03:14 | ||
a lot of warnings on NativeCall.c | 03:16 | ||
03:32
sudokode left
03:46
Crooky left
03:51
tyatpi left
03:58
drbean left
03:59
drbean joined
|
|||
shinobicl | has been any changes on the process of compiling rakudo? any new dependence? | 03:59 | |
04:01
_jaldhar joined
04:04
kaleem joined,
abercrombie joined
04:15
kaleem left
04:16
abercrombie left
04:32
shinobicl left
04:38
BaggioKwok joined
04:47
mikemol left
04:55
birdwindupbird joined
04:56
BaggioKwok left
|
|||
TimToady and quietfanatic have now made it to the Pacific Northwet... | 05:06 | ||
sorear | o/ TimToady | 05:07 | |
05:07
fhelmberger joined
05:12
prioli joined,
prioli left
|
|||
sorear | bah. | 05:19 | |
2012/06/22 went by and I forgot to mark it | |||
shachaf | What happened on 2012-06-22? | 05:20 | |
sorear | more to the point what happened on 2010-06-22 | ||
diakopter | niecza bd? | ||
sorear | 2nd anniversary of the first commit | 05:21 | |
it's still a little hard to beleive it has been this long | |||
dalek | ecza: 414b1d6 | sorear++ | docs/announce.v19: Draft v19 announcement |
05:30 | |
moritz | sorear++ # two years niecza | 05:33 | |
phenny | moritz: 25 Jun 23:44Z <diakopter> ask moritz I'd love to see a histogram of weekly #perl6 activity (the number of messages in a given time slice (1hr? 15min?), averaged over the past N weeks, for the whole week). Does your irclog db support such a thing? | ||
moritz | phenny: tell diakopter I pondered a simple activity stat by day, that would be easier on the DB | 05:34 | |
phenny | moritz: I'll pass that on when diakopter is around. | ||
moritz | sorear: it would be even harder to believe you brought niecza to its current shape in less than two years :-) | 05:38 | |
05:51
kaleem joined
06:02
brrt joined
06:04
sudokode joined
|
|||
pmichaud | good morning, #perl6 | 06:09 | |
sorear | haha | 06:11 | |
good morning pmichaud :p | |||
sorear wonders if pmichaud might not be in Texas today | 06:12 | ||
pmichaud | I'm in Texas, definitely. | ||
my sleep schedule is off, though. | |||
tadzik | ho, you're like in Polish timezone :) | 06:17 | |
good morning | |||
pmichaud | sorear++ niecza++ # happy birthday niecza | ||
sisar | where is the .new class constructor specced properly? I can't find it in S12. | 06:18 | |
06:19
am0c left
|
|||
pmichaud | sisar: I don't know what "specced properly" means here; but the best is perlcabal.org/syn/S12.html#Construc...ialization | 06:19 | |
"All classes inherit a default new constructor from Mu. It expects all arguments to be named parameters initializing attributes of the same name." | 06:20 | ||
sisar | pmichaud: ah. Now that should be C<new> there. | 06:21 | |
pmichaud | it is C<new> in the pod; I copied/pasted from the webpage | 06:22 | |
sisar | oh, yes it is, duh ! | ||
the fixed width and the non fixed width fonts on the webpage don't look very different. | 06:23 | ||
06:24
kaleem left
06:25
kaleem joined
|
|||
sisar | especially inline C<> tags are not easily discernible from normal text. | 06:25 | |
dalek | c: 56fcbe0 | pmichaud++ | lib/Mu.pod: Add Mu.new. |
06:32 | |
06:34
brrt left
|
|||
dalek | c: 6eb95cd | pmichaud++ | lib/Rat.pod: Rat wordsmithing. |
06:36 | |
06:37
wtw joined
|
|||
sisar | r: class Point { has $.x; has $.y;}; my $A = Point.new(:x(1)); | 06:37 | |
p6eval | rakudo 185f8f: ( no output ) | ||
sisar | in ^, I did not initialize y to any value. I missed my chance to do it while construction of a new object. Now it is not possible to give a value to y without declaring it as "is rw" in the first place? | 06:40 | |
pmichaud | sisar: as written, that's correct. | ||
sisar | how can I make sure that I when instantiating an object, I initialize all the attribute? | 06:41 | |
06:42
Telgalizer joined
|
|||
pmichaud | looking | 06:42 | |
sisar | that, is can the compiler complain "hey, you missed your chance to give a value to y" | ||
pmichaud | I'm not sure there can be a compile-time check, but perhaps: | 06:43 | |
r: class Point { has $.x; has $.y; submethod BUILD($x, $y) {} }; my $p = Point.new(:x(1)); | 06:44 | ||
p6eval | rakudo 185f8f: OUTPUT«Not enough positional parameters passed; got 1 but expected 3 in submethod BUILD at /tmp/5mh6ODMYxp:1 in method BUILDALL at src/gen/CORE.setting:622 in method bless at src/gen/CORE.setting:607 in method new at src/gen/CORE.setting:592 in block <anon> at /… | ||
moritz | r: class Point { has $.x; has $.y; method new(:$x!, :$y!) { nextsame } }; my $p = Point.new(:x(1)) | ||
p6eval | rakudo 185f8f: OUTPUT«Required named parameter 'y' not passed in method new at /tmp/xPkVgVdrDg:1 in block <anon> at /tmp/xPkVgVdrDg:1» | ||
moritz | sorear: like this | 06:45 | |
sisar | why was it expecting 3 parameters? x, y and ... ? | ||
moritz | self | ||
sorear | moritz: s/sorear/sisar/ ? | ||
06:45
scott___ joined
|
|||
moritz | yes, sorry | 06:46 | |
sisar | moritz: what is 'self' ? | ||
moritz | sisar: the invocant | ||
the thing you call the method on | |||
06:46
scott_ left
|
|||
sisar | moritz: i'm confused. This error "Not enough positional parameters passed; got 1 but expected 3", what would be the correct way to instantiate the object in pmichaud's example. | 06:47 | |
? | |||
dalek | ecza: bd1bd16 | sorear++ | FETCH_URL: Update bootstrap |
06:48 | |
pmichaud | r: class Point { has $.x; has $.y; submethod BUILD($x, $y) {} }; my $p = Point.new(:x(1), :y(2)); | ||
p6eval | rakudo 185f8f: OUTPUT«Not enough positional parameters passed; got 1 but expected 3 in submethod BUILD at /tmp/T4vqcHXyyd:1 in method BUILDALL at src/gen/CORE.setting:622 in method bless at src/gen/CORE.setting:607 in method new at src/gen/CORE.setting:592 in block <anon> at /… | ||
pmichaud | hmmmmm | ||
sisar | yes, that. | ||
pmichaud | I wonder if there's a rakudobug there. | ||
oh! | 06:49 | ||
r: class Point { has $.x; has $.y; submethod BUILD($!x, $!y) {} }; my $p = Point.new(:x(1), :y(2)); | |||
p6eval | rakudo 185f8f: OUTPUT«Not enough positional parameters passed; got 1 but expected 3 in submethod BUILD at /tmp/hZunQD2Gpo:1 in method BUILDALL at src/gen/CORE.setting:622 in method bless at src/gen/CORE.setting:607 in method new at src/gen/CORE.setting:592 in block <anon> at /… | ||
moritz | pmichaud: :$!x and :!$y in the signature | 06:50 | |
need to be named | |||
pmichaud | not according to S12 | ||
06:48 <dalek> niecza: bd1bd16 | sorear++ | FETCH_URL: | |||
oops | |||
submethod BUILD ($!tail, $!legs) {} | |||
moritz | then S12 needs updating | 06:52 | |
if they were positional, the BUILDALL routine would have to introsprect the names to determine the call order | |||
s/call/argument/ | 06:53 | ||
that's just absurd | |||
pmichaud | something has to do that introspection anyway | 06:54 | |
moritz | no | ||
it can just pass all to BUILD | |||
and extra named arguments are ignored | |||
pmichaud | it can do that even with positionals | 06:55 | |
06:55
am0c joined
|
|||
moritz | but it doesn't need to introspect that way | 06:55 | |
and object construction happens often, so we should make it fast | |||
also it doesn't make sense to introspect | |||
pmichaud | r: sub xy($x, $y) { say "x=$x y=$y"; }; xy(:y(2), :x(1)); | ||
p6eval | rakudo 185f8f: OUTPUT«Not enough positional parameters passed; got 0 but expected 2 in sub xy at /tmp/_ipplh99wi:1 in block <anon> at /tmp/_ipplh99wi:1» | ||
moritz | because the names of positional arguments are not part of the API of the routine | ||
pmichaud | oh, did we get rid of that? | 06:56 | |
moritz | we got rid of filling positionals by name | ||
pmichaud | okay. | ||
then yes, S12 probably needs updating. | |||
moritz | I'm doing that | ||
sisar 's learning efforts found a rakudobug yesterday and a wrong piece of code in spec today. Yay(?) | |||
moritz | sisar: yay indeed | ||
dalek | ecs: 7b1a298 | moritz++ | S12-objects.pod: [S12] BUILD takes named arguments only It was a left-over from the times when positional parameters could be filled by name. |
06:57 | |
moritz | sorear++ # niecza v19 | ||
sisar | but that has slowed me down | ||
pmichaud | S06 still has the sections that allow filling positionals by name. | ||
sisar | anyway, lunch & | 06:58 | |
sorear | but only for explicit only subs, I think | ||
sisar afk | |||
pmichaud | I don't see anything that limits it to only subs | 06:59 | |
okay, I see it now. | 07:01 | ||
"Another benefit of this policy is that, for routines that allow it, named arguments may be bound to positional parameters. (This is allowed only on routines that are explicitly declared with either the proto or the only declarator.)" | |||
r: only sub xy($x, $y) { say "x=$x y=$y"; }; xy(:y(2), :x(1)); | |||
p6eval | rakudo 185f8f: OUTPUT«Not enough positional parameters passed; got 0 but expected 2 in sub xy at /tmp/C_waHma64j:1 in block <anon> at /tmp/C_waHma64j:1» | ||
pmichaud | r: only xy($x, $y) { say "x=$x y=$y"; }; xy(:y(2), :x(1)); | 07:02 | |
p6eval | rakudo 185f8f: OUTPUT«Not enough positional parameters passed; got 0 but expected 2 in sub xy at /tmp/wpgjJro57H:1 in block <anon> at /tmp/wpgjJro57H:1» | ||
pmichaud | r: class Point { has $.x; has $.y; submethod BUILD(:$!x, :$!y) {} }; my $p = Point.new(:x(1), :y(2)); | 07:04 | |
p6eval | rakudo 185f8f: ( no output ) | ||
pmichaud | r: class Point { has $.x; has $.y; submethod BUILD(:$!x, :$!y) {} }; my $p = Point.new(:x(1), :y(2)); say $p.perl; | ||
p6eval | rakudo 185f8f: OUTPUT«Point.new(x => 1, y => 2)» | ||
pmichaud | r: class Point { has $.x; has $.y; submethod BUILD(:$!x!, :$!y!) {} }; my $p = Point.new(:x(1), :y(2)); say $p.perl; | ||
p6eval | rakudo 185f8f: OUTPUT«Point.new(x => 1, y => 2)» | ||
pmichaud | r: class Point { has $.x; has $.y; submethod BUILD(:$!x!, :$!y!) {} }; my $p = Point.new(:x(1)); say $p.perl; | ||
p6eval | rakudo 185f8f: OUTPUT«Required named parameter 'y' not passed in submethod BUILD at /tmp/QPTGi4q5H7:1 in method BUILDALL at src/gen/CORE.setting:622 in method bless at src/gen/CORE.setting:607 in method new at src/gen/CORE.setting:592 in block <anon> at /tmp/QPTGi4q5H7:1»… | ||
pmichaud | okay, works for me now! | 07:05 | |
moritz | well, if you do that in new directly, you have a nicer backtrace :-) | ||
pmichaud | yes, but then it's possible to still create Points with y uninitialized by deriving a custom new | ||
moritz | right | ||
pmichaud | by putting it in BUILD, y _must_ be provided. | 07:06 | |
(in all cases) | |||
I do like the new version as well; I was just looking for something a little more enforced than what new could do | 07:07 | ||
moritz | pmichaud++ #p6doc patches | 07:09 | |
dalek | c: 15f988c | moritz++ | lib/Mu.pod: [Mu] .new only initializes attributes with accessors |
||
07:10
fgomez left
|
|||
pmichaud | moritz++ # better patches | 07:11 | |
07:11
brrt joined
|
|||
moritz | pmichaud: well, some of yours were also better than mine. It's the sum (erm, how do you call the sum of two patches? merge?) that counts | 07:12 | |
pmichaud | sum is good | 07:13 | |
07:17
immortal joined
07:18
odoacre joined,
jaldhar_ joined
07:19
_jaldhar left,
erkan left
07:26
kresike joined
|
|||
kresike | hello all you happy perl6 people | 07:26 | |
brrt | morning kresike | 07:27 | |
pmichaud | hello kresike | 07:28 | |
szabgab | pastebin.com/JrNkCWSV | ||
compile error on ubuntu | |||
pmichaud | szabgab: 32 bit, ooc? | 07:29 | |
szabgab | 64 bit | ||
in a virtualbox | |||
pmichaud | hmmmm | ||
ubuntu 12.04 ? | |||
kresike | hello brrt, pmichaud | 07:30 | |
szabgab | 11.04 | ||
brrt | szabgab, whats HEAD? | ||
szabgab | with a perl 5.14.2 brew | ||
just checked out | |||
brrt: just checked out | |||
brrt | i have a debian amd64 here, so i'm going to see if i get the same thing | 07:31 | |
07:31
arnsholt_ joined
|
|||
brrt | whats your version of gcc? | 07:31 | |
07:31
lumi__ joined,
orafu left
|
|||
brrt | (mine is 4.4 for the record) | 07:31 | |
07:32
libertyp1ime joined,
TimToady_ joined,
orafu joined
|
|||
szabgab | brrt: 1 min # rebooting | 07:32 | |
07:32
Helios joined
|
|||
pmichaud | szabgab: several people have reported things like the "invoke not implemented for class ..." error but I don't know that we've been successful in reproducing it. This looks really helpful. | 07:32 | |
szabgab | for the record, I was running aptitude safe-upgrade during the same time | ||
so that migth have interfered | |||
I try it again | |||
pmichaud | I might try installing 11.04 somewhere and see if I can get the failure. | ||
szabgab | pmichaud: wait till I retry | 07:33 | |
but for me don't do it, I can install 12.4 instead | |||
brrt | .. i have to rebuild nqp first, but it won't take too long | ||
szabgab | and probably I should anyway | ||
just let me know if it imporant for you to research this - then I keep the 11.04 otherwise I just install the newer | 07:35 | ||
ubuntu | |||
07:36
arnsholt left,
libertyprime left,
Khisanth left,
felher left,
takesako_ left,
Helios` left,
TimToady left,
lumi_ left
07:37
mtk left
07:38
pupoque joined
|
|||
brrt | i have a similar enough version | 07:39 | |
dalek | c: 3abb273 | pmichaud++ | lib/Real.pod: Real.pod wordsmithing on floor and ceiling. |
||
c: 15b5ca0 | pmichaud++ | lib/ (3 files): Miscellaneous typo and punctuation improvements. |
|||
pmichaud | szabgab: okay, I'll wait til you retry, at least for now. | 07:40 | |
actually, I should get a bit more sleep here; so I'll bbl | |||
sisar | n: class foo { has $.x;}; my $obj = foo.new; $obj.x = 42; say $obj.x; | 07:41 | |
p6eval | niecza v19-1-gbd1bd16: OUTPUT«42» | ||
sisar | whoa, niczabug ! | ||
moritz | sisar: niecza doesn't do the whole rw/ro distinction yet | 07:42 | |
sisar | (niecza allows writing via read-only accesor) | ||
moritz: oh. | |||
ok | |||
r: class foo { has $.x;}; my $obj = foo.new; $obj.x = 42; say $obj.x; | |||
p6eval | rakudo 185f8f: OUTPUT«Cannot assign to a readonly variable or a value in block <anon> at /tmp/8g7OhGqtkQ:1» | ||
sisar | moritz: would you call ^ missing line no. or wrong line no.? | 07:43 | |
missing, i think | |||
moritz | :1 | ||
that's the line number | |||
sisar | moritz: that's the line no. of the (start) of block, not where the error occured | 07:44 | |
sorear | sleep& | ||
moritz | sisar: it's all line 1, no? | 07:45 | |
I mean, where's the newline that would make it line 2? | |||
07:46
fgomez joined
|
|||
sisar | moritz: oh right, here it is a single line. But if you split it out into sevaral lines, put it in a file, and still we get the same error: gist.github.com/2994193 | 07:47 | |
diakopter | r: class foo { has $.x;}; my $obj = foo.new; $obj.x = 42; say $obj.x; | ||
phenny | diakopter: 05:34Z <moritz> tell diakopter I pondered a simple activity stat by day, that would be easier on the DB | ||
p6eval | rakudo 185f8f: OUTPUT«Cannot assign to a readonly variable or a value in block <anon> at /tmp/YHN4Q_D4Xm:1» | ||
moritz | yep, looks wrong | 07:48 | |
sisar files the bugreport | |||
done, RT #113848 | 07:51 | ||
07:52
mtk joined
07:54
SatoAmbush joined
|
|||
moritz | sisar++ | 07:59 | |
08:01
pupoque left
08:04
Khisanth joined
08:05
pupoque joined
|
|||
szabgab | after updating and restarting ubuntu (still 11.04 though) and after removing the parrot subdir, I could successfully run the Configure part | 08:07 | |
and the make part | |||
08:09
felher joined,
takesako_ joined
|
|||
dalek | kudo/nom: 11b9d5e | pmichaud++ | src/core/Mu.pm: Add zero and 1 argument forms of infix:<=:=> and infix:<eqv>. |
08:12 | |
08:14
fgomez left
08:15
fgomez joined
08:18
Vlavv left
|
|||
jnthn | morning | 08:23 | |
RT #113848 may be fixable my marking the auto-generated attribute accessor closure in Attribute.pm with the hidden-from-backtrace trait. | 08:25 | ||
*by | |||
08:26
ocharles left
|
|||
moritz | jnthn: it's probably not that easy | 08:29 | |
jnthn: there's just a single line of backtrace; when we mark one routine as hidden_from_backtrace, and it makes any difference, then we'll have no more backtrace lines at all | 08:30 | ||
ok, it's better to report nothing than a wrong location, but it'll still be LTA | |||
08:30
ocharles joined
08:31
vmspb joined
|
|||
jnthn | moritz: oh, and of course the error does not occur in the mainline... | 08:31 | |
moritz: er, i mean | |||
does not occur in the accessor | |||
It occurs in the mainline. | 08:32 | ||
moritz | right | ||
jnthn | Hmm | ||
moritz | still there's something odd there | 08:34 | |
often the mainline confuses the line number generation | |||
but | |||
if I wrap the whole thing into a routine and all it, it *still* says line 1 | |||
s/all/call/ | 08:36 | ||
perlpunks.de/paste/show/4fe974b5.1907.15c # that's wil --ll-exception | 08:37 | ||
and the error occurs on line 8 | |||
oh | 08:38 | ||
it seems that all assignment errors produce wrong/missing line numbers | |||
could it be that assignment op simply misses the :node thing? | |||
08:40
dakkar joined
|
|||
moritz | ah yes | 08:41 | |
moritz tries to fix | |||
moritz hates passing $/ inwards. It's easy to forget. | |||
yet I don't know if there are better alternatives | 08:44 | ||
tadzik | .u ờ | 08:48 | |
phenny | U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE (ờ) | ||
jnthn | Sounds deadly. | 08:50 | |
moritz | ok, I have a patch that works. Spectesting now. | 08:52 | |
08:56
vmspb left
08:59
felher left,
takesako_ left
09:00
felher joined,
takesako_ joined
|
|||
dalek | kudo/nom: 1ffd6cf | moritz++ | src/Perl6/Actions.pm: add line annotations to assignment operator |
09:03 | |
jnthn | moritz++ | ||
moritz | .oO( I have a truely beautiful test for that, but it doesn't fit on this margin. Sorry! ) |
09:07 | |
dalek | ast: 824e965 | moritz++ | integration/error-reporting.t: test line number of error for assignment to non-variable, RT #113848 |
09:08 | |
frettled | :) | 09:09 | |
jnthn | $!.backtrace.any.line == 3 | ||
<3 | |||
That's cute :) | |||
moritz | aye :-) | ||
things like that make my exception work seem worthwhile | 09:10 | ||
09:19
ab5tract joined
09:23
pupoque left
09:24
SatoAmbush left
|
|||
szabgab | has dir() changed recently? | 09:30 | |
tadzik | I think so | 09:31 | |
moritz | szabgab: yes | ||
szabgab | on one machine it returns a bunch of Str -s on the other on IO-s | ||
moritz | szabgab: it uses to return strings, now it returns IO's | ||
szabgab | and the second one is newer machine | ||
ok | |||
09:31
[hds] joined
|
|||
szabgab | so much about backword compatibility :) | 09:32 | |
moritz | yes :/ | ||
szabgab is rebuilding rakudo on the desktop as well | |||
moritz was not too pleased about the change | |||
szabgab will have to add some tests to his own code | |||
moritz | szabgab: another change is that dir() now appends the path | 09:33 | |
ie dir('/foo') now returns /foo/a.txt, /foo/b.txt instead of a.txt, b.txt | 09:34 | ||
szabgab | oh, yeah, that explains more of my code break ! | ||
and I wrote this 2 days ago | |||
frettled | moritz: what? | 09:35 | |
hm | |||
pmichaud | we commit to backward compatibility for things going forward from here; not necessarily backward compatibility with what we had a year ago :) | ||
frettled struggles to find this in a synopsis, it does not appear to be in S16… | 09:36 | ||
szabgab | well, dir() was returning Str-s about 3 days ago | ||
pmichaud | okay, I didn't notice that change. | ||
frettled | Ah, wait, S32 | ||
in the setting library, d'oh | 09:37 | ||
«Returns a lazy list of file names in the $directory. By default the current and the parent directory are excluded, which can be controlled with the $test named parameter. Only items that smart-match against this test are returned. | |||
szabgab | I noticed this becasue my code behaved differently on the desktop where I built rakudo a few days ago and on my notebook that I build 2 hours ago | ||
frettled | This will make directory content parsing a bit of a nuisance. | 09:38 | |
moritz | szabgab: sorry about that | ||
pmichaud | what behavior did the release have, out of curiosity? | ||
moritz | pmichaud: the new one :( | ||
pmichaud | so, the behavior changed from 2012.05 to 2012.06 ? | 09:39 | |
moritz | pmichaud: yes | ||
szabgab | I thin Str-s and showrt names are better but I am not a big on API | ||
moritz | frettled: I think we should have a .file method that returns just the file name | ||
pmichaud | okay, I'm not quite as concerned then. 2012.06 is really the baseline I'm wanting to establish. | ||
moritz | and maybe .Str to that | ||
frettled | moritz: I think that's complicating things : | ||
:) | |||
In my work, I write routines for handling filenames etc. quite a bit. | 09:40 | ||
moritz | frettled: if the default stringifcation is just the file name, you can use it same as before, when the return values where strings | ||
frettled | In some cases, I want to open() all or a filtered list of the files in a directory. In that case, the current behaviour (lazy list of IOs?) seems reasonable. | ||
moritz | pmichaud: what kind of backward compatiblity do you want to establish? | ||
pmichaud | moritz: we need to be providing our users a more stable environment across releases | 09:41 | |
frettled | But in most other instances, I want to filter the filenames, or fiddle with them, and then Perl 5's behaviour is much more sane. | ||
pmichaud | i.e., some sort of deprecation policy for API changes | ||
frettled | I cannot honestly think of any real world uses where it's useful to get the full or even relative path of all files in a directory listing. | 09:42 | |
frettled is not disagreeing with the notion of stability across releases, or with a deprecation policy, those are very good things to have. (Just in case I appeared to be critical of that) | 09:44 | ||
09:45
am0c left
|
|||
pmichaud | ...am I reading the git log incorrectly? It looks to me as though &dir changed after the 2012.06 release. | 09:47 | |
moritz | +1 to a reasonable stability policy | ||
pmichaud: oh, you're right | 09:49 | ||
pmichaud | hmmmm | ||
moritz | which means we have to bundle the old ufo and panda versions in star | ||
pmichaud | well, we need to figure out how we're going to handle it | ||
moritz | oh, and it means that the changelog entry is in the wrong section | 09:50 | |
frettled | There is one thing I don't get, which is probably due to not programming Perl 6 enough, and that is why dir() returns a list of IOs, and what it means :) The second is the most embarrassing part; does this have anything to do with the filesystem's implementation of files as e.g. inode refs? | 09:51 | |
pmichaud | frettled: second part: no | ||
moritz | frettled: we kinda abuse IO for storing filenames and paths | 09:52 | |
pmichaud | frettled: in this case, IO objects are more like path references | ||
so, before, where &dir was simply returning a list of strings, it now returns IO objects from which one could get either the string or open the file directly | |||
frettled | Okay, so they are stale in the same way as the result of a Perl 5 readdir() are? | 09:53 | |
moritz | frettled: so wrapping a path in an IO object kinda makes sense; it carries at least the same information as the file name, and makes it identifiable as being related to the file system | ||
frettled: yes | |||
09:53
bhtwloger joined
|
|||
frettled | pmichaud: aha, I was suspecting that about being able to open the file directly. | 09:53 | |
09:53
bhtwloger left
|
|||
frettled | Does that not add a bit of overhead? | 09:53 | |
moritz | well, you can do that too | 09:54 | |
r: say dir()[0].open.get | |||
p6eval | rakudo 1ffd6c: OUTPUT«Cannot call 'open'; none of these signatures match::(IO , $path, :r(:$r), :w(:$w), :a(:$a), :bin(:$bin), :chomp(:$chomp) = { ... }, Mu *%_) in method open at src/gen/CORE.setting:7027 in block <anon> at /tmp/FJ2Ti4yQsE:1» | ||
moritz | r: say dir()[0].get | ||
p6eval | rakudo 1ffd6c: OUTPUT«Unable to open filehandle from path './star' in method open at src/gen/CORE.setting:7034 in method get at src/gen/CORE.setting:7054 in block <anon> at /tmp/IeArQFO1k_:1» | ||
moritz | r: say dir().first(*.e).get | ||
p6eval | rakudo 1ffd6c: OUTPUT«Unable to open filehandle from path './star' in method open at src/gen/CORE.setting:7034 in method get at src/gen/CORE.setting:7054 in block <anon> at /tmp/kc56XpWF3I:1» | ||
moritz | r: say dir().first(*.f).get | ||
p6eval | rakudo 1ffd6c: OUTPUT«# ~/.bashrc: executed by bash(1) for non-login shells.» | ||
frettled | Okay, that's cute. | 09:55 | |
But will we … | |||
moritz | in fact you don't have to open it, .get opens it for you | ||
pmichaud | and one could do .slurp or .lines on it as well | ||
moritz | (something which I don't really like, though I have trouble pointing my finger to what it is I don't like) | ||
frettled | My personal concern is that I do a fair bit of scripting where filesystem traversal performance actually matters. | ||
moritz | r: say dir().grep(*.f).map({ "$_.path(): {+.lines}" }) | 09:56 | |
p6eval | rakudo 1ffd6c: OUTPUT«Malformed UTF-8 string in method get at src/gen/CORE.setting:7057 in code <anon> at src/gen/CORE.setting:7078 in sub coro at src/gen/CORE.setting:5216 in method reify at src/gen/CORE.setting:5197 in method reify at src/gen/CORE.setting:4978 in method g… | ||
moritz | r: say dir().grep(*.f).map({ "$_.path(): {+.lines}" })[0] | ||
p6eval | rakudo 1ffd6c: OUTPUT«./.bashrc: 100» | ||
frettled | Naively, it looks to me as if this way of doing it will be significantly slower than merely getting a list of directory entries as strings. | ||
pmichaud | r: say dir().grep(*.f).elems | ||
p6eval | rakudo 1ffd6c: OUTPUT«22» | ||
09:57
bhtwloger joined
|
|||
pmichaud | r: say dir().grep(*.f).map({ "$_.path(): {+.lines}" })[^5] | 09:57 | |
p6eval | rakudo 1ffd6c: OUTPUT«./.bashrc: 100 ./test3.pl: 87 ./.profile: 22 ./Makefile: 131 ./.gitignore: 10» | ||
moritz | wow, where does the top-level .gitignore come from, I wonder? :-) | 09:58 | |
pmichaud | frettled: so, perhaps we need a low-level &dir equivalent that returns strings. | ||
Or, perhapd &dir is the low-level string thingy, and we need a higher-level function for what &dir has been changed to do now. | |||
jnthn | Um. If constructing objects is significantly slower than a FILE SYSTEM OPERATION we have a big problem. | 09:59 | |
frettled | pmichaud: at least I think I would need it :) | ||
jnthn: it depends on how well it scales | 10:00 | ||
moritz | well, we could have a Directory class that remembers its path, and has convenience methods such as .entries, .files, .subdircotries etc. | ||
modulo typos | |||
jnthn | I'd imagine &dir is gonna be primarily I/O bound (though hopefully it hits a disk cache in the common case); whether we construct Str or IO should be a drop in the ocean comparatively. | ||
pmichaud | jnthn: well, it's not that long in the past that parrot/rakudo were the bottlenecks to IO processing and not the I/O itself. | ||
frettled | As a concrete example, I have a program (in rather awful Perl 5 code) that traverses a subdirectory, identifies candidates for scanning, and if filenames match, I check contents. | 10:01 | |
pmichaud | remember the "read and concat 50000 strings test" ? ;-) | ||
jnthn | pmichaud: Yes, but I don't think assuming crappy implementation is the right way to do langauge design. ;-) | ||
frettled | Among the directories parsed, I can easily run into tens or hundreds of thousands of files in a single directory. | ||
pmichaud | frettled: object creation isn't likely to be the slowdown here. | 10:02 | |
frettled | With some filesystems, yes, requesting the directory entries will be slow, but as jnthn says: don't assume crappy implementation. | ||
jnthn | I'm not objecting to having a version of dir (or dir itself) returning strings. Just find Str vs IO construction time being the argument a bit weird. | ||
frettled | Also: disks are not disks anymore. :) | ||
moritz | well, if we make dir() low-level, the file names should be returned as Buf's | ||
jnthn | frettled: Tell that to my laptop :) | 10:03 | |
moritz | anyway, I'm warming up to the idea of reverting dir() to something more low-level, and build a better abstraction on top of it | ||
jnthn | Happily though, my desktop is endowed with SSD goodness :) | ||
frettled | jnthn's laptop: go get an upgrade ;) | ||
pmichaud | jnthn: historically it's been the case that moving from string I/O to object I/O imposes a noticeable slowdown, in Perl 6 as well as many other languages (more) | ||
jnthn | frettled: Yeah :) | ||
szabgab | dir("/home").map({ substr( $_, chars("/home/")) }) works for me :) | ||
pmichaud | I agree that it's less of an argument now in Rakudo than it once would've been, but the generic "I'm concerned about object overhead" is legitimate for many environments. | 10:04 | |
10:04
daxim joined
|
|||
szabgab | sorry | 10:04 | |
dir("/home").map({ substr( .Str, chars("/home/")) }) works for me :) | |||
the previous was broken this 2nd works | |||
frettled | Oops, I'm getting a omnomnom interrupt here… | 10:05 | |
pmichaud | seems like the first should've worked too. | ||
moritz | .map({ .split('/').[*-1] }) | ||
frettled: bon appetit! | |||
in fact .map(*.split('/')[*-1]) should work too | |||
r: say dir(/home/).map(*.split('/')[*-1]) | 10:06 | ||
p6eval | rakudo 1ffd6c: OUTPUT«Failed to get the directory contents of '_block1011': readdir failed: No such file or directory in block <anon> at src/gen/CORE.setting:7319 in sub dir at src/gen/CORE.setting:7314 in block <anon> at /tmp/Pny4QSPPRN:1» | ||
moritz | r: say dir('/home/').map(*.split('/')[*-1]) | ||
p6eval | rakudo 1ffd6c: OUTPUT«No such method 'split' for invocant of type 'IO' in block <anon> at /tmp/I26jaOP6YM:1» | ||
szabgab | :) | ||
moritz | r: say dir('/home/').map(*.path.split('/')[*-1]) | ||
p6eval | rakudo 1ffd6c: OUTPUT«moritz drain sorear tene ash snarkyboojum p6eval diakopter azawawi coke infinoid andara cygx tryrakudo szabgab japhb flussence tewk runpugs» | ||
pmichaud | IO isn't Cool? | ||
moritz | nope | ||
pmichaud | that's an issue for using it like a Str, then. | ||
Timbus | $ time perl6 -e 'dir' | ||
real0m3.914s | |||
$ time perl -E 'opendir my $d, "."; my @a = readdir($d)' | |||
real0m0.008s | |||
moritz | Timbus: that is hardly informative | 10:07 | |
jnthn | Timbus: That tells us nothing useful | ||
moritz | perl 5 is finished before rakudo has started up. News at 11 :( | ||
tadzik | :) | ||
Timbus | cold start for rakudo is .3 | ||
10:08
dylanwu joined
|
|||
Timbus | the directory has 6300 files | 10:08 | |
moritz | oh, it's not lazy :( | ||
Timbus | neither is perl5 tho ssso its kinda fair | ||
moritz | Timbus: but you'll also find that perl 5 loops over a 6300 element list faster than rakudo | 10:09 | |
pmichaud | fairer would be -MMoose | ||
Timbus | well im sure theres many reasons, but its obvious disk IO is not the bottleneck | ||
dylanwu | who can help me? plz, "Can't read configuration in database.conf: No such file or directory | ||
at /var/www/ilbot/tools/../lib/IrcLog.pm line 22" | |||
Timbus | -Mmoose is .14 seconds for me | ||
moritz | dylanwu: I can help you, in private message | ||
Timbus | i.. i have a record of all these things for some reason | 10:10 | |
10:10
GlitchMr joined
|
|||
pmichaud | anyway, speaking personally I'm not worried about the speed aspects as much as I am the api change. :-(( | 10:11 | |
moritz | same here | 10:12 | |
10:15
scott___ left
|
|||
pmichaud | more broadly, I'm thinking that IO is one of those things that is still a bit too slushy in Perl 6; we may need some staged development. | 10:18 | |
moritz | aye | ||
hey, we could experiment with that in another setting | |||
pmichaud | or even just a module | ||
moritz | right; our imports are lexical | 10:20 | |
pmichaud | not everything has to go into the CORE.setting, especially for new/experimental stuff. | ||
or "slushy" stuff. | |||
well, I still need a bit of sleep; perhaps masak++ can comment on some of the above when he arrives :) | 10:21 | ||
phenny: tell masak your thoughts on irclog.perlgeek.de/perl6/2012-06-26#i_5758924 would be welcome. | 10:22 | ||
phenny | pmichaud: I'll pass that on when masak is around. | ||
pmichaud | afk, sleep | ||
10:57
binary_ left
11:01
JimmyZ joined
11:06
skids left
11:12
spider-mario joined
|
|||
brrt | irc.per.org seems to be on the dead side of living | 11:35 | |
perl.org | |||
moritz | brrt: huh? works for me | 11:42 | |
brrt | can't connect at all | 11:45 | |
moritz | I haven't tried to connect in quite some time, I'm just always on :-) | 11:46 | |
brrt: that network has two IPs, 217.168.150.167 and 209.221.142.115. If one doesn't work, pick the other | |||
brrt | thanks, i'll try | 11:47 | |
kresike | what ? No IPv6 | 11:48 | |
11:51
fglock joined
11:57
am0c joined
11:58
kaleem left
12:06
tokuhirom joined
12:22
_ilbot left,
_ilbot joined
|
|||
moritz | kresike: no ipv6 it seems | 12:23 | |
kresike | IPv4 is sooo yesterday ... :) | 12:24 | |
moritz | ... and today too :-) | 12:25 | |
kresike | unfortunately it's still pretty hard to get native IPv6 support | ||
moritz | though I do like all kinds of v6, perl and IP :-) | ||
kresike | now that you mention it, yes, I do like those too :) | 12:26 | |
12:30
skids joined
|
|||
sisar | moritz++ #fixing stuff :) | 12:52 | |
frettled | moritz: Visual Basic, too? | 12:56 | |
kresike | frettled, that's too basic to be fixed :) | 12:59 | |
frettled | heh | 13:00 | |
13:02
PacoAir joined
13:07
mikemol joined
13:10
Psyche^ joined
13:11
Patterner left,
Psyche^ is now known as Patterner
13:17
domidumont left,
domidumont joined
13:18
domidumont left,
dod1 joined,
sergot joined
|
|||
sergot | hi o/ | 13:18 | |
13:19
dod1 left,
domidumont joined
13:20
atrodo joined
|
|||
kresike | sergot, o/ | 13:21 | |
sergot | kresike: o/ | ||
13:23
plobsing joined
13:26
hillu left
13:47
am0c left
13:48
JimmyZ left
13:56
JimmyZ joined
13:58
bluescreen10 joined
|
|||
[Coke] | arguments on p5p about whether "my ();" should be allowed. | 13:59 | |
r: my $a; | |||
p6eval | rakudo 1ffd6c: ( no output ) | ||
[Coke] | r: my (); | ||
p6eval | rakudo 1ffd6c: ( no output ) | ||
[Coke] | std: my (); | ||
p6eval | std 30385f8: OUTPUT«ok 00:00 41m» | ||
jnthn | It's just an empty signature. | ||
(From the Perl 6 percpective.) | |||
[Coke] | is there ever a reason to /want/ my (); except when generating perl6 code lazily? | 14:00 | |
lazy not in the perl 6 sense? ;) | |||
14:03
kaleem joined
14:05
bhtwloger left
|
|||
jnthn | [Coke]: No | 14:07 | |
[Coke]: It just falls naturally out of what we parse there anyway. | |||
[Coke] | so, on the principal of making things painful for the implementor, we should probably disallow that. | 14:08 | |
jnthn | Why? | ||
pmichaud | on principal. | 14:09 | |
(principle?) | |||
jnthn | Tormenting the implementor is meant to produce a benefit for the user. :) | ||
[Coke] | I would like to know when I do something useless. | ||
pmichaud | well, the us.... what Coke++ said. :) | ||
jnthn | This seems to be an unbenefit for the portion of our users who are writing crappy code generators. :) | ||
[Coke] | but, I'm happy to leave that to p6lint. | ||
jnthn | Anyway, it's easy to forbid if we want to, I suspect. | 14:10 | |
[Coke] | Doesn't have to be in the compiler itself. | ||
pmichaud | "do something useless" -- some would say that should go in the startup banner, then. "Oh, you're using Perl 6, so you're likely doing something useless." | ||
:-) | |||
[Coke] | std: our (); | ||
p6eval | std 30385f8: OUTPUT«ok 00:00 41m» | ||
14:11
eternaleye left
|
|||
jnthn gets to do useless things with Perl 6 tomorrow at $client :) | 14:11 | ||
pmichaud | indeed, perhaps we should create a compiler called "useless". :-) Then we could justify our useless error messages. | ||
pmichaud now discovers he's parsing "useless" as "use less". | 14:12 | ||
dalek | blets: 165149e | (Gabor Szabo)++ | docs/report.pl: minor error checking |
||
pmichaud | I should probably get a bit more sleep. | ||
jnthn | Seems you could usemore :P | ||
[Coke] | pmichaud: hope everything's ok. | ||
I also need more sleep. Workstress is not good for healthy living. | 14:13 | ||
pmichaud | [Coke]: yes, things are fine here; I've just gotten myself into a weird sleep schedule. | ||
[Coke] | okgood. | 14:14 | |
pmichaud | (might be fallout from attending yapc::na, where I was too busy to sleep :) | ||
dalek | blets: 866f021 | (Gabor Szabo)++ | docs/index.txt: update links |
14:16 | |
szabgab | how are the tablets updaed on the web site? I made some minor fix | 14:18 | |
14:19
kaare_ joined
|
|||
pmichaud | szabgab: I think it's done by a cron job. | 14:19 | |
[Coke] | Gabor! | ||
szabgab | [Coke]: !! | 14:20 | |
[Coke] | are you related to: en.wikipedia.org/wiki/G%C3%A1bor_Szab%C3%B3 ? | ||
szabgab | the dead jacc guitarist? | ||
jazz | |||
[Coke] | aye. | ||
I'm guessing no. ;) | 14:21 | ||
szabgab | there are about 5000 people with this name, I think | ||
"Gabor Szabo" | |||
[Coke] | ah, wow. | ||
pmichaud | the tablets README has some instructions on generating/publishing HTML; I wonder if it's up-to-date. | ||
szabgab | I am 529, if you care :) | ||
[Coke] | hee. | ||
szabgab | pmichaud: the generation part yes, I just don't know who can ssh | ||
[Coke]: thats 23 ** 2 | 14:22 | ||
r: 23**2 | |||
p6eval | rakudo 1ffd6c: ( no output ) | ||
szabgab | r: say 23**2 | ||
p6eval | rakudo 1ffd6c: OUTPUT«529» | ||
szabgab | yes | ||
14:23
wtw left
|
|||
szabgab | and I aslso wanted to ask, what is the current opinion on documentation for Perl 6? | 14:23 | |
PerlJam | szabgab: we need more of it! :) | 14:24 | |
szabgab | Where should it be? | ||
[Coke] | depends. | ||
szabgab is listening | 14:25 | ||
[Coke] | there's tablets (which, btw, has a TPF grant), docs, the book in the star repo, the spec, the source... | ||
If you're writing something for users, I'd think about contributing to the first 3. | |||
szabgab | The question where should the parameters of dir() be described? | 14:26 | |
pmichaud | most of my documentation contributions at the moment are towards the p6doc effort | ||
szabgab | (as an example) | ||
[Coke] | ooh, an interesting question on p6u | 14:27 | |
Woodi | yo everybody | ||
szabgab | where is p6doc? | 14:28 | |
[Coke] | I would like to see an answer as to what's the expected difference between tablets and p6doc. | ||
pmichaud | [Coke]: I see p6doc as a command-line tool. | ||
tablets is almost exclusively web-based, I think. | |||
p6doc is the perl 6 version of "perldoc" | 14:29 | ||
szabgab: github.com/perl6/doc | |||
14:29
arnsholt_ is now known as arnsholt
|
|||
[Coke] | Woodi: www.youtube.com/watch?v=SVObGJvY7qk...2115D6D22A | 14:29 | |
14:30
sergot left
|
|||
[Coke] | so, p6doc is like man pages, tablets can have more details and samples, and the book is for larning. | 14:30 | |
Woodi | about dir, *: I heared (but more then year ago) there is no core in Perl6... so things in Rakudo and Parrot make some mess in my ideal imagination of perl6 implementation :) | 14:31 | |
14:31
lemmoner joined
|
|||
Woodi | -[Coke]-: I hope I'm not there on that video... youtube so video, right ? :) | 14:31 | |
PerlJam | szabgab: Do you think you'll make some more Perl 6 screencasts? | 14:32 | |
szabgab | PerlJam: its in the plans | ||
Woodi | heh :) | ||
szabgab | unless I get hired again :) | ||
pmichaud | maybe I'll try a screencast today. I keep punching 'reload' on the yapcna YouTube account hoping my talks will appear there soon. | ||
[Coke]: yeah, that's a reasonable summary. mainly I want someone to be able to do "p6doc new" or (eventually) "p6doc '%%'" and get a short blurb describing what 'new' or '%%' does. | 14:34 | ||
and, as important, "p6doc length" will tell you that 'length' doesn't exist and what to use instead :) | |||
sisar | pmichaud: screencast ?! yay ! topic ? | 14:36 | |
kresike | iiuc p6doc is going to become something similar to perl5's perldoc | ||
PerlJam | kresike: but *way* better | ||
pmichaud | then when we get a good pod->html translator, we can have doc.perl6.org/length tell us about it. | 14:37 | |
kresike | PerlJam, yes, that's self explanatory :) | ||
pmichaud | sisar: screencast; I've been thinking about doing a set of short screencasts on rosettacode examples. | ||
sisar | ++pmichaud++ :) | 14:38 | |
pmichaud | "here's a Perl6 rosettacode example; here's the problem, here's how the Perl 6 solution solves it" | ||
jnthn | We already have a Perl 6 web server. We could have a p6doc --web that hosts the documentation for you locally then you can explore it in a browser. :) | ||
pmichaud | more to the point, we already have feather; we could set up doc.perl6.org/query/foo to go ahead and return the result of 'foo' as pod text (i.e., until we get the html translation in place) | 14:39 | |
jnthn | Don't we already haz a Pod::To::HTML? | ||
pmichaud | we don't _have_ to wait for html translation before making it available online. Indeed, if it shows up as pod text, I think it might inspire folks to work on the translation | 14:40 | |
[Coke] | Woodi: it's basically "hey woody" | ||
jnthn | I know, I more meant, I think we already have a module to do it :) | ||
pmichaud | jnthn: I see Pod::To::Text | ||
aha: github.com/perl6/Pod-To-HTML/ | 14:41 | ||
jnthn | pmichaud: We ship Pod::To::Text in Rakudo. Pod::To::HTML is on modules.perl.org | ||
flussence | as the main person responsible for Pod::To::HTML, I must admit it's a bit crap at the moment | ||
pmichaud | or, perhaps the url should be perl6.org/p6doc/foo | 14:42 | |
TimToady_ | good morning all | ||
colomon | o/ | ||
pmichaud | TimToady_!!! o/ | ||
good morning | |||
14:42
TimToady_ is now known as TimToady
|
|||
jnthn | morning, TimToady o/ | 14:42 | |
14:42
TimToady left,
TimToady joined
|
|||
rjbs | guten morgen | 14:42 | |
TimToady tried to backlog last night, but he crumped instead | 14:43 | ||
flussence | (I had this ambitious idea a few months ago to separate out the part that iterates over the pod tree into a separate module, which would've made Pod::To::HTML much nicer to maintain, but never got around to getting it working...) | ||
14:43
bhtwloger joined
14:44
crazedpsyc is now known as randomsolarisguy
|
|||
moritz | fwiw I want p6doc URLs to be doc.perl6.org/IO::Socket::INET#connect | 14:45 | |
pmichaud | moritz: I'm fine with that as a result, but we probably also want a query form that redirects to the result | 14:46 | |
moritz | aye | ||
pmichaud | I know that I've often liked php.net/strlen to quickly get me to the strlen documentation or an index of relevant pages | ||
PerlJam | yeah, that's one thing PHP got spot on was their web docs | 14:47 | |
(I used them *all* the time when I was coding PHP) | |||
pmichaud | so I'd like to be able to do, say, perl6.org/p6doc/pick and it gives me the documentation for 'pick' | 14:48 | |
14:48
randomsolarisguy is now known as crazedpsyc
|
|||
tadzik | sounds like a bailador app :) | 14:48 | |
jnthn | ooh :) | 14:50 | |
14:50
bhtwloger left
|
|||
PerlJam | tadzik: were you talking the other day about extracting the pod-parsing into a module or did I imagine that? | 14:52 | |
masak | wow, so I (1) got in just before the 2012.06 release and upset peoples code, but also (2) got in just before 2012.06 which is the new stability baseline? huh. | 14:53 | |
phenny | masak: 10:22Z <pmichaud> tell masak your thoughts on irclog.perlgeek.de/perl6/2012-06-26#i_5758924 would be welcome. | ||
masak | reading it now. | ||
also, sorry to everyone whose code I broke. | |||
I'm pretty sure the change was for the better. we can discuss how to do this kind of change in the future. | |||
pmichaud | masak: I'm agreeing that thus far I feel more comfortable with &dir returning IO or something like it; I'm more interested in the managing slushiness part of the problem, since it's ripe. | 14:54 | |
masak | aye. | 14:55 | |
still backlogging. | |||
moritz | I kinda feel that IO is not the proper abstraction for the return value | ||
pmichaud | I'm afk for a bit | ||
moritz | we should have something that stores dir and file name (or path and file name) separately | ||
masak | I've never felt comfortable with the set of uses IO closes over. I've just learned to accept it. | ||
tadzik | PerlJam: yep, probably | 14:56 | |
masak | I think S16 has been under assault from various architecture astronauts over the years. | ||
moritz | and I'm kinda in favor of having a low-level dir reader, and something more high level with better suitable abstractions | 14:57 | |
[Coke] | there's plenty of prior art here to pick from in terms of OO around the filesystem. | ||
moritz | like an IO::Dir which knows its own path, and can return a list of IO::Dir and IO::File objects when asked for its contents | ||
[Coke]: do you have an example for a good API? | |||
(off-topic: Ronja just learned to do a "high five" :-) ) | 14:58 | ||
[Coke] | moritz: I would start with Java/C# and perl6ify it from there. (in java, there is File, Path, Readers, Writers... I'm sure p6 doesn't want or need all of it, but it's a good place to start.) | 14:59 | |
masak high-fives Ronja! | |||
flussence | [Coke]: +1, I think IO should be broken up into a bunch of roles | 15:00 | |
masak | moritz: I'm too old and tired to bikeshed IO and S16. you have my blanket approval to make any changes you feel are improvements. | ||
flussence | (taking dir for example, you obviously can't read/write it like a file, but it has a path like one.) | ||
pmichaud | from a stability perspective, I'd somewhat like us to "freeze" the existing IO spec, and perhaps build up replacements as modules in another space. | 15:01 | |
s/IO spec/IO implementation/ | |||
PerlJam | Hrm. | 15:02 | |
You probably want to freeze the spec too though | |||
moritz | no | ||
pmichaud | no, not really. | ||
moritz | first it must make sense | ||
sisar | .oO ( in future, the file path will be like "dropbox.com/sisar/docs/foo.txt" or "drive.google.com/sisar/docs/foo.txt" ...) | 15:03 | |
pmichaud | these days I'm somewhat not liking the synopses to be called "spec". In many ways they serve more as a "language plan" than a "specification" | ||
15:03
thou joined
|
|||
pmichaud | even S01 says that the 'spec' is determined by the test suite; i.e., roast | 15:03 | |
JimmyZ | TDD | 15:04 | |
pmichaud | but IO is definitely an area where we know that we *don't* want to freeze what we have no, either in implementation or in the synopses | ||
*we have now | |||
PerlJam | If someone reads the synopses and expects IO to work "as documented" but it doesn't because the synopses have changed based on implementation updates "in another place", that could be confusing. | ||
jnthn | There's probably a bunch of stuff in the IO implementation we can be pretty confident will not change. Like, "open", that you'll have some file-handle object you can .get/.lines/.say on, and so forth. One option is to declare those bits as permafrost, and the rest as slush. | 15:05 | |
PerlJam | Especially since we've been telling everyone to look at the synopses as guides for how to do things | ||
jnthn | The average user probably doesn't care what class or role the thing they're calling comes from for the simple things. | ||
And the design issues seem to be more around the less trivial scenarios and how to structure and factor the IO class/role hierachy. | 15:06 | ||
pmichaud | jnthn: yes, but at least in the present case it's a refactor that caused breakages. | ||
and I'm not sure it's a "less trivial scenario" | 15:07 | ||
(obtaining a list of files from a directory being fairly common in Perl) | |||
jnthn | pmichaud: I guess it's not about non-triviality and is more about confidence. | 15:08 | |
pmichaud | given that a refactor can substantially change things; I don't have a lot of confidence about the current IO setup for much of anything. | ||
jnthn | *nod* | 15:09 | |
pmichaud | even .get and .lines aren't really as solid as they might appear to be | ||
for example, can I .get on a directory? | |||
jnthn | I dunno. I do know that you can on an ordinary file and that this had best continue to work :) | 15:10 | |
I agree IO needs a ton of work though. | |||
pmichaud | I think one could have said "this had best continue to work" for &dir, too :) | 15:11 | |
jnthn | Maybe. Maybe I've just been here enough to have heard enough "hmm...but wait" comments about &dir to expect it may change. :) | ||
moritz | bits.netbeans.org/6.5/javadoc/org-o...bject.html # looks like a sensible API to steal from, at first glance | 15:12 | |
jnthn | But I agree that's not something a typical user call use to make a call. | ||
s/call use/can use/ | |||
pmichaud | we have another ripe case -- the return value from $foo.match($pat, :g) | ||
currently rakudo returns a list of Match objects, S05 says it should return a single Match object that encapsulates the global set | 15:13 | ||
moritz | hm | ||
if we want to do that, we either need to be very careful about containerizing Match objects | |||
or we need to have a flag in Match that indicates whether it should flatten | |||
pmichaud | not really, what determines flattening is the sigil | 15:14 | |
$/ is non flattening, @() flattens. | |||
15:14
proller_ joined,
proller joined
|
|||
moritz | that's not quite satisfactory (more) | 15:14 | |
suppose you want to implement Str.subst(:g, $regex) | |||
now you call self.match(:g, $regex) | 15:15 | ||
and you have to be able to know some stuff about the return value | |||
15:15
proller left
|
|||
moritz | in particular you need to be able to distingish the case of several matches from the case of one match with several positional captures | 15:16 | |
currently both look the same | |||
pmichaud | yes, rakudo currently gets that wrong. | ||
:g implies the "several matches case" even if there's only one match. | |||
(at least according to S05) | |||
jnthn | ...matches case, or cases match? | ||
moritz | so it should return a match object which at .[0] has another Match object, which holds the captures? | 15:17 | |
pmichaud | that's what S05 says. | ||
moritz | speaking of which | ||
pmichaud | I'm not sure I agree with S05 here, though. | ||
moritz | iirc the latest S05 also says that questionmark-quantified matches should not produce a result list, but rather return Nil or the submatch | ||
rakudo needs updating to that too | 15:18 | ||
pmichaud | yes, I've been aware of that issue as well. | ||
I was hoping to fix that in QRegex but it didn't happen before we made the grammar switchover. | |||
That's also on my list of things to address. | |||
moritz | and since we are now talking about regexes, I'd love to see more reply to the latest question on p6u | ||
I'm not sure if my answer was adequat | 15:19 | ||
jnthn | pmichaud: Are you pondering changing it for NQP as well as Rakudo? | ||
pmichaud | jnthn: yes. | ||
jnthn | pmichaud: Hm. But we don't have Nil in NQP. | ||
pmichaud: What shall we use instead? | |||
pmichaud | Mu. | ||
NQPMu, if needed. | |||
jnthn | OK. | ||
pmichaud | or just leave it unbound. | ||
jnthn | Yes, a type object. | 15:20 | |
15:20
lichtkind joined
|
|||
jnthn | Unbound is gonna end up meaning NQPMu in NQP soon anyway. | 15:20 | |
Undef Must Die. | |||
:) | |||
lichtkind | o/ | ||
15:20
tokuhirom left
|
|||
Woodi | -moritz-: but would be nice if /p6doc/rest/api will not be so-so-many-levels-deep :) (except if not needed) | 15:20 | |
pmichaud | (note that I've been studying .match in Rakudo quite a bit recently; preparing for a Str.match refactor and to resolve the :g-creates-too-many-$!target issue) | 15:21 | |
moritz | Woodi: what exactly do you need a doc REST API for? | ||
lichtkind | pmichaud++ for his changes in my absense | ||
jnthn | pmichaud: Sounds good. | ||
lichtkind | szabgab++ too | ||
pmichaud | also, bizarrely, Str.match prevents me from fixing the laziness issues in ListIter. I don't understand why. | 15:22 | |
Woodi | -moritz-: rest is quite natural and examples before was restfull | ||
jnthn | pmichaud: Mostly I just wanted to be sure you weren't planning on using Undef in NQP :) | ||
moritz | Woodi: that doesn't answer my question | ||
pmichaud | jnthn: I'm in total agreement that Undef must die; indeed, that's why I was once asking about having things automatically init to NQPMu. | ||
Woodi | ok, do not understand question then :) | ||
jnthn | pmichaud: Ah, yeah, I'd forgotten that. The answer is "they will when I get around to it" | 15:23 | |
pmichaud: Which will likely happen during the QAST migration. | |||
moritz | Woodi: the question is: what do you want to use a REST API in p6doc for? | ||
pmichaud | I'm not pushing for that quickly, fwiw. It can happen on its own accord. | ||
moritz | Woodi: I ask because the way to add docs (PUT or CREATE or whatever it's called in HTTP) is through git, not HTTP | ||
jnthn | pmichaud: The QAST, or the NQPMu? :) | ||
pmichaud | NQPMu | 15:24 | |
jnthn | Ah | ||
moritz | Woodi: so I don't see much sense having a REST API | ||
Woodi | -moritz-: err... perl6.org/doc/substr - it short and restfull, just use it... | ||
moritz | Woodi: so you just want nice URLs, not a REST API? | ||
Woodi | "perl6.org/doc/substr" is not REST API ? | ||
jnthn | Most people understand REST wrong anyway. Like, thinking the URL structure is the most important thing and then forgetting hypermedia is actually the most important thing. :) | 15:25 | |
Woodi | probably agree... | ||
pmichaud | in general, I'm fully on board with the idea of avoiding Parrot objects as much as possible; including (and especially) Undef. The only ones I'm interested in keeping are analogues to nqp::list and nqp::hash | ||
(i.e., low-level list and hash types) | |||
moritz | Woodi: only if every URL is a REST API to you | ||
afk | 15:26 | ||
Woodi | ok, pls push PAUSE button, well be back to that :) | ||
jnthn | pmichaud: Yeah, we'll always have something like that. | ||
15:27
ab5tract left
|
|||
PerlJam | Woodi: HAve you read en.wikipedia.org/wiki/Representatio...e_transfer ? | 15:27 | |
pmichaud | maybe we'll need a low-level IO type, too; I haven't thought about it that much. | ||
afk for a bit | |||
15:29
JimmyZ left
15:30
lemmoner left
|
|||
Woodi | -pmichaud-: just looked on it. and ? | 15:31 | |
oops | |||
-PerlJam-: answer to you :) | |||
15:34
lemmoner joined
|
|||
Woodi | you kicked me ? so silent here... | 15:35 | |
k, I want to remind something, maybe deserve it :) | 15:36 | ||
some time ago I wrote about requirements for modules and still think it is good idea... | 15:37 | ||
15:37
kaleem left
|
|||
Woodi | I planned to use XML::Something as example but IO popped | 15:37 | |
maybe few levels of biurocracy is not so bad :) | 15:38 | ||
I planned to look on modules eg. XML in Perl5, Python, Ruby, C, ... and write some basic API. this can be start for modulecrafting | 15:39 | ||
and such API would be generic, multilanguage, actual for centuries :) | 15:40 | ||
k, afk :) | |||
pmichaud | back again | 15:47 | |
kresike | bye all | 16:01 | |
16:01
kresike left
16:02
brrt left
16:08
revdiablo joined
16:12
alester joined
16:15
bluescreen10 left
16:18
stephenlb joined
16:34
[hds] left
16:39
proller_ left
16:42
proller_ joined
16:43
ILyuhan joined,
cog__ joined
|
|||
TimToady | I think the most important API distinction has to do with whether the returned values represent the identity such that race conditions are possible or not | 16:45 | |
filenames as strings are always subject to race conditions | |||
but opening files and returning file descriptors is subject to performance limitations | 16:46 | ||
16:46
ILyuhan left
|
|||
TimToady | so we need both | 16:46 | |
16:46
cog_ left
|
|||
moritz | isn't there still room for race conditions between reading the file name and opening it? | 16:46 | |
16:47
Vlavv joined
|
|||
TimToady | depends on what capabilities the OS gives you to avoid that, I suppose | 16:48 | |
errands & | |||
16:52
tyatpi joined
17:03
zby_home joined,
proller_ left
17:04
dakkar left
17:07
zby_home left
17:30
birdwindupbird left
|
|||
[Coke] | [1] 23483 | 17:33 | |
17:37
[particle]1 left
17:39
harmil left
17:44
[particle] joined
|
|||
moritz | fg | 17:48 | |
tadzik | errands | ||
17:49
cog__ left
17:51
cognominal joined
17:54
mucker joined
17:55
Chillance joined
17:57
fibo joined
17:58
brrt joined
|
|||
sorear | good * #perl6 | 17:59 | |
jnthn | hi, sorear | 18:01 | |
18:02
lemmoner left
|
|||
colomon | \o | 18:02 | |
18:05
fhelmberger left
18:14
kresike joined
|
|||
kresike | hello all | 18:14 | |
moritz | \o | 18:34 | |
18:36
sergot joined
18:41
cog_ joined
18:44
cognominal left
|
|||
[Coke] | sorear: yay for another release. | 18:58 | |
sorear: any big plans for niecza in the coming months? | |||
19:00
daxim left
|
|||
colomon feels guilty for not doing more Niecza-hacking lately. | 19:02 | ||
19:02
GlitchMr left
|
|||
moritz | colomon: I know another great project for you :-) | 19:02 | |
colomon: document all the trig stuff (and maybe other math stuff) in p6doc | 19:03 | ||
colomon | moritz: what? | ||
hmmm... | |||
colomon has paid no attention to p6doc yet. | |||
pointers? | |||
moritz | colomon: I guess it's not too much effort actually; it's enough to mention each sub/method once (in Real or Numeric), even if it's implemented multiple times in different classes | 19:04 | |
colomon: github.com/perl6/doc/ | |||
19:05
bluescreen10 joined
|
|||
colomon | moritz: understand that lack of work on Niecza isn't because I don't know what to do there. it's more a sign life has been keeping me very busy lately... | 19:06 | |
but I've added p6doc to my todo list. | |||
moritz | colomon: I understand, and don't want to put any pressure on you, just wanted to bring it to your awareness | 19:07 | |
colomon | moritz++ | ||
19:14
mucker left
19:16
brrt left
19:23
zby_home joined
|
|||
dalek | c: 8bac80e | moritz++ | lib/Match.pod: document Match |
19:24 | |
19:25
[particle]1 joined
19:28
[particle] left
19:29
geekosaur left
|
|||
flussence | I just pushed some minor changes to pod2html, the most significant one is that it depends on URI now (instead of trying to do it itself, poorly :) | 19:29 | |
[Coke] | flussence++ | ||
flussence | (do we have anything like that for html-escaping? There's another thing I could chop out of the module...) | 19:31 | |
moritz | I should add that to Mojo::Util | 19:32 | |
I already have base64 decoding and encoding, url escaping and unescaping | 19:33 | ||
dalek | p/toqast: cfbc76f | jnthn++ | src/HLL/Actions.pm: Don't need Parrot namespace related stuff here any more. |
||
p/toqast: 395aa0a | jnthn++ | src/QAST/Compiler.nqp: Start to compile QAST::CompUnit. Set HLL and compile the contained top-level block. |
|||
kudo/toqast: e5c5266 | jnthn++ | src/QPerl6/Actions.pm: Toss useless our statement and parameter. |
19:34 | ||
kudo/toqast: 7928806 | jnthn++ | src/QPerl6/Actions.pm: Start to refactor various parts of CompUnit to use QAST::CompUnit. |
|||
kudo/toqast: 0564728 | jnthn++ | src/QPerl6/Actions.pm: type => returns in statementlist. |
|||
moritz | jnthn: does it compile? | ||
jnthn | moritz: ? | ||
moritz: Depends what you mean by "it" | 19:35 | ||
moritz: The branches build. But qperl6 doesn't do anything useful at this point. | |||
moritz: I'm working towards "compile hello world" first :) | |||
moritz | jnthn: well, does it compile the setting? | 19:36 | |
jnthn | moritz: qperl6 in the branch uses QAST | ||
moritz: Using perl6, not qperl6. | |||
moritz | ah | ||
flussence | n: token gen_delims { <[:/?#\[\]@]> }; | ||
p6eval | niecza v19-1-gbd1bd16: OUTPUT«===SORRY!===Methods must be used in some kind of package at /tmp/krUBnnOuok line 1:------> token gen_delims ⏏{ <[:/?#\[\]@]> };Please backslash # for literal char or put whitespace in front for comment at /tm… | ||
flussence | n: grammar { token gen_delims { <[:/?#\[\]@]> }; } | ||
p6eval | niecza v19-1-gbd1bd16: OUTPUT«===SORRY!===Please backslash # for literal char or put whitespace in front for comment at /tmp/62b45tqvv2 line 1:------> ammar { token gen_delims { <[:/?#⏏\[\]@]> }; }Parse failed» | ||
flussence | niecza doesn't like URI.pm :/ | 19:37 | |
(I don't think it'd work with podtohtml overall, but I was trying ooc) | |||
jnthn | moritz: I figured it'd be easier to get us compiling basic programs with QAST, then work through the sanity tests, then spectest, then set it loose on compiling CORE.setting. | 19:38 | |
19:39
birdwindupbird joined
|
|||
jnthn | The current big task is re-arranging SC handling. | 19:39 | |
19:41
mikemol left
19:43
tokuhirom joined
19:49
zby_home left
|
|||
[Coke] | qperl6? | 19:49 | |
moritz | quantum perl 6! | 19:50 | |
jnthn | [Coke]: a perl6 executable that uses QAST :) | ||
tadzik | moritz: url escaping is builtin in URI, Bailador uses that these days | ||
jnthn | [Coke]: Just exists during the life of the toqast branch. | ||
[Coke]: It won't escape the branch :) | |||
19:52
fridim_ joined
|
|||
masak | evening all you sweet Perl 6 people. | 19:58 | |
19:58
dukeleto left
|
|||
moritz | \o masak | 20:02 | |
tadzik | masak! \o/ | ||
dalek | ar: 2d2565e | moritz++ | Makefile: ship version of ufo, pand and File::Tools from before the &dir API change |
||
masak | \o/ | ||
sergot | \o/ | 20:03 | |
tadzik | |\o/| | ||
o< | 20:04 | ||
/o\ | |||
It's fun to stay at the Y.M.C.A... | |||
masak | jnthn: it's happening again... :) | ||
jnthn: all your fault :P | |||
jnthn | I...huh...what... :P | ||
tadzik | it wasn't me | 20:05 | |
jnthn | Is that example still in the Perl 6 book? :) | ||
masak | jnthn: also, last IRC snippet of strangelyconsistent.org/blog/happy-...ary-perl-6 | ||
jnthn: you started it! :P | |||
20:06
baest left
|
|||
moritz | today I learned that perl 1.0 didn't have eval | 20:07 | |
and neither did it have sort | |||
or arrays interpolating into lists | |||
masak | or regexes, I think. didn't those come in Perl 2? | 20:08 | |
moritz | perl 1 had regexes | 20:09 | |
masak | ok. | ||
would be a fun talk. "what Perl 1.0 didn't have." | |||
moritz | but perl 2 greatly improved regex support | ||
masak | Juerd++ did a nice talk about what Perl 4.0 didn't have. | ||
moritz | * New regexp routines derived from Henry Spencer's. | ||
o Support for /(foo|bar)/. | |||
o Support for /(foo)*/ and /(foo)+/. | |||
o \s for whitespace, \S for non-, \d for digit, \D nondigit | |||
from bleadperl's 'git log' | |||
about the 2.0 release | 20:10 | ||
masak | oh, the regexes were replaced, not implemented. | ||
stil marvellously simple at that time. | |||
it's amazing how far we've come. | |||
20:11
baest joined,
dukeleto joined
|
|||
kresike .oO(masak made a mistake and didn't correct himself, maybe he is human after all) | 20:12 | ||
:) | |||
moritz | I can attest that he certainly looks human | ||
tadzik | wasn't that his clone? | ||
moritz | well, one of 'em | ||
but if they are *clones*, the others should look human too, no? | 20:13 | ||
kresike | moritz, looks can be deceiving ... didn't you see the Terminator movies ? :) | ||
tadzik | hmm, possibly | ||
masak | still* | ||
kresike | yay | ||
sergot | :) | ||
masak | I guarantee that all of my clones are human. | ||
kresike | but you are not ? :) | 20:14 | |
PerlJam | perhaps only partially so | ||
masak bobs happily in mid-air | |||
tadzik | how can you tell if you're not talking to one of the clones? | ||
masak makes a mental note to blog about his six clones at some point | 20:15 | ||
it's... complicated. | |||
tadzik | use v6 | ||
kresike | this number six keeps coming up in here ... wonder why ? | 20:16 | |
tadzik | because it's June! | 20:17 | |
masak | kresike: probably because of PHP 6. | ||
PerlJam | I thought it had something to do with the number of the beast | ||
kresike | masak, I'm sure it's not that | 20:18 | |
TimToady | nr: constant @t = [\+] 1..10; say (0,@t Z^.. @t)[4]; | 20:21 | |
20:21
PacoAir left
|
|||
p6eval | niecza v19-1-gbd1bd16: OUTPUT«10^..15» | 20:21 | |
..rakudo 1ffd6c: OUTPUT«5» | |||
TimToady | nr: constant @t = [\+] 1..10; say (0,@t Z^.. @t).lol[4]; | 20:22 | |
p6eval | niecza v19-1-gbd1bd16: OUTPUT«Unhandled exception: Unable to resolve method lol in type List at /tmp/pMV9mhTUaf line 1 (mainline @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3917 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (module-CORE @ 562)  at /home/p6… | ||
..rakudo 1ffd6c: OUTPUT«Any()» | |||
20:22
PacoAir joined
|
|||
TimToady | nr: constant @t = [\+] 1..10; say (0,@t Z^.. @t)».list.lol; | 20:22 | |
p6eval | niecza v19-1-gbd1bd16: OUTPUT«Unhandled exception: Unable to resolve method lol in type Array at /tmp/r3jw1koqWB line 1 (mainline @ 6)  at /home/p6eval/niecza/lib/CORE.setting line 3917 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (module-CORE @ 562)  at /home/p… | ||
..rakudo 1ffd6c: OUTPUT«1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55» | |||
TimToady | r: constant @t = [\+] 1..10; say (0,@t Z^.. @t)».list[4]; | 20:23 | |
p6eval | rakudo 1ffd6c: OUTPUT«5» | ||
TimToady is having difficulty persuading either niecza or rakudo to yield a nice solution to rosettacode.org/wiki/Floyd%27s_triangle | |||
masak looks, interested | 20:24 | ||
TimToady | treating Z^.. as a list of parcels seems to be very difficult in either impl | 20:25 | |
masak | TimToady: your efforts with RC nicely parallel Ludwig Zamenhof's efforts with translating Hamlet and the Bible into Esperanto after inventing it :) | ||
tadzik | oh, Esperanto | 20:26 | |
where did I put this list of summer plans | |||
TimToady | you need a list of summers first | ||
masak is too busy to write his list of summer plans | |||
tadzik | I have a generator for them, and the reified ones are already immutable | 20:27 | |
moritz | fwiw the panda bundles with the to-be-released 2012.06 star works fine now | ||
tadzik | . o O ( already immutable sounds wrongish ) | ||
moritz | *bundled | ||
tadzik | moritz: does it work for p6doc? | ||
moritz | tadzik: dunno, star installs p6doc for me | 20:28 | |
TimToady | r: constant @t = [\+] 1..10; say (0,@t Z^.. @t)».item[4]; | ||
p6eval | rakudo 1ffd6c: OUTPUT«5» | ||
tadzik | kay | ||
TimToady | nr: constant @t = [\+] 1..10; say (0,@t Z^.. @t)».item[4]; | ||
p6eval | rakudo 1ffd6c, niecza v19-1-gbd1bd16: OUTPUT«5» | ||
tadzik | I'll take a look at panda and pod again after I finally get rid of this exam madness | ||
moritz | tadzik: which is why it's lower priority for me right now | ||
tadzik | understood | ||
moritz | if anybody wants to help with the star release, draft a release announcement | ||
TimToady | nr: constant @t = [\+] 1..10; say (0,@t Z^.. @t)».perl[4]; | ||
p6eval | rakudo 1ffd6c, niecza v19-1-gbd1bd16: OUTPUT«5» | ||
20:29
kaare_ left
|
|||
TimToady | nr: constant @t = [\+] 1..10; say (0,@t Z^.. @t)[^5].perl; | 20:29 | |
p6eval | niecza v19-1-gbd1bd16: OUTPUT«(0^..1, 1^..3, 3^..6, 6^..10, 10^..15)» | ||
..rakudo 1ffd6c: OUTPUT«(1, 2, 3, 4, 5)» | |||
colomon | n: constant @t = [\+] 1..10; for (0,@t Z^.. @t)[^5] -> $range { say $range.join; } | 20:31 | |
p6eval | niecza v19-1-gbd1bd16: OUTPUT«123456789101112131415» | ||
colomon | n: constant @t = [\+] 1..10; for @((0,@t Z^.. @t)[^5]) -> $range { say $range.join; } | ||
p6eval | niecza v19-1-gbd1bd16: OUTPUT«123456789101112131415» | ||
dalek | p/toqast: 6beda3d | jnthn++ | src/QAST/CompUnit.nqp: Add some more SC-related bits to QAST::CompUnit. |
20:33 | |
p/toqast: 8302932 | jnthn++ | src/QAST/Compiler.nqp: Sketch out compilation of load/main; it may even actually work... |
|||
kudo/toqast: 93627fc | jnthn++ | src/QPerl6/Actions.pm: First step of switching over to QAST::CompUnit for all the SC stuff. |
20:38 | ||
kudo/toqast: 85bbebb | jnthn++ | src/QPerl6/Actions.pm: Eliminate final .loadinit(...) usage. |
|||
20:40
araujo left
|
|||
masak | rn: my $n = 5; my $max = [+] 1..$n; my $l = $max.chars; for 1..$n { say (++(state $i)).fmt("%{$l}d") xx $_ } | 20:42 | |
p6eval | niecza v19-1-gbd1bd16: OUTPUT«Potential difficulties: $i is declared but not used at /tmp/aOGW6TSXp2 line 1:------> = $max.chars; for 1..$n { say (++(state ⏏$i)).fmt("%{$l}d") xx $_ } 1 2 3 4 5 6 7 8 9 1011 12 13 14 15» | ||
..rakudo 1ffd6c: OUTPUT« 1 2 3 4 5 6 7 8 9 1011 12 13 14 15» | |||
masak | TimToady: easy. | ||
sergot | masak++ | ||
:) | |||
masak | heh, I accidentally used the new-ish rhs thunking of infix:<xx>. that one is handy, isn't it? :) | 20:43 | |
jnthn | Ain't it the lhs that's thunk'd? | 20:44 | |
20:44
brrt joined
20:45
araujo joined,
araujo left,
araujo joined
|
|||
masak | yes. sorry. | 20:45 | |
I have trouble sometimes with the chiral directions. | 20:46 | ||
brrt | perl6 is busy lately | ||
masak | brrt! \o/ | ||
brrt | o/. :-) but, seriously, it is | 20:47 | |
it is good | |||
[Coke] | thunk into the table. | ||
whoops, no, it's up from the table. Coke-- | |||
20:47
pupoque joined
|
|||
TimToady | masak: yes, I'm sure there's a way to do it, but the Z^.. way should at least fail consistently between niecza and rakudo :) | 20:48 | |
by the way, I don't think your solution works when the number of chars varies in the last line | 20:49 | ||
20:49
adu joined
|
|||
TimToady | such as the N=14 case | 20:51 | |
dalek | ar: ddb6e0f | jnthn++ | skel/docs/announce/2012.06: Add a draft announce for 2012.06. |
20:52 | |
flussence has a horrible but stateless-looking solution | 20:55 | ||
r: constant @t = [\+] ^11; .say for ((0, @t «+» 1) Z @t).map(-> $x, $y { ~Range.new($x, $y)».fmt("%{@t[*-1].log(10).ceiling}d") }); | |||
p6eval | rakudo 1ffd6c: OUTPUT« 0 1 2 3 4 5 6 7 8 9 1011 12 13 14 1516 17 18 19 20 2122 23 24 25 26 27 2829 30 31 32 33 34 35 3637 38 39 40 41 42 43 44 4546 47 48 49 50 51 52 53 54 55» | ||
TimToady | that doesn't look right either for N=14 | 20:56 | |
the 99 column should be narrower than the 100 column | |||
r: constant @t = [\+] ^4; .say for ((0, @t «+» 1) Z @t).map(-> $x, $y { ~Range.new($x, $y)».fmt("%{@t[*-1].log(10).ceiling}d") }); | 20:58 | ||
p6eval | rakudo 1ffd6c: OUTPUT«012 34 5 6» | ||
flussence | hm, has an off-by-one anyway. it should start "((@t «+» 1) Z @t[1..*]).map" | ||
TimToady | r: constant @t = [\+] ^5; .say for ((0, @t «+» 1) Z @t).map(-> $x, $y { ~Range.new($x, $y)».fmt("%{@t[*-1].log(10).ceiling}d") }); | ||
p6eval | rakudo 1ffd6c: OUTPUT«012 34 5 67 8 9 10» | ||
TimToady | hmm, I guess it does work | ||
21:00
skids left
|
|||
TimToady | (on formatting) | 21:00 | |
21:00
sudokode left
|
|||
masak | TimToady: oh, you're right about N=14. | 21:00 | |
I even tested that but didn't consider the result wrong. | |||
yes, that means each column has to be formatted individually. | |||
slightly trickier, but still fairly doable :) | |||
TimToady | but I'm with flussence++ in wanting a stateless solution :) | 21:02 | |
21:03
birdwindupbird left
|
|||
masak | of course. | 21:04 | |
sorear | [Coke]: get non-bootstrap running, see if I can extract enough awesomeness from it to make up for the LTAness of not being bootstrapped | 21:05 | |
[Coke] | cool. | 21:07 | |
pmichaud | back again | 21:08 | |
TimToady | flussence: btw, I think you're depending on .map not flattening by default, which is arguably a rakudobug | ||
pmichaud | map should be flattening by default now | ||
TimToady | so you might need a .lol there, but then niecza certainly won't run it | ||
oh, nevermind, you're taking in pairs | 21:09 | ||
pmichaud reads backscroll | 21:10 | ||
TimToady obviously needs to take a map...er...a nap... | |||
afk & | 21:11 | ||
kresike | bye all | ||
21:12
kresike left
|
|||
masak | bye kresike. | 21:12 | |
cog_ | tadzik, masak, jnthn can you edit the fpw wiki so we can know where every one stays and eat. journeesperl.fr/fpw2012/wiki | ||
flussence | I've come up with gist.github.com/2999080 but it seems insufficiently lazy; trying to use ^Inf hangs it :( | 21:13 | |
masak | aww :) | 21:15 | |
pmichaud | (Z^.. handling) I know there's a bug with Z handling in Rakudo for some operators; it's on my todo list. | 21:16 | |
sergot | What does &lol do? | 21:17 | |
pmichaud | "lol" == "list of lists"... it essentially turns flattening parcels into non-flattening parcels | 21:18 | |
or something like that. the details still need a little fleshing out. | |||
sergot | pmichaud++ thanks | ||
21:22
leprevost joined
21:27
cog_ left,
cog__ joined
21:32
fridim_ left
21:33
alester left
21:40
harmil joined
|
|||
harmil | Well, I'm about to go off on vacation for the rest of the week, but I thought I'd mention: I just finished deploying a trivial parser in rakudo for $work … startup is a bit painful, but it parses like a champ! | 21:42 | |
masak | \o/ | 21:43 | |
harmil++ | |||
jnthn | harmil: Is the startup largely the compilation time rather than actual startup time? | ||
harmil | jnthn: yes, I'm pulling in Log and Date::Time::Utils along with my grammar and actions… total startup is about 2-5 seconds | 21:44 | |
But since I just need the parser to sit there reading input and spitting out ASTs, I'm fine with that. | |||
jnthn | harmil: OK...with the various modules pre-compiled? | ||
harmil | jnthn: no pre-compilation, yet | ||
jnthn | OK. | 21:45 | |
harmil | Since I have to inter-operate with lots of other code in other languages, I spit out the ASTs as JSON. Damn, I just love JSON as a neutral interchange! | ||
jnthn | :) | 21:46 | |
harmil | One side benefit to Perl 6: my domain language happens to look a lot like SQL, so I'm going to talk to $work about being able to derive a pure SQL parser from it and publish that on github… we shall see. | 21:47 | |
masak | good night, fearless and glorious #perl6. | 21:55 | |
21:57
sudokode joined
21:59
geekosaur joined
22:08
PacoAir left
22:11
mattp_ left,
mattp_ joined,
brrt left
22:17
raiph joined
|
|||
raiph | hii #perl6 | 22:17 | |
reading thru the wiki and issues at github.com/stevan/p5-mop | 22:19 | ||
22:20
bluescreen10 left,
sergot left
|
|||
raiph | seems the more p6 compat it will be the better | 22:20 | |
reading github.com/stevan/p5-mop/issues/28 | 22:21 | ||
pmichaud | raiph: there's a hackathon taking place in august to address exactly that (p6 and p5 mop) | 22:27 | |
22:28
skids joined
|
|||
jnthn -> sleep, night o/ | 22:28 | ||
raiph | ah. perfect. thx. | ||
(fwiw my specific concern was best middle ground on concrete syntax (issue 28 suggests introducing "my method")) | 22:29 | ||
22:32
fibo left
22:33
lue left
|
|||
pmichaud | act.yapc.eu/mtmh2012/sponsors.html#p5mop | 22:34 | |
(item #5) | |||
22:37
thomax joined
|
|||
thomax | hi | 22:37 | |
when i do a `time perl6 -e 'say "hello world"'` ib a linux system i get 0.765u 0.145s 0:00.94 95.7%, but when i do the same with "normal" perl (time perl -e 'print "hello world\n"') i get 0.001u 0.002s 0:00.02 0.0% | 22:39 | ||
pmichaud | yeah, perl 6 has a lot more in it. | 22:40 | |
thomax | which means that perl6 is about 10 times slower starting | ||
pmichaud | sure, but you get a lot more at startup | ||
thomax | so, that means for everyday tool programming perl5 is the better choice, right? | 22:41 | |
pmichaud | depends on the type of programming you're doing. | ||
Yes, there are some applications for which p5 will be better, and others for which p6 will be better. Just like some applications are better in C and others are better in C++ | |||
thomax | system automatisation, filtering, admin stuff | ||
pmichaud | out of curiosity, try: | 22:42 | |
benabik | What matters more? Startup time? Overall run time? Time spent writing the tool? | ||
pmichaud | time perl -MMoose -MMooseX::Method::Signature -MMooseX::MultiMethods -MRegexp::Grammars -e 'print "hello world\n"' | ||
thomax | yeah, i stick with C, C++ is for the others | ||
benabik | With many sysadmin scripts the programmer time is far more important than the run time. | ||
thomax | pmichaud: gives me about the same result | 22:43 | |
pmichaud | really? rakudo is still 10x slower? | 22:44 | |
thomax | yes, really | 22:45 | |
maybe i should install MooseX, to be fair ;-) | 22:46 | ||
pmichaud | also, what version of rakudo are you running? | 22:47 | |
thomax | debian unstable.. wait | ||
pmichaud | perl6 -v | ||
thomax | This is perl6 version 2012.04.1 built on parrot 4.3.0 revision 0 | 22:48 | |
my last try on perl6 is 1.5 years ago :-) | 22:49 | ||
pmichaud | 2012.04.1 is reasonably recent | 22:50 | |
thomax | actually perl6 made it into debian, thats quite a success :-) | ||
pmichaud | here's the timings I get | ||
gist.github.com/2999876 | |||
that's not including Regexp::Grammars | 22:51 | ||
benabik | For me P6 takes 0.8, P5 0.1, Moose takes 0.27 (I don't have grammars or any MooseX) | ||
thomax | as i said, i don't have MooseX installed :-) | ||
pmichaud | yeah; the point is that startup is an apples-to-oranges comparison :) | ||
for some applications (including 'hello world'), p5 is faster startup. for other applications, p6 is faster. | 22:52 | ||
afk here | 22:53 | ||
thomax | ok, then.. i'm offline :-) | 22:54 | |
ahoi | |||
and thanks | |||
22:54
thomax left
22:59
[particle]1 left
23:01
[particle] joined
23:08
spider-mario left
23:10
stephenlb left
23:12
stephenlb joined
23:13
atrodo left
|
|||
lichtkind | gnight | 23:30 | |
o/ | |||
23:31
lichtkind left
23:44
sjohnson is now known as cutebot
23:45
cutebot is now known as sjohnson
23:52
adu left
|