»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:12
Psyche^_ joined
00:15
kivutar left
00:16
Psyche^ left
00:17
mathw joined,
pernatiy joined
00:26
berekuk left
|
|||
[Coke] | rakudo: my $a is default(42); use Test; is $a, 42; say $a.VAR.default; | 00:30 | |
camelia | rakudo 252008: OUTPUT«ok 1 - 42» | ||
[Coke] | rakudo: my $a is default(42); use Test; is $a, 42; is $a.VAR.default, 43; | ||
camelia | rakudo 252008: OUTPUT«ok 1 - not ok 2 - # got: '42'# expected: '43'» | ||
[Coke] | on the jvm, that now dies on the .default call. | 00:31 | |
00:33
berekuk joined
00:42
riceandbeans left
00:44
BitPuffin left
00:47
dayangkun joined
00:48
dayangkun left,
berekuk left,
Mouq joined
00:49
teslos left
00:50
dwarring left
00:51
mathw left
00:52
s00pcan left
00:54
mathw joined,
berekuk joined
00:56
berekuk left
00:58
berekuk joined
01:00
berekuk left
01:06
skids joined
01:13
tokuhirom left
01:20
tokuhirom joined,
stevan_ joined,
thou left
01:38
kbaker joined
02:12
EvanTeitelman left
02:17
krunen joined
02:20
Mouq left
02:44
zakame left
|
|||
[Coke] | n: $*VM | 02:50 | |
camelia | niecza v24-95-ga6d4c5f: ( no output ) | ||
[Coke] | n: say so $*VM | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«False» | ||
[Coke] | n: say $*VM.perl | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«Any» | ||
[Coke] | n: say $*VM.gist | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«(Any)» | ||
dalek | ast: a993413 | coke++ | S (2 files): niecza fudge |
03:01 | |
ast: 4ae1f4c | coke++ | S (2 files): niecza fudge |
|||
ecza: 473bd20 | coke++ | t/spectest.data: run fudged tests |
03:02 | ||
diakopter | he played Bateman; he played Batman. | ||
03:03
qiyong joined
|
|||
qiyong | hi all | 03:03 | |
diakopter | hi qiyong | ||
qiyong | does p6 supoort package foo::bar; | ||
diakopter | rn: package foo::bar; | 03:04 | |
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Semicolon form of package definition indicates a Perl 5 module; unfortunately, STD doesn't know how to parse Perl 5 code yet at /tmp/FbE9BqI11R line 1:------> package foo::bar⏏;Parse failed»… | ||
..rakudo 252008: OUTPUT«===SORRY!=== Error while compiling /tmp/_dc9MsgxUUThis appears to be Perl 5 code. If you intended it to be Perl 6 code, please use a Perl 6 style package block like "package Foo { ... }", or "module Foo; ...".at /tmp/_dc9MsgxUU:1------> pa… | |||
diakopter | rakudo's error is more helpful in this case | 03:05 | |
qiyong: yes, but it's called module foo::bar; | 03:06 | ||
qiyong | diakopter: and foo is the directory name? | ||
diakopter | if that's where it's stored, it can be loaded that way, yes | ||
qiyong | where's the doc for $^H? | 03:11 | |
perlvar | |||
[Coke] | $^H is S03:171 | 03:13 | |
synopsebot | Link: perlcabal.org/syn/S03.html#line_171 | ||
[Coke] | er... | ||
$^H is S28:171 | 03:14 | ||
synopsebot | Link: perlcabal.org/syn/S28.html#line_171 | ||
qiyong | perl and python, which is more powerful? | ||
bonsaikitten | qiyong: yes | ||
[Coke] | bonsaikitten++ | ||
qiyong | bonsaikitten: are you from japan? | ||
03:14
preflex_ joined,
ChanServ sets mode: +v preflex_
|
|||
bonsaikitten | qiyong: most programming languages have the same expressivity, but sometimes a problem is easier to solve in one, or the other ... | 03:14 | |
no, I'm not ... | |||
qiyong | bonsaikitten: is bonsai japanese? | 03:15 | |
03:15
preflex left
|
|||
bonsaikitten | the word is | 03:15 | |
03:15
preflex_ is now known as preflex
|
|||
qiyong | in terms of lexical scope, what other scopes are there? | 03:16 | |
[Coke] | package, file, dynamic | 03:19 | |
03:24
btyler joined
|
|||
qiyong | totally three? | 03:24 | |
four? | |||
package vars don't need 'my'? | 03:25 | ||
03:25
cognominal left,
cognominal joined
03:28
BenGoldberg left
03:39
btyler left
03:41
zakame joined
|
|||
qiyong | where bar is the filename, right? like bar.pm | 03:49 | |
TimToady | class scope | 03:52 | |
package vars are usually introduced with 'our', class vars with 'has' | 03:53 | ||
you can also introduce something into anonymous scope with 'anon' | 03:55 | ||
we don't use package vars much in p6 | |||
03:59
fridim_ left
|
|||
TimToady | there are several variants on lexical scope, too, depending on how long the bindings last | 03:59 | |
constants have the longest bindings, 'my' the shortest, and 'state' is in the middle | |||
in another sense, every object provides its own scope to its attributes | 04:01 | ||
04:07
zakame left
04:11
kbaker left
04:23
pernatiy left,
pernatiy joined
04:26
araujo left,
araujo joined
04:40
zakame joined
|
|||
moritz | \o | 04:41 | |
04:41
zakame left,
zakame joined,
Woodi left
04:42
Woodi joined
04:43
raiph joined
04:47
census left
05:05
qiyong left
05:22
SamuraiJack__ joined
05:29
SamuraiJack joined
05:30
qiyong joined
05:31
xenoterracide left
05:32
SamuraiJack__ left,
xenoterracide_ joined
05:33
denis_boyun joined
05:45
johnny5_ joined
|
|||
sjohnson | hi!~ | 05:58 | |
05:59
johnny5_ left
06:00
johnny5_ joined
06:03
poor_soul joined
|
|||
poor_soul | hi, #perl6 :) | 06:04 | |
i'm currently wrestling with Perl 6 module apparatus | 06:06 | ||
06:07
denis_boyun left
06:08
bbkr__ joined
|
|||
poor_soul | i've got file lib/A/B.pm which says basically 'class A::B is export {...}', then file lib/A.pm which says 'module A; use A::B; sub version is export {...}' | 06:10 | |
06:11
bbkr_ left
|
|||
poor_soul | when i do 'use A' in an app file, i don't obtain the definition of A::B | 06:11 | |
06:11
denis_boyun joined
|
|||
JimmyZ | you need add your dir ..../lib/ to he search path | 06:12 | |
s/he/the/ | |||
@INC, like p6 | |||
*p5 | 06:13 | ||
poor_soul | ofc i did that | ||
JimmyZ | you have 'module A::B;' in B.pm? | 06:14 | |
poor_soul | i get the definitions in A.pm, but not those of A/B.pm, if if they are use'd inside A | ||
in B.pm i only have 'class A::B is export; method a {...}' etc | 06:15 | ||
s/if if/even if/ | 06:16 | ||
06:16
denis_boyun left
|
|||
JimmyZ | github.com/perl6/DBIish/blob/maste...sh.pm6#L15 | 06:16 | |
poor_soul | what do you mean? | 06:19 | |
06:19
pupoque joined
|
|||
JimmyZ | an example | 06:19 | |
poor_soul | i'll try to experiment with that, brb | 06:21 | |
06:33
FROGGS[mobile] left
|
|||
poor_soul | ok, i made that work | 06:34 | |
now the problem is, when i try to do 'use A <B>', it says: no EXPORT sub, but you provided positional argument in the 'use' statement | 06:35 | ||
i dont see EXPORT sub explained in S11, where could i find it? | 06:36 | ||
06:36
FROGGS joined
06:43
xenoterracide_ left
06:45
Woodi left
06:46
Woodi joined
06:50
domidumont joined
06:54
domidumont left
|
|||
moritz | I don't think it's specced or documented yet | 06:54 | |
poor_soul | i'm trying to do 'my ::B ::= A::<::B>' alternatively, but i get 'expecting any of: scoped declarator' | 06:55 | |
06:55
domidumont joined
|
|||
moritz | basically it's an our sub EXPORT(*@args) { } that receives the argument list that you provided in the use statement | 06:55 | |
poor_soul: try it without the leading :: | 06:56 | ||
poor_soul | same error 'Cannot use :: as a type name' and then 'expecting ...' | 06:57 | |
nothing changed | |||
moritz | and what is A::<::B> supposed to mean? | 06:58 | |
poor_soul | i was trying 'my B ::= A::<B>' after 'use A' to import B into the namespace | ||
moritz | why not just use A::B then? | 06:59 | |
poor_soul | well, A::B is fine since it's short, but in case of longer names, it's quite a hassle | 07:00 | |
moritz | but A::<B> is longer than A::B | ||
07:00
Woodi left
|
|||
moritz | so I don't understand why you want to use A::<B> instead of A::B | 07:00 | |
poor_soul | but B is not | ||
moritz | yes, I got that part. | ||
poor_soul | i wanted to call A::B as B | 07:01 | |
moritz | yes | ||
07:01
dmol joined
|
|||
moritz | but why are using A::<B> und other complicated notations? | 07:01 | |
poor_soul | because use A <B> doesn't work | ||
do we know what an EXPORT sub should do? | 07:02 | ||
qiyong | what is \% ? | ||
moritz | yes | ||
poor_soul | i could implement it in the module | ||
moritz | it should control what to export | ||
poor_soul | so to make use A <B> work | ||
moritz | poor_soul: you can just do use A; constant B = A::B; | 07:03 | |
(provided that module A has an A::B) | |||
poor_soul | but it's not a constant, it's a class | ||
moritz | and then use B | ||
so what/ | |||
argm | |||
s{\/}{?} | 07:04 | ||
poor_soul | does it work the same? | ||
moritz | poor_soul: do you expect to modify the class? | ||
yes, works the same | |||
qiyong: in what context? | |||
qiyong | getopt('oDI', \%opts); | ||
poor_soul | modify the class, you say, how? | 07:05 | |
qiyong: creates a reference to hash | |||
moritz | qiyong: please find a more appropriate channel to ask Perl 5 questions | ||
poor_soul: dunno. But you seem to object declaring it as a constant | |||
qiyong | does p6 have ref? | 07:06 | |
moritz | poor_soul: it was more meant toung in cheek. Never mind | ||
poor_soul | sorry, i wasn't objecting it, i simply didn't know i could do that | ||
moritz | qiyong: perl6advent.wordpress.com/2011/12/...nces-gone/ | ||
poor_soul: ok. Then I guess my response wasn't very helpful, sorry | |||
poor_soul: to add a bit more context, types and constants are simply stored without sigils in the lexpads and our-scopes | 07:07 | ||
07:07
kaleem joined
|
|||
moritz | poor_soul: and 'constant A = ...' happens at compile time, which is usually what you want for types too | 07:07 | |
poor_soul: so even if it's a bit unintuitive at first, 'constant' is actually a great tool to create aliases for type names | 07:08 | ||
07:11
zakharyas joined
|
|||
poor_soul | so, A.pm says 'module A; use A::B; constant B = A::B; ...' . If i then do 'use A; my $b = B.new;' it errors out with Undeclared name: B | 07:12 | |
i'll brb | 07:13 | ||
07:13
xinming left
07:14
pupoque left
|
|||
moritz | poor_soul: yes, because you didn't do anything to make B visible in your main script | 07:14 | |
poor_soul: constants are lexically scoped by default | |||
poor_soul: so you'd have to say our constant B = A::B if you want it to be available in your main script | |||
07:14
xinming joined
|
|||
TimToady | r: subset Foo of Int; my Foo $x = "bar"; | 07:15 | |
camelia | rakudo 252008: OUTPUT«Type check failed in assignment to '$x'; expected 'Foo' but got 'Str' in block at /tmp/XuVy5m7giW:1» | ||
TimToady | r: subset Foo of Str; my Foo $x = "bar"; | ||
camelia | rakudo 252008: ( no output ) | ||
TimToady | another way | ||
r: BEGIN my \Foo = Str; my Foo $x = "bar"; say $x | 07:16 | ||
camelia | rakudo 252008: OUTPUT«===SORRY!===No compile-time value for Foo» | ||
TimToady | um | ||
n: BEGIN my \Foo = Str; my Foo $x = "bar"; say $x | 07:17 | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Lexical Foo is not a package at /tmp/hvSimr3tfp line 1:------> BEGIN my \Foo = Str; my Foo⏏ $x = "bar"; say $xA type must be provided at /tmp/hvSimr3tfp line 1:------> BEGIN my \Foo = Str; my Foo… | ||
07:21
teslos joined
|
|||
dalek | rlito/replito: 9643c62 | (Flavio S. Glock)++ | TODO-perlito5: Perlito5 - TODO update |
07:28 | |
rlito/replito: a0beddf | (Flavio S. Glock)++ | t5/01-perlito/080-array.t: Perlito5 - tests - slice tricks replito now uses minimal Carp |
|||
07:28
dalek left
07:29
dalek joined,
ChanServ sets mode: +v dalek
|
|||
masak | morning, #perl6 | 07:32 | |
lizmat | morning masak and the rest of #perl6! | ||
lizmat wonders what to attack today | 07:33 | ||
moritz | \o | ||
07:39
pupoque joined
|
|||
Ulti | thanks geekosaur I'll have to do some jiggery pokery to build parrot then, or just update the current parrot MacPort so that the version is what Rakudo wants | 07:39 | |
yoleaux | 10 Sep 2013 22:27Z <geekosaur> Ulti: MacPorts does not build as root and can't write outside the build area | ||
poor_soul | sorry, i'm back | 07:44 | |
moritz: i made that 'our constant B = A::B', but it's the same result | 07:45 | ||
moritz | :( | 07:51 | |
jnthn | lizmat: attack masak! | 07:54 | |
lizmat | directly? or by using macro's ? | ||
jnthn | With a macro named marco! | 07:57 | |
lizmat: More practically, perhaps figure out the VAR failures on JVM backend... ;) | |||
lizmat | like .VAR.default not working ? | 07:58 | |
poor_soul | moritz: i've got a pastebin for your use, let's work this issue out :) pastebin.com/Tps5aAXz | ||
masak | jnthn: we already have one of those in here. | 07:59 | |
moritz | poor_soul: oh, I think I see what the problem is, hang on | 08:00 | |
poor_soul: ah yes | 08:01 | ||
poor_soul: the 'our constant B = ...' is inside module A, so you are actually (re?)-declaring A::B | |||
08:02
eternaleye left
|
|||
moritz | poor_soul: if you move the constant declaration before the 'module A;' line, the constant is actually B, and stuff works | 08:02 | |
use A::B; | |||
our constant B = A::B; | |||
module A; | |||
our sub v is export { say "A::v"; } | |||
poor_soul | my god, what a thinko i did | ||
moritz: you're my saviour | 08:03 | ||
masak | moritz saved a poor soul | ||
moritz | :-) | 08:05 | |
poor_soul | if i can utter a wish, i would like a warning on redeclarations like those | 08:06 | |
moritz | r: { package A { our $B } }; package A { our $B } | ||
camelia | rakudo 252008: ( no output ) | ||
dalek | rlito: 596ae83 | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - use context information when "use" is the last statement; reported by Stanislav Poussep |
08:07 | |
moritz | poor_soul: the problem is that it's perfectly legal to do that | ||
maybe it shouldn't be | |||
dunno | |||
masak | depends. what's the use case? | 08:08 | |
moritz | it's a p5 heritage thing, and I don't know if anybody has really thought it through | ||
poor_soul: though to be honest I don't think it's a wise move to export aliases to other namespaces | 08:09 | ||
dalek | rlito/replito: 596ae83 | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - use context information when "use" is the last statement; reported by Stanislav Poussep |
08:10 | |
rlito/replito: 45eb9c1 | (Stanislaw Pusep)++ | / (4 files): Revert "Perlito5 - js - can't handle "return ()"; trying "return (true)" instead" This reverts commit c528e36f7e4b9b647fc8f1cb7a7cff3302295cf9. |
|||
rlito/replito: 189ed1b | (Stanislaw Pusep)++ | / (3 files): Merge branch 'master' into replito |
|||
moritz | poor_soul: the reason the author called it A::B and not B in the first place is probably that A::B is the better name | ||
poor_soul: so it's fine to declare local aliases, but exporting these aliases seems a bit dodgy | |||
masak | I could argue that one both ways. | ||
maybe the whole language should have a clearer boundary between "non-experted names" and "exported names". | 08:11 | ||
but it's also possible that would be impractical, and it's better kept as a social agreement. | |||
moritz | masak++ # non-experted names | 08:12 | |
poor_soul | but think about this: you've got lib/A/B/C.pm and lib/A/B/C/D.pm, and want to call them as A::C and A::D | 08:13 | |
the solution is that aliasing, or is there another way? | 08:14 | ||
08:14
xinming left
|
|||
moritz | poor_soul: well, there are two solutions. One is not naming them A::B::C in the first place, when you want them to be named A::C | 08:14 | |
poor_soul: but if A::B::C is the most fitting name, then yes, alias. But keep the alias to your own code. | |||
poor_soul: there's not much point in nested namespaces if you export flatter aliases | 08:15 | ||
poor_soul | moritz: you mean in the A.pm file? | ||
moritz | poor_soul: yes | ||
08:15
xinming joined
|
|||
masak | moritz: it's really the same idea as with inwards-facing attributes and outwards-facing methods... but on a package level. | 08:29 | |
moritz: and the motivation is the same, too: retaining refactorability inside while adhering to a contract outside. | |||
moritz | masak: oh, good point | 08:32 | |
lizmat | r: sleep * # shouldn't this be the same as sleep Inf ? | 08:33 | |
camelia | rakudo 252008: OUTPUT«Cannot call 'Numeric'; none of these signatures match::(Mu:U \v: Mu *%_) in method Numeric at src/gen/CORE.setting:961 in sub infix:<==> at src/gen/CORE.setting:3685 in sub infix:<==> at src/gen/CORE.setting:3683 in method ACCEPTS at src/gen/CORE.setting:3… | ||
lizmat | it's not in the spec, but it feels it should | 08:35 | |
masak | lizmat: wfm | ||
lizmat: * doesn't mean Inf in all possible cases... but in this case, I don't mind. | |||
08:35
raiph left
08:37
dakkar joined
|
|||
moritz | agreed | 08:38 | |
mathw | o/ | 08:40 | |
08:40
qiyong left
|
|||
masak | mathw! \o/ | 08:45 | |
09:00
qiyong joined
09:08
kivutar joined
09:13
daxim joined
|
|||
mathw | hi masak | 09:13 | |
09:14
sqirrel joined
|
|||
lizmat | r: Instant.new(Inf) # yet sleep still is specced to have Inf as the default for its Instant parameter | 09:20 | |
camelia | rakudo 252008: OUTPUT«Type check failed in assignment to '$!x'; expected 'Rat' but got 'Num' in block at src/gen/CORE.setting:865 in method BUILDALL at src/gen/CORE.setting:848 in method bless at src/gen/CORE.setting:837 in method new at src/gen/CORE.setting:13773 in block a… | ||
lizmat | TimToady: spec problem or something that would need to be fixed in Instant.new ? | 09:21 | |
masak | well, Inf has often been referred to as being "type-curious". | ||
lizmat | S29:293 to be precise | ||
synopsebot | Link: perlcabal.org/syn/S29.html#line_293 | ||
masak | it seems to in some sense straddle all comparable types. | ||
moritz | lizmat: known spec problem | ||
masak | which hasn't really seen the light of implementation. | 09:22 | |
i.e. Inf is typed as "anything you want it to be": Real, Str, Instant... | |||
moritz | or is a solution specced now, just not yet implemented? | ||
Num, Rat, Int | |||
lizmat | "multi sleep-till ( Instant $till = Inf --> Bool )" is what is specced | ||
jnthn | urgh argh | ||
masak | the spec is there, but I'm not sure it's implementable. | ||
which would explain why it hasn't been implemented. | |||
jnthn | I think this is either unimplementable or if it is I dont' care to work out how. | ||
'cus the answer will probably be crazy. | 09:23 | ||
masak | this is one place where TimToady's intuition runs up against type theory best practices. | ||
and we're literally unable to tell whether it's a good idea or a bad one to go crazy in the way TimToady suggests. (and if so, how) | |||
:P | |||
jnthn | Well, we'd need to work out how to allow Int, Rat, etc. represent a notion of Inf | 09:24 | |
Which on most backends will mean making everys ingle one of them consume more memory so we have a place to store that. | |||
lizmat | well, I don't think it's a problem to implement sleep-till with INf as the default | ||
and defer type checking to runtime | |||
masak | *usually* the way these things are resolved is that a type-theoretic solution snaps into place, and everyone goes "phew!", and "how come we didn't think of this sooner?" | ||
but that hasn't manifested with Inf yet. | 09:25 | ||
lizmat | well, I'll go crazy with sleep-til, deferring type checking to runtime | ||
jnthn | lizmat: Why not zoid^Wmultis? | ||
A multi that takes an Instant, and a multi that takes Inf? | |||
masak | hm, maybe a stopgap solution is to have things like Inf.Str(), Inf.Instant(), etc | ||
lizmat | well, the setting doesn't allow Inf yet | ||
masak | it's ugly, but it's unambiguous. | ||
lizmat | must be $Inf | ||
jnthn | masak: Yes but what does Inf.Str return? | 09:26 | |
masak | jnthn: a Str type object, specially tailored to always compare last. | ||
arnsholt | An infinitely long string. D'uh. =p | ||
jnthn | masak: The type object is the type object... | ||
masak | arnsholt: you belong here, for sure :P | ||
jnthn: you're saying There Can Only Be One? | |||
jnthn | masak: Well, there's only one ->WHAT in the st | 09:27 | |
masak | jnthn: how about the type object of an anonymous Str subtype, then? | ||
jnthn | I guess you can have moer than one if you want to allow ATypeObject.WHAT to sometiems not be identity | ||
masak | Str::LolI'mSoInfinite | ||
jnthn | Yes, an anonymous subtype has a different type obj 'cus it's a different type. | 09:28 | |
masak | jnthn: I think that would be acceptable for Inf.Str() | ||
walk & | |||
09:30
sqirrel left
09:36
teslos_ joined
09:39
teslos left,
teslos_ is now known as teslos
|
|||
dalek | rlito: 1fef5af | (Flavio S. Glock)++ | / (4 files): Perlito5 - js - autoquote special cases |
09:43 | |
10:01
qiyong left
|
|||
dalek | rlito: f506e45 | (Flavio S. Glock)++ | t5/01-perlito/050-string.t: Perlito5 - tests - now it works with many perl5.1x versions |
10:05 | |
kudo/nom: 79c0f51 | (Elizabeth Mattijsen)++ | src/core/ (2 files): Get sleep(), sleep-time() and sleep-till() up to spec Since Duration and Instant were not known yet in control.pm, moved these subs to Temporal.pm where they seemed to be more at home. |
10:13 | ||
lizmat | working on the tests now | 10:14 | |
10:30
berekuk joined
|
|||
lizmat | wish we had something like p5's alarm() already | 10:35 | |
10:37
dmol left
|
|||
masak too | 10:37 | ||
10:37
PZt left
10:38
PZt joined
|
|||
moritz | call to weapons! | 10:58 | |
(alarm = al arm = take your weapon) | 10:59 | ||
lizmat | r: my $b = {sleep(Inf)}; say $b # works as expected | 11:01 | |
camelia | rakudo 252008: OUTPUT«Block.new()» | ||
lizmat | r: my $b; eval('$b={sleep(Inf)}'); say $b # waits indefinitely ???? | 11:02 | |
camelia | rakudo 252008: OUTPUT«Block.new()» | ||
lizmat | huh? | ||
hmmm… why does this hang in the test-suite | 11:03 | ||
ah, I think I know | |||
dalek | ast: 693cdad | (Elizabeth Mattijsen)++ | S29-context/sleep.t: Adjusted sleep() related test to new spec implementation |
11:08 | |
11:12
kivutar left
11:16
teslos left
|
|||
dalek | rlito: 8a5c833 | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - code cleanup |
11:22 | |
11:24
berekuk left
11:28
xinming left,
berekuk joined
11:29
xinming joined
11:32
fhelmberger joined
|
|||
dalek | rlito: e3356de | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - code cleanup |
11:34 | |
lizmat just marked all of her Perl 5 modules on CPAN as HANDOFF | 11:35 | ||
it's time to move on :-) | |||
github.com/Perl-Toolchain-Gang/too...sting-help | |||
hoelzro | =O | 11:36 | |
masak | lizmat++ | ||
lizmat: it's interesting to see how Perl 5 people are in different parts of the cycle relating to Perl 6. | |||
lizmat: roughly, mst is three years ahead of everybody else :> | 11:37 | ||
lizmat: I would count you as well, but AFAIK you never had an anti-Perl 6 phase. | |||
lizmat | please note that at the RaNIW, we're going to have at least 2 Perl 5 hard core guys | 11:38 | |
no, I don't think I ever had an anti-Perl 6 phase | |||
but that was mostly I was too busy at $work :-) | |||
moritz | ribasushi and who else? | ||
lizmat | sno | ||
jnthn | Are they "hard core guys" 'cus the Perl 5 core is hard? :P | 11:39 | |
lizmat | well, no, but they're deep in the DBI and DBIx::Class dev teams | ||
masak .oO( you're hardcode, john sno ) | |||
tadzik | :D | 11:40 | |
11:42
kivutar joined
|
|||
dalek | rlito: 88f8dd7 | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - add special case for sort() |
11:45 | |
11:53
skids left
|
|||
FROGGS | lizmat++ # abandon modules | 11:53 | |
btw, I suggest that we organize a portathon after rakudo has landed on moarvm | 11:54 | ||
(where we identify the most used deps first, and make sure these get tackled first) | 11:55 | ||
11:56
sqirrel joined
|
|||
colomon | portathon++ | 11:58 | |
FROGGS | but I think we should wait until it is reasonable fast, so we don't disappoint to much ppl | 11:59 | |
and then we make an hourly build of a binary star distribution :o) | 12:00 | ||
hoelzro | how will the multiple backends affect Rakudo *? will there just be Rakudo Star on Parrot, or will there be one per VM? | 12:01 | |
jnthn | I think the source star will give you the choice of what you want, and the binary stars will be per VM. | 12:02 | |
lol...binary star | |||
FROGGS | *g* | ||
jnthn treis to remember the story set in a binary star system where people sun-tanned different colors (blue and red, maybe) depending on which star they were most exposed to... :) | 12:04 | ||
Oc course, those with frequent exposure to both were purple :)] | |||
dalek | rlito: a332ffa | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - use "else if" |
12:05 | |
12:06
kivutar left
|
|||
FROGGS | that is not star trek that is! | 12:08 | |
12:12
sqirrel left
12:13
xenoterracide_ joined
|
|||
dalek | ecs: 157b605 | (Elizabeth Mattijsen)++ | S29-functions.pod: Add * as a possible parameter to sleep-like subs |
12:17 | |
12:32
adris joined
12:36
berekuk left
12:42
berekuk joined
|
|||
masak | walk & | 12:48 | |
poor_soul | r: class A {sub free_s {say 'free_s';};method free_m {free_s;};submethod DESTROY {free_m;}} | 12:49 | |
camelia | rakudo 79c0f5: OUTPUT«===SORRY!=== Error while compiling /tmp/27PKKHt9ROUndeclared routine: free_m used at line 1» | ||
poor_soul | does someone know why it says free_m is undeclared? | 12:50 | |
moritz | because you try to call it as a subroutine, but it's declared as a method | ||
subroutines live (and are looked up in) lexical scopes, methods in method tables | |||
FROGGS | r: class A {sub free_s {say 'free_s';};method free_m {free_s;};submethod DESTROY { A.free_m }} # <-- so call it as a method | 12:54 | |
camelia | rakudo 79c0f5: ( no output ) | ||
poor_soul | moritz: of course you're right :P | ||
FROGGS | r: class A {sub free_s {say 'free_s';};method free_m {free_s;};submethod DESTROY { self.free_m }} # <--- or better using self | ||
camelia | rakudo 79c0f5: ( no output ) | ||
dalek | rlito: 50054f4 | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - code cleanup |
||
poor_soul | but shouldn't it print 'free_s'? | 12:55 | |
colomon | wouldn't you actually have to create an object of class A for DESTROY to be called? | 12:56 | |
FROGGS | I was about to say that | ||
poor_soul: the class won't be destroyed | |||
colomon | not that I'm sure it would even be called in that case…. object lifetimes can be weird. | ||
poor_soul | i think i should go to bed today | ||
FROGGS | r: class A {sub free_s {say 'free_s';};method free_m {free_s;};submethod DESTROY { self.free_m }}; { my $a = A.new; } # you could expect 'free_s' here | 12:57 | |
camelia | rakudo 79c0f5: ( no output ) | ||
FROGGS | but this is sort of NYI and lacks some discussion/specs | 12:58 | |
12:58
pmurias joined
|
|||
poor_soul | FROGGS: wait a sec, why doesn't it print anything? | 13:02 | |
FROGGS | <FROGGS> but this is sort of NYI and lacks some discussion/specs | ||
I think it is not guaranteed when the garbage collector actually collects something | 13:03 | ||
poor_soul | FROGGS: you mean it's unsure because i did not define a meaningful new? | 13:04 | |
FROGGS | no, I didn't mean that | ||
I mean it is not implemented and needs clarifying | |||
pmurias | shouldn't it be guaranteed that the objects get collected before the end of the program? | ||
dalek | rlito: 6332f51 | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - emitter - cleanup parenthesis |
13:05 | |
FROGGS | it should be collected at the end at least, yes | ||
why it doesn't call the DESTROY? no idea, I guess it is NYI | |||
poor_soul | that's quite the NYI | 13:07 | |
pmurias | hmm, why do I sometimes get a forbidden apache error message for the irc log? | ||
FROGGS | I guess the gc lives in parrot, and I have no idea if there is some sort of callback/hook so that it possible could call the DESTROY method | ||
pmurias: because there is an access limit | 13:08 | ||
pmurias: bug moritz for details | |||
moritz | probably too many requests sent per hour, or buggy apache rate limit | 13:09 | |
13:12
berekuk left
13:14
SamuraiJack left,
thou joined
13:16
kaare_ joined,
PacoAir joined
13:19
pernatiy left
13:21
kbaker joined
13:27
denis_boyun joined
13:31
skids joined,
berekuk joined
|
|||
pmurias | moritz: buggy rate limit as I can solve this by refreshing repeatedly | 13:32 | |
13:34
eternaleye joined,
FROGGS left
13:36
lowpro30 joined
|
|||
skids | r: sub circumfix:<⟨ ❘> ($i) { "bra $i".say; }; sub circumfix:<❘ ⟩> ($i) { "ket $i".say; }; ❘1⟩; ⟨2❘; | 13:38 | |
camelia | rakudo 79c0f5: OUTPUT«ket 1bra 2» | ||
skids | r: sub circumfix:<⟨ ❘> ($i) { "bra $i".say; }; sub circumfix:<❘ ⟩> ($i) { "ket $i".say; }; ⟨2❘; ❘1⟩ | ||
camelia | rakudo 79c0f5: OUTPUT«===SORRY!=== Error while compiling /tmp/0D_KiT4wROConfusedat /tmp/0D_KiT4wRO:1------> mfix:<❘ ⟩> ($i) { "ket $i".say; }; ⟨2❘; ⏏❘1⟩ expecting any of: postfix statement end statement modifier … | ||
skids | .oO(something probably to do with starter/stopper designations) |
13:39 | |
13:39
denis_boyun left
13:42
mattp_ joined,
mattp_ left
13:43
mattp_ joined
|
|||
skids | std: sub circumfix:<⟨ ❘> ($i) { "bra $i".say; }; sub circumfix:<❘ ⟩> ($i) { "ket $i".say; }; ⟨2❘; ❘1⟩; | 13:43 | |
camelia | std 7c17586: OUTPUT«ok 00:01 55m» | ||
mathw | r: say ?"0"; | 13:45 | |
camelia | rakudo 79c0f5: OUTPUT«False» | ||
13:45
btyler joined
13:46
pernatiy joined
|
|||
skids | not that I have a clue how to go about making those and all of ⟨A❘B ⟩, ⟨A❘T | B⟩ and T ❘B⟩ work :-) | 13:46 | |
lizmat | www.infoq.com/news/2013/09/jdk8-preview | 13:48 | |
13:48
adris left,
mattp_ left
13:49
adris joined
13:53
kaleem left
|
|||
pmurias | skids: what are those crazy brackets supposed to do? | 13:54 | |
skids | Dirac notation. | ||
Bra changes a vector to a row matrix and ket changes it to a column matrix. | |||
(bra modulo some possible convultions of the elements depending on the inner product in use at the time.) | 13:55 | ||
*convolutions | 13:56 | ||
.oO(convulsing elements) |
13:57 | ||
13:57
adris left
13:58
mattp_ joined
|
|||
jnthn | In general, you have no idea of the timing of DESTROY. | 14:05 | |
So it's hardly "quite the NYI", since it's not actually very useful :) | 14:06 | ||
colomon | well, it shouldn't happen while you're still using the object. ;) | ||
jnthn | aye | ||
but you dunno how much later | |||
lizmat | { my $o = Object.new; LEAVE $o.DESTROY } | ||
jnthn | lizmat: right. :) | 14:07 | |
That's teh reliable way. | |||
flussence | would calling it manually like that work properly if an automatic thing got implemented later? | ||
14:08
lizmat left,
lizmat joined
|
|||
jnthn | flussence: It'd probably be called a second time :) | 14:08 | |
lizmat | but, isn't there a way to mark an object as de-activated ? | 14:16 | |
self := Nil | |||
comes to mind | |||
flussence | fwiw I don't strongly care when DESTROY runs, I only wanted somewhere to put native function resource freeing stuff that looks neat & tidy | ||
jnthn | I'm pretty sure you can't bind to self, and if yuou did you're saying nothing about the object and everything about the lexical symbol self in the current method... | 14:17 | |
lizmat | "Cannot use bind operator with this left-hand side" | ||
r: class H is Hash { method DESTROY { self = () } }; my %h=H.new((a => 1, b=>2)); say %h; %h.DESTROY; say %h | 14:18 | ||
camelia | rakudo 79c0f5: OUTPUT«("a" => 1, "b" => 2).hashNo such method 'DESTROY' for invocant of type 'Hash' in block at /tmp/FcrRvf194D:1» | ||
lizmat | r: class H is Hash { method DESTROY { self = () } }; my %h:=H.new((a => 1, b=>2)); say %h; %h.DESTROY; say %h | ||
camelia | rakudo 79c0f5: OUTPUT«("a" => 1, "b" => 2).hash().hash» | ||
lizmat | r: class H is Hash { method DESTROY { self = H.new } }; my %h:=H.new((a => 1, b=>2)); say %h; %h.DESTROY; say %h | 14:19 | |
camelia | rakudo 79c0f5: OUTPUT«("a" => 1, "b" => 2).hash().hash» | ||
14:26
jnap joined,
drigo joined
|
|||
drigo | :-) | 14:27 | |
Perl6 is stable? official realese? | |||
nice syntax | |||
easy migration whatever lang => perl6 | |||
rs | |||
14:28
dmol joined
14:31
[Sno] joined
|
|||
[Sno] | anyone around can help fixing build issues when packaging raduko-star (with parrot) | 14:32 | |
poor_soul | doesn't that mean that you could do this: as you get to install a new lexical symbol in a block, you check if there is a LEAVE phaser. If it's not present, make one that calls DESTROY for the symbol, else append the instructions to the existing one | ||
when there are multiple symbols, put their DESTROYs in a list and use that in the LEAVE | 14:33 | ||
ofc i meant refs to DESTROYs | 14:34 | ||
[Sno]: what's the problem? | 14:35 | ||
masak | drigo: re stable -- not according to some measures. but a lot better all round than two-three years ago. | ||
drigo: it all comes down to what you plan to use it for. some of us are using it quite a lot, and with nice results. | |||
[Sno] | poor_soul: ./Configure.pl tries to install --gen-parrot in configure stage, not during make install | ||
drigo | masak in web development | 14:36 | |
:) | 14:37 | ||
poor_soul | [Sno]: of course, it's needed for building nqp and rakudo | ||
masak | drigo: we have github.com/tadzik/Bailador/ which you should check out. | ||
pmurias | foo << 1 multiplies foo by 2 on the jvm? | ||
[Sno] | poor_soul: so I have to unbundle it - is there an option for that? | ||
jnthn | [Sno]: If you're packaging, you probably dont' want to be using the --gen... options. | 14:38 | |
poor_soul | [Sno]: it's not bundled for what i know, it gets parrot from the webz | ||
jnthn | [Sno]: Those mean "I am doing a source build, please build all the dependencies first" | ||
masak | drigo: or perhaps even better, github.com/tadzik/zblog which uses bailador | ||
[Sno] | first shot was to give it a try (to get it all from one source) | ||
but meanwhile it looks I should build parrot before and make it a prereq | 14:39 | ||
jnthn | [Sno]: You can also pass --with-nqp (and pass NQP's Configure --with-parrot) to tell it to use an installed one. | ||
drigo | masak ok, thanks u | ||
poor_soul | [Sno]: which distro? | ||
[Sno] | jnthn: yepp - but it's more effort - --gen-foo is simpler :( | ||
poor_soul: pkgsrc | |||
to have Perl6 on up to 15 platforms with one commit :D | 14:40 | ||
masak | [Sno]++ # welcome to #perl6! | ||
lizmat | [Sno]++ | ||
poor_soul | [Sno]: you should always check the AUR for simple build instructions | 14:41 | |
[Sno] | lizmat is responsible | ||
she forces me to have an installed r* Saturday | |||
masak | :D | ||
lizmat++ # responsible | |||
[Sno] | so … fu*** I have to package it, because no wildlife on machine :P | ||
14:41
mattp_ left
|
|||
hoelzro | I have a package for Rakudo * for Arch | 14:41 | |
14:41
mattp_ joined
|
|||
lizmat searches for the exit silently | 14:41 | ||
hoelzro | if you're interested | ||
[Sno] blames lizmat | |||
hoelzro: does it run on Darwin, AIX and HP-UX? | 14:42 | ||
hoelzro | oh, sorry, I misunderstood from the AUR reference | ||
[Sno] | if yes, I take a look and search what I can steal :D | ||
nwc10 wonders how to implement a hard-to-hack "install Rakudo and get a free beer" promotion. | |||
hoelzro | that's one thing I would really like to help improve: Perl 6 packaging for OSen | 14:43 | |
pmurias | int foo=...;bar = foo << 1 is equivalent to int foo=...; bar = 2 * foo? | ||
poor_soul | [Sno]: really, it's not that hard, perl Configure.pl --prefix=/usr --with-parrot=/usr/bin/parrot --with-nqp=/usr/bin/nqp && make | 14:44 | |
[Sno] | jnthn: would it be "safe" to package parrot-5.7.0 (5.5.0 is bundled, but a developer release) | ||
drigo | masak I'm developer. net, I've always been curious to perl, but the syntax of perl5 is ugly, but syntax perl6 is nice and easy | ||
rs :) | |||
poor_soul | [Sno]: then, for install, make DESTDIR=$dir install | ||
jnthn | [Sno]: There's not that much change between Parrot releases now, so the stable/developer distinction ain't worth much. | 14:45 | |
[Sno] | jnthn: thanks | ||
jnthn | pmurias: JVM has a left shift instruction, and I'm fairly sure we're using it. | ||
poor_soul | hoelzro: do you think there's interest for perl6 git packages? | 14:46 | |
hoelzro | git packages? | ||
poor_soul | hoelzro: i made some, like perl6-json-tiny-git, perl6-file-find-git, as to not need to use panda | 14:47 | |
hoelzro | oh | ||
well | |||
what I'd *like* to do is have rakudo-star be a metapackage | 14:48 | ||
that depends on the rakudo package, along with all the modules | |||
that's been the real hurdle up until now | |||
that and ENOTIME | |||
poor_soul | if we make enough of these, you can reproduce the modules list on R* and have a R*-git meta-package | ||
hoelzro | that'd be great | 14:50 | |
14:50
fhelmberger left
|
|||
hoelzro | I wrote a script to generate PKGBUILDs for all of the modules in R* | 14:50 | |
but I got stuck at writing the installer section for them | |||
dalek | rlito: 67d865d | (Flavio S. Glock)++ | / (4 files): Perlito5 - js - reference stringification |
14:51 | |
poor_soul | hoelzro: let's see, what did commands did you use in build() ? | 14:52 | |
hoelzro | poor_soul: it's one my home machine; I'll have to look there | ||
masak | drigo: I am a Perl 6 developer at heart, but I move around in both the Perl 5 and Perl 6 worlds. | ||
poor_soul | hoelzro: i tried bootstrapping panda, but for some reason it didn't work | ||
hoelzro | hmm | 14:53 | |
poor_soul | hoelzro: so i made a PKGBUILD for ufo | ||
masak | drigo: I can see what you mean by "ugly"... it's not something that bothers me, but it's interesting to hear of a .Net person who dislikes Perl 5 syntax but likes Perl 6 syntax :> | ||
hoelzro | that would be perfect | ||
poor_soul | and used that to buidl the modules | ||
build* | |||
tadzik | poor_soul: I can try helping you with panda erros | 14:54 | |
drigo | masak OO support nice in perl6 | ||
:) | |||
poor_soul | tadzik: panda builds File::Find ok, then fails on JSON::Tiny and Shell::Command. JSON::Tiny passes too if you fiddle a bit around, but i couldn't make Shell::Command build | 14:55 | |
[Sno] | is any of parrot developers here, too? | 14:56 | |
anyone, sorry | |||
jnthn is a Perl 6 and .Net guy too :) | |||
poor_soul | hoelzro: the only modules i tried which didn't work out so well with ufo were Panda itself and Rakudo::Debugger | ||
[Sno] | jnthn: there is something small wrong in parrot - can I send you the 2 patches? | 14:57 | |
poor_soul | hoelzro: Panda because you need to install the files manually | ||
jnthn | poor_soul: Rakudo::Debugger isn't just a Perl 6 module, is probably why :) | ||
[Sno] | both issues in configure stage | ||
jnthn | [Sno]: A PR is better; I don't think I have a Parrot commit bit these days... | ||
Somebody else here must, though :) | |||
[Sno] | okay, that answers (not so comfortable as wanted, but does ^^) | 14:58 | |
tadzik | poor_soul: yeah, panda is a bit quirky and its author is an idiot | ||
poor_soul: I'll try to fix it in the coming days | |||
poor_soul | hoelzro: i built Rakudo::Debugger by using panda-build in build() and then installing the files manually | 14:59 | |
hoelzro | I see | ||
nice | |||
pmurias | jnthn: what happened to your Parrot commit bit? | ||
tadzik | ha, so panda-build is useful for something. Good to know :) | ||
14:59
FROGGS[mobile] joined
|
|||
poor_soul | hoelzro: if you need them, i can fix them up and put them in AUR, let me know | 14:59 | |
hoelzro | poor_soul: I wouldn't mind having a look! | 15:00 | |
poor_soul | hoelzro: is there an easy way to let you see them other than uploading to AUR? i would like you to review them before | 15:01 | |
jnthn | pmurias: I didn't commit for ages and vaguely recall it not working out last time I tried.. | ||
hoelzro | poor_soul: gist? | ||
jnthn | pmurias: And that was many, many months ago :) | ||
hoelzro | e-mail? | ||
poor_soul | hoelzro: im going for pastebin, is that ok? | 15:02 | |
hoelzro | that's fine! | ||
moritz is pretty sure his parrot commit bit still works, and would be surprised if jnthn's were revoked | 15:03 | ||
jnthn | moritz: Hm, maybe something else was wrong... | 15:04 | |
pmurias | it must have bitrotted ;) | ||
jnthn | :P | 15:05 | |
pmurias | * has | ||
poor_soul | hoelzro: here's the one for JSON::Tiny, it's the cleanest [pastebin.com/29FnVN5u] | ||
hoelzro | sweet, thanks! | ||
woolfy | Thanks to Sno I am trying to install Perl 6 Rakudo as well. This is scary... | ||
poor_soul | woolfy: from git or tar? which distro? | 15:06 | |
pmurias | s/has/have/ | ||
woolfy | I am following directions from rakudo.org/how-to-get-rakudo/ and downloaded the newest RakudoStar from rakudo.org/downloads/rakudo/ | ||
[Sno] | woolfy: wait a bit, then you can use (cd lang/raduko-star && make install clean) | 15:07 | |
woolfy | Sno: well, in my terminal window a lot of stuff is happening right now. | ||
FROGGS[mobile] | That sounds familiar :o) | ||
woolfy | I did have the prerequisites: GCC, Perl 5.8/newer, make utility, git, ICU4C. So I thought: let's just do it. | 15:08 | |
moritz | jnthn: note that the --gen-parrot clone URL is not suitable for pushing | ||
woolfy | Interesting page, rakudo.org/how-to-get-rakudo/ | ||
It says: "Once these prerequisites are installed, build and install Rakudo as follows: " | |||
JimmyZ | jnthn: I'm seeing you're still there | 15:09 | |
woolfy | "cd rakudo" | ||
Which is not what I expected. lizmat did help me though. But I think this page needs some adapting so noobs like me would do things in the right order. | |||
FROGGS[mobile] | +1 | ||
please write down the weird parts | 15:10 | ||
woolfy | Yeeehaaaa.... doing a "make" | ||
FROGGS: well, rakudo.org/how-to-get-rakudo/ goes from one way of installing Rakudo to another and then goes back to the first way... | 15:11 | ||
jnthn | moritz: Ohh...I'd hope I'd have though tof htat, though :) | ||
dalek | rlito: 87c649e | (Flavio S. Glock)++ | / (3 files): Perlito5 - js - reference stringification - use less memory |
||
FROGGS[mobile] | Hmmm, will read it careful when I am at my pc | ||
woolfy | Like, the "cd rakudo" is what you do after the "$ git clone git://github.com/rakudo/rakudo.git" and not what you do after manually downloading the latest RakudoStar. | 15:12 | |
poor_soul | hoelzro: i just remembered that there was a problem that i fixed directly in rakudo-git PKGBUILD: it didn't have a /usr/lib/parrot/5.6.0/languages/perl6/site which made ufo fail | ||
Ulti | woolfy if you clone the current git repo and follow the README file its a lot clearer | ||
hoelzro | hmm | 15:13 | |
curious | |||
woolfy | Ulti: your magical words mean nothing to me, I am sorry, have no idea what "clone the current git repo" means | ||
poor_soul | hoelzro: did it work for you | ||
hoelzro | poor_soul: I haven't tried yet | ||
I'm still at work =/ | |||
poor_soul | ooh ok | ||
what do you say about the PKGBUILD | 15:14 | ||
15:14
mberends joined
|
|||
Ulti | woolfy its totally worth learning what those magic words mean if you are a programmer :) git is easily the best revision management system around. The working copy of Rakudo is available for you to download, and the instructions bundled with the code are a lot clearer than that webpage... | 15:15 | |
mberends approaches to help woolfy | |||
hoelzro | poor_soul: looks good! | ||
Ulti | woolfy: github.com/rakudo/rakudo is where the git repository is stored for the Rakudo compiler, you can download the zip file | 15:16 | |
poor_soul | well then, i'll upload them when i've cleaned them up | ||
woolfy | Ulti: Thanks, you are of course right. But I really think that a page that is called "How to get Rakudo" should explain a noob like me how to do stuff. | ||
Ulti | tbh the README in the rakudo star download is also a lot clearer than that webpage too | ||
mberends | woolfy: what operating system are you using? (sorry if I didn't look for that in the backlog) | ||
poor_soul | hoelzro: note that i didn't create them for all of the modules included in R* | 15:17 | |
woolfy | Ulti: I am already doing the make. So it is busy. | ||
mberends: I am already doing the make. So I am already doing the stuff. | |||
hoelzro | poor_soul: well, I was thinking of combining what you have with my generation script | ||
Ulti | woolfy I agree about the webpage, I just mean if you want clearer instructions they do exist and probably in what you downloaded already | ||
woolfy | I was commenting on confusing parts of the page... | ||
at the moment I am doing the "make install" | 15:18 | ||
Seems to be going into the right direction... :-) | |||
mberends | cool, that's plenty of progress :-) | ||
Ulti | woolfy are you on Windows? | ||
woolfy | No, I am on Ubuntu | ||
Ulti | you can apt-get install an olde version of Rakudo in Ubuntu | 15:19 | |
woolfy | Ulti: too late for that... :-) | ||
Ulti | heh | ||
the one you are making at the moment is a lot better | 15:20 | ||
woolfy | Hey, if Sno has Rakudo installed, I cannot stay behind, huh! | ||
poor_soul | hoelzro: aprat from the missing modules, there's the need to upload nqp-git as well, since latest rakudo-git needs more than the 2013.08 version | ||
apart* | |||
woolfy | lizmat is out of the room for some time now, and for months now she tried to convince me to install Rakudo... when she gets back, I probably have it... :-) | 15:21 | |
hoelzro | poor_soul: I have PKGBUILDs for the released versions, so hopefully that's good enough for R* | ||
poor_soul | hoelzro: are you the maintainer of rakudo and nqp on AUR? | 15:22 | |
hoelzro | no | 15:23 | |
sadly, not | |||
I maintain my own PKGBUILDs | |||
dalek | ecs: 6440475 | larry++ | S29-functions.pod: remove pasto defaults to sleep variants |
||
woolfy | "This is perl6 version 2013.08 built on parrot 5.5.0 revision 0" | ||
Ulti | win | 15:24 | |
woolfy | Pffff that was scary!!!! | ||
masak | :D | ||
tadzik | revision 0 | ||
Ulti | I find putting "2>&1 > /dev/null" on the end of every command makes it less scary :3 | 15:25 | |
mberends | woolfy: also do a 'make testable' to update the spectest files, it takes only seconds. | ||
tadzik | That's like a book/game/film title | ||
masak | tadzik: when I imagine it, it's a good one! | 15:27 | |
tadzik: well, the book is great, the film slightly less so. | 15:28 | ||
tadzik | I'll name my next game "Revision 0" | ||
masak | don't bother about the game :P | ||
poor_soul | hoelzro: i named them perl6-$lib-git | ||
pmurias | jnthn: do we have a way to convert a serialized serialization context to something humanly readable? | 15:31 | |
FROGGS[mobile] | ahh (Oktoberfestbier)++ | 15:32 | |
woolfy | mberends: "make: *** No rule to make target `testable'. Stop." | 15:33 | |
jnthn | pmurias: No, short of deserializing it :) | 15:34 | |
15:35
zakharyas left
|
|||
poor_soul | hoelzro: i've uploaded the modules, now i'm fixing nqp-git | 15:35 | |
hoelzro | sweet | ||
mberends | woolfy: hmm, you must be in the Rakudo main directory for that to work. Try "make help" to see whether testable is one of the options. | ||
woolfy | mberends: no, testable is not one of the options. | 15:37 | |
But this works: | |||
./perl6 -e 'say "Hello world"' | |||
Hello world | |||
15:37
denisboyun joined
|
|||
jnthn | woolfy: make test | 15:38 | |
poor_soul | hoelzro: nqp-git in AUR too | 15:39 | |
woolfy | jnthn: when I do that, this is the reply: | ||
"To run the Rakudo compiler tests, use 'make rakudo-test' | |||
To run the Perl 6 spectests, use 'make rakudo-spectest'" | |||
jnthn | woolfy: Oh, sorry, I ain't been watching and thought you were doing a repo build, not a star :) | 15:40 | |
mberends | woolfy: those each take quite a long time to run, so don't waste time on them now. Rather just experiment a bit with your new installation :) | 15:41 | |
jnthn | Well, can always run them in the background ;) | ||
15:41
rindolf joined
|
|||
jnthn | make rakudo-test runs the quick sanity tests :) | 15:41 | |
woolfy | mberends and jnthn: thanks... maybe later... at the moment I am just happy that I can try to join you this weekend in Frankfurt, now I have a functioning Perl 6! | 15:42 | |
jnthn just finished up his teaching gig and now has nothing to worry about but the weekend workshop :) | 15:43 | ||
[Sno] | documentation that raduko * requires gmp is mising | ||
jnthn | It...does? | ||
[Sno] | it's not mentioned in README - but without it fails linking | 15:44 | |
jnthn | Fail. It's a Parrot optional thing that we don't even use... | ||
[Sno] | paste.scsys.co.uk/268120 | 15:45 | |
well, parrot links and runs fine without | |||
so I think, it's not a simple "fail" ;) | |||
woolfy | OK, 'make rakudo-test' is done in 29 seconds. Passed without failures. Sweet. | 15:46 | |
dalek | ecs: 042527b | larry++ | S29-functions.pod: Only the basic sleep supports sleeping forever. It makes no sense ask sleep-timer to return how much time till forever, nor is there a need for sleep-till to calculate when the end of time is. |
15:47 | |
pmurias | jnthn: serialization format version 7 is used only on the jvm? | 15:48 | |
[Sno] | jnthn: neither bin/parrot nor lib/libparrot.dylib have a loader entry for gmp | ||
but parrot_config has it in ldflags o.O | 15:49 | ||
TimToady is amused that you folks assumed I really meant the Instant Inf, when it was merely a pasto :) | |||
obviously you guys still think I'm smarter than I am... | 15:50 | ||
jercos | Have you considered that you might actually *be* smarter than you are? | 15:51 | |
pmurias | jnthn: don't we depend on gmp for bignums on parrot? | 15:52 | |
masak | TimToady: no, I was speaking generally about the expectations on Inf. | ||
jnthn | pmurias: No. | ||
TimToady | I used to be smarter than I are... | ||
jnthn | pmurias: We use the libtommath in the NQP repo :) | ||
masak | TimToady: for example, Inf is exapected to work in ranges where the other endpoint is a Str. | ||
TimToady | sure, I'd still like to push things in that direction, so we don't end up with too many typed infinities | 15:53 | |
but I'm not pushing it that hard since we invented * to fill most of those roles anyway | 15:54 | ||
in a sense, sleep(*) is much more accurate than sleep(Inf) | |||
poor_soul | hm, here libgmp.so is linked in every parrot, nqp and rakudo related binary | 15:55 | |
[Sno] | jnthn: thanks for the hint - there was an inconsitence in build configuration vs. sandbox configuration (for dependent packages) in lang/parrot | 15:56 | |
as said: not a simple "Fail" ;) | |||
masak | TimToady: why does it make sense with typed undefs but not typed infinities? | ||
TimToady | what is the "sense" thing to which you refer? | 15:58 | |
timotimo | moritz: let me suggest 429 Too Many Requests (RFC 6585) | ||
The user has sent too many requests in a given amount of time. Intended for use with rate limiting schemes.[18] | |||
jnthn | TimToady: I thought it was common, but apparently not... :P | ||
jnthn decommutes :) | 15:59 | ||
TimToady just uses horse sense | |||
TimToady runs away from fires, toward water and grass | |||
16:01
FROGGS joined,
FROGGS[mobile] left
|
|||
TimToady thinks integers suporting ℵ₀ is kinda like grass stretching to the horizon... | 16:01 | ||
pmurias | jnthn: would it be sensible to have test which check the exact format things serialize to? (likely with a way to automatically update them when changing the format) | 16:03 | |
TimToady | string infinity I can be argued is not so normal | ||
pmurias | jnthn: stuff like ok(nqp::serialize(...) eq "...") | 16:04 | |
16:05
raiph joined
|
|||
FROGGS | TimToady: well, if you stream something, you might have a Buf/Str that as an unknown length, which sort of infinity unless the opposite an be proven... (I'm imagining a lazy evaluation of a stream) | 16:06 | |
dunno if that is too esoteric | |||
s/as an/has an/; s/which sort/which is short/ | 16:07 | ||
-.- | |||
dalek | kudo/nom: f7f3bb8 | (Elizabeth Mattijsen)++ | src/core/Temporal.pm: Adapt sleep() and friends to new spec |
16:09 | |
ast: e49445b | (Elizabeth Mattijsen)++ | S29-context/sleep.t: Adapt tests to adapted sleep() and friends spec |
|||
16:12
berekuk left
16:17
kaleem joined
|
|||
masak | today's mini-challenge: solve this Chinese 4th-grader's math problem. masak.org/carl/fourth-grade-math.jpg | 16:18 | |
don't report the answer on-channel. I just want to know how long it took you, in minutes. :) | |||
FROGGS | it would help if one could read the letter/words, right? | 16:19 | |
masak | the task is to figure out how big the shaded area is. the one bit of information you get is that the upper edge of the rectangle has been bisected at its half point. | ||
FROGGS: I'm assuming it says "what's the shaded area?" | |||
FROGGS | k | ||
timotimo | masak: can you explain that bisected comment? | 16:20 | |
because from the sketch i don't get that at all | |||
maybe you meant the lower right corner? | |||
oh! | |||
now i get it | |||
masak | timotimo: the line that emanates from the lower right corner bisects the upper edge of the big rectangle into 50%-50% lengths. | ||
followup challenge: write your solution as a nice Perl 6 program. | |||
followup challenge II: write a small geometry deduction system, that (given the inputs of the task) can solve this problem on its own. | 16:21 | ||
I'm guessing that the last task is a bit bigger than a mini-challenge, though... :) | |||
FROGGS .oO( jnthn solved this a minute ago by writing the ode in moarvm bytecode format ) | 16:22 | ||
masak | try to avoid spoilers on-channel for people who want to cut their teeth on the problem themselves. | ||
FROGGS | code* | ||
gah, I need a new keyboard | |||
16:23
berekuk joined
|
|||
masak | jnthn writing an ode is kinda nice, too. | 16:23 | |
pmichaud | good morning, #perl6 | ||
FROGGS | pmichaud: \o/ | ||
16:24
domidumont left
|
|||
masak | pmichaud! \o/ | 16:24 | |
moritz | \o pmichaud | 16:25 | |
masak | fwiw, it took me 9 minutes to solve the problem with the area. | ||
timotimo | i was wondering last night: how efficient does an access to a $!foo in nqp and perl6 get? does it compile down to a hash access or will it become an access like storage_slots[1]? | ||
pmichaud | thought I'd stop in and say hello. :) | ||
masak | knowing the solution, I consider that a bit slow. | ||
timotimo | hello pm! :) | ||
masak | pmichaud: hello! | ||
timotimo: the latter, I think. | 16:26 | ||
timotimo | that sounds good | ||
masak | timotimo: but it's really up to the repr, IIUC. | ||
timotimo | yeah, pretend i had been asking about P6Opaque | ||
masak | timotimo: and MI messes things up in some way, though not fatally. | ||
timotimo | well, you really just need to do it per-REPR-Metaobject-combination, no? | ||
masak | yeah, guess so,. | ||
timotimo | and i suppose monkey typing and MOP usage could make that quite a bit harder | 16:27 | |
moritz | timotimo: P6Opaque uses array lookup for attribute access | ||
timotimo | moritz: and at what time does "$!foobar" become "3"? | 16:28 | |
[Sno] | jnthn: is nqp available separately (to avoid raduko-star build it's own)? | ||
timotimo | [Sno]: yes, it is. the repository is perl6/nqp on github | ||
[Sno] | timotimo: a relase tarball | 16:29 | |
woolfy | Oh that's nice, the 'make rakudo-spectest' just done in 1735CPU. Just 7 failed. I will pass the info forward to lizmat. | ||
timotimo | oh, you mean that | ||
i think so; at least we make nqp releases | |||
[Sno] | yes, for packaging it's important to have tarballs ;) | ||
moritz | timotimo: I don't know exactly; I'd suppose at class composition time | ||
rakudo.org/downloads/nqp/ | 16:30 | ||
(for [Sno] ) | |||
timotimo | oh, that's right, because all access to $!foo must be inside methods of that class | ||
dalek | ecs: db64e30 | dagurval++ | S32-setting-library/IO.pod: Specced mkdir |
||
[Sno] | moritz: thanks | ||
timotimo | i totally forgot that | ||
moritz | timotimo: except when you use nqp::getattr :-) | ||
timotimo | hm, but can't i put $! into an anonymous method and pass it into that class? | 16:31 | |
that, too ... i wonder if that can be made more efficient in the optimizer, since it's used somewhat often in nqp itself | |||
moritz | nope, you'll get a compile-time error while compiling the method | ||
timotimo | that sounds good | ||
moritz | r: my $x = method () { $!foo } | ||
camelia | rakudo 79c0f5: OUTPUT«===SORRY!=== Error while compiling /tmp/eYhSbJxqKMCannot understand $!foo in this contextat /tmp/eYhSbJxqKM:1------> my $x = method () { $!foo⏏ }» | ||
16:32
denisboyun left
|
|||
timotimo | i suppose nqp::getattr and nqp::setattr are used somewhat often inside nqp (maybe also the core setting?) to access a superclass' attributes | 16:32 | |
and nqp::getattr and nqp::setattr probably do a costy lookup? | |||
moritz could only speculate | 16:33 | ||
16:33
xinming left
16:34
kaleem left
|
|||
timotimo is not sure how to figure that out | 16:34 | ||
16:34
xinming joined
|
|||
timotimo | i suppose i could time a thousand nqp::getattr and a thousand $! accesses | 16:34 | |
16:38
drigo left
|
|||
pmichaud | jnthn can tell you more, but I'm fairly sure that $!attr lookups are designed to be quite optimizable | 16:39 | |
16:39
raiph left
|
|||
pmichaud | and that it's designed to be not costly | 16:39 | |
the same is true to some extent for nqp::getattr and nqp::setattr. Keep in mind that nqp can optimize nqp:: ops a fair bit... they aren't necessarily atomic opcodes | 16:40 | ||
masak | yep. the caption says 阴影面积 "the shaded area" -- I don't recognize the first character. | ||
lizmat | pmichaud o/ | 16:41 | |
pmichaud | i.e., nqp::getattr($obj, SomeClass, '$!attr') can have a lot of optimization (all the way down to a slot lookup) as long as SomeClass has already been composed. | ||
16:41
sqirrel joined
|
|||
pmichaud | again, jnthn++ knows the true details. | 16:42 | |
timotimo | right; and the optimizer runs after compilation for that module is complete | 16:43 | |
so in theory it should all be composed already | |||
pmichaud | oh, I suspect the attr lookup could be optimized even before the optimizer phase runs. | ||
i.e., as part of compiling the nqp::getattr opcode | |||
dalek | ast: fa7d022 | dagurval++ | S32-io/mkdir_rmdir.t: IO::Path tests for mkdir rmdir |
||
timotimo | mhm | ||
well, i know there's a way to run a sub every time the compiler encounters such an op and i can just return a bit of qast from that | 16:44 | ||
and should have access to the context that has the world and class info and everything | |||
pmichaud | correct. | ||
alas, I have to run off again... so many things to do here. bbl | 16:45 | ||
timotimo | was nice to hear from you, pm :) | ||
pmichaud | I expect to be available more often in the near future as things are settling down here. :) | ||
masak | \o/ | 16:49 | |
16:50
kaleem joined
|
|||
FROGGS | cool | 16:53 | |
16:55
denis_boyun joined
|
|||
timotimo | if that means anything, the jvm version of getattr just calls obj.get_attribute_boxed with a string | 16:55 | |
it may very well be that the jvm jit will turn that super efficient after a bit of warm-up | |||
16:56
SamuraiJack joined
|
|||
timotimo | i always forget where i have to look to find all these things ... | 16:56 | |
so, getattr is mapped with add_core_pirop_mapping, that means it relies on parrot built-in functionality? | 16:57 | ||
hm. | 16:58 | ||
16:59
bluescreen10 joined
17:00
domidumont joined,
dakkar left
|
|||
arnsholt | timotimo: It means that it results in a call to a single PIR op, which is probably implemented in src/vm/parrot/ops/nqp.ops | 17:00 | |
timotimo | i can't find the getattribute implementation there | 17:01 | |
but it slightly worries me that it gets passed a string | |||
17:01
raiph joined
|
|||
arnsholt | Hm? Attribute lookup is essentially a string => thing map lookup | 17:02 | |
TimToady | which can happen at compile time, hopefully | ||
timotimo | it could be faster if the string => thing map lookup could be turned into just a static index into the repr's slots at compile time | ||
if that's actually the way the repr is built | 17:03 | ||
TimToady | otherwise we really have no hope of ever running faster than P5 | ||
timotimo | if the repr contains an actual hash map for string to thing, that wouldn't help much (thinking primarily of wasted space here), but above it said there was a struct-like thing underlying the p6opaque | ||
arnsholt | ATM that's what we do (from memory, but pretty sure) | 17:04 | |
timotimo | "that" is what exactly? | ||
arnsholt | The REPR computes the offsets for each attribute, which is looked up when we get an attribute | ||
17:05
spider-mario joined
|
|||
arnsholt | Oh, but there's the hint functionality (looked up the Parrot code now) | 17:05 | |
timotimo | oh, right | ||
perhaps at compile time we could ask the repr for the offset and provide that as the "hint" everywhere | 17:06 | ||
i'll be afk for a bit first, though | |||
17:06
kaleem left
|
|||
arnsholt | Yeah, I think there's something like that going on as well, but I'm not familiar with those bits | 17:06 | |
pmurias | to do that we would need to know the exact class/REPR of an object | 17:07 | |
FROGGS | TimToady: | 17:10 | |
TimToady: you actually think we *can* run faster as P5? | |||
17:11
lizmat left
|
|||
FROGGS | because, Win95 runs faster as Windows 7 on my box, even if it has no USB support... | 17:11 | |
I would be happy if P5 would just be twice as fast as rakudo | 17:13 | ||
17:19
berekuk left,
lizmat joined
|
|||
pmurias | I would be really disappointed if we didn't manage to beat P5 in speed at some point | 17:20 | |
lizmat | also: if we define speed in wallclock terms, Perl6 will most definitely beat P5 in the long run | 17:21 | |
it will need more cores than just the one that P5 will be using | |||
17:22
iSlug joined
17:23
jnap left
|
|||
pmurias | are there any real reasons for Perl 6 to run slower than Perl 5? | 17:24 | |
TimToady | P6 is also designed to beat P5 on a single core, when the optimizer gets good enough to recognize where P6's flexibility can be viewed as damage and routed around :) | 17:25 | |
the specs make a lot of guarantees about when the optimizer can assume things aren't going to change, but the compiler does not yet take much advantage of these guarantees | |||
that is not even taking into consideration the possibility of JITs and such | 17:26 | ||
nor is it taking into account the availability of native types | |||
well, I guess P5 uses native int already, so P6's Int could be viewed as a small pessimization | 17:27 | ||
17:27
ajr joined,
ajr is now known as Guest74969
|
|||
ribasushi | wishitem: please make function calls cheap again in p6 | 17:27 | |
TimToady | likewise the preference for Rat over Num | 17:28 | |
ribasushi | the impact of entersub in p5 is insane :( | ||
TimToady | indeed | ||
part of the motivation for multi-dispatch is to do the type checking first, so the routine doesn't have to check again at binding, but we don't do much with that optimization yet either, afaik | 17:29 | ||
17:29
berekuk joined
|
|||
TimToady | so it'll be a bit of apples/oranges comparison, since P5 does all the arg unpacking explicitly | 17:31 | |
masak | wishitem: a resource that collects together various optimizations we could and eventually will do in Perl 6, along with concrete examples and references to other similar optimizations on e.g. the JVM or in v8. | ||
lizmat | is it really the moment in time already to talk about optimizations ? | 17:32 | |
masak .oO( given enough inlining, all subs are shallow ) :P | |||
ribasushi | TimToady: well, when the function sigs land in p5, an argument-less function becomes oranges-oranges comparison | ||
masak | lizmat: *talk* about them, yes. | ||
17:32
jnap joined
|
|||
TimToady | ribasushi: nodnod, I'm looking forward to it :) | 17:32 | |
lizmat: the specs grep out to 55 mentions of "optimiz" | 17:33 | ||
lizmat | and 5 of "optimized away" :-) | 17:34 | |
TimToady | and one mention of optimis, plus one optimal :) | ||
timotimo | lizmat: i'm kind of itching to get a bit of optimization in | ||
ribasushi | masak: inlining is for FP-wimps ;) | 17:35 | |
TimToady | "optimalization" is a word that needs to be optimized :) | ||
timotimo | in a perfect universe, i'd of course be doing something entirely different, but my lack of skill and motivation in other areas kind of leaves me with not terribly many options than to do what interests me :P | ||
ribasushi | masak: but really I do not look forward to writing stuff like this ever again: github.com/dbsrgits/dbix-class/blo...als.t#L603 | ||
dalek | ecs: cc24a5d | (Elizabeth Mattijsen)++ | S02-bits.pod: Optimize spello away |
17:36 | |
ribasushi | so cheap-funcalls please ;) | ||
timotimo | .o(for example, i could shove 6model into parrot-core, build a jit-compiler for parrot, create a perl6-on-cranes or something, ...) | ||
17:36
raiph left
|
|||
tadzik | I'm curious about etymology of "optimalization". In Polish, we say "optymalizacja" | 17:37 | |
timotimo | "torture test" indeed | ||
17:37
iSlug left
|
|||
lizmat | tadzik: in Dutch "optimalisatie" | 17:37 | |
[Coke] waves to pmichaud in backscroll. | 17:38 | ||
tadzik is puzzled with the silence regarding news.perlfoundation.org/2013/07/hag...ation.html | 17:42 | ||
17:43
berekuk left
|
|||
jnap | yeah, me too | 17:43 | |
17:44
berekuk joined
|
|||
lizmat | rest assured, no news is good news | 17:45 | |
17:48
raiph joined
|
|||
TimToady | on the math problem, I didn't time it exactly, but it was about 45 seconds, subjective. | 17:50 | |
maybe I'm still smarter than I am | |||
17:52
iSlug joined
17:55
nebuchadnezzar left
|
|||
pmurias | TimToady: isn't perl6-on-cranes a web framework? | 17:57 | |
FROGGS | timotimo: you are famous now :o) de.webfail.com/9366caf3a37 | ||
17:58
slava left
|
|||
tadzik | he he | 17:58 | |
lizmat | $ ack KeyHash src/core | 18:00 | |
src/core/stubs.pm | |||
10:my class KeyHash is Iterable does Associative { } | |||
that's rather disappointing for something that is supposed to be a role | |||
18:01
daxim left
|
|||
timotimo | FROGGS: cool | 18:03 | |
it's lovely how they take the pictures from thingsfittingperfectlyintothings and not credit that tumblr, or the people that that tumblr credited... | |||
timotimo bbl | |||
lizmat | hhmmm… how is one supposed to specify the default value of a hash that is an attribute ? | 18:04 | |
r: class A { has %.a is default(0) } | 18:05 | ||
camelia | rakudo f7f3bb: OUTPUT«===SORRY!=== Error while compiling /tmp/4H8Yx473ybCan't use unknown trait 'is default' in an attribute declaration.at /tmp/4H8Yx473yb:1------>  expecting any of: rw readonly box_target» | ||
lizmat | is this a NYI ? | ||
18:05
nebuchadnezzar joined
|
|||
FROGGS | r: class A { has %.a is readonly } | 18:07 | |
camelia | rakudo f7f3bb: ( no output ) | ||
FROGGS | hmmmm | 18:08 | |
a bit weird | |||
lizmat | I guess for after the RaNIW | ||
FROGGS | I guess this happens in Perl6::Actions in scope_delarator | 18:09 | |
18:09
btyler left
|
|||
lizmat has some work to do in that area for variable traits anyway | 18:11 | ||
diakopter | tadzik: lololol "its author is an ..." | 18:12 | |
tadzik | diakopter: I, above all people, am allowed to say this :P | 18:14 | |
pmurias | jnthn: potential craziness nqp-parrot's version 6 of the serialization format is different from nqp-jvm one (hllOwner thing) | 18:17 | |
jnthn: but it seems it won't be a problem as nqp only uses version 7 currently | |||
18:18
dmol left
18:19
btyler joined
|
|||
dalek | ast: 41ee5af | dagurval++ | S03-operators/buf.t: unfudge rakudo |
18:19 | |
18:20
rindolf left
18:28
nebuchadnezzar left,
teslos joined
18:31
PZt left
18:36
bluescreen10 left
18:39
iSlug left
|
|||
masak | so, Rakudo release next week. | 18:40 | |
how close are we to running ecosystem things on the JVM? | |||
(I'm sorry, I'm out of touch, and someone else might already have tried various things, saving me the trouble.) | 18:41 | ||
lizmat | :q | ||
hugme hugs lizmat, good vi(m) user! | |||
lizmat | hehe | ||
t/spec/S03-operators/set.rakudo.parrot .......................... Dubious, test returned 1 (wstat 256, 0x100) | 18:42 | ||
Failed 244/296 subtests # just verified that making Set Iterable makes a lot of tests fail | |||
masak | why would we want Set to be Iterable...? | 18:43 | |
followup question: would a concerted effort to make the ecosystem pass on the JVM likely get us there in a week? | 18:44 | ||
arnsholt | masak: I don't think I'll be able to wrap up the NativeCall things in a week | ||
masak | arnsholt: OK. | ||
arnsholt | I'm making good progress, but there's a gnarly blocker which is preventing NativeCall.pm6 itself from getting off the ground | ||
masak | I see. | 18:45 | |
I wish I could help, but I probably can't. :/ | 18:46 | ||
18:46
Mouq joined,
nebuchadnezzar joined
|
|||
arnsholt | I've some thoughts gathered, but I need to hammer them out a bit more. Then check with jnthn and make sure it's actually a good idea | 18:47 | |
18:48
sqirrel left
18:50
zwut00 joined
|
|||
lizmat | masak: I have no idea, but the original Set code contained "is Iterable" and the spectests contain tests for the .iterator method | 18:51 | |
masak: which s supplied by Iterable | |||
18:52
bluescreen10 joined
|
|||
masak | lizmat: what do those tests, by and large, try to accomplish? | 18:52 | |
rn: say Hash ~~ Iterable | 18:53 | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Undeclared name: 'Iterable' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1502 (die @ 5)  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 36)  at /ho… | ||
..rakudo f7f3bb: OUTPUT«True» | |||
masak | hm, if Hash is Iterable, I guess Set should probably be, too... :/ | ||
18:53
poor_soul left
18:54
dmol joined
|
|||
lizmat | masak: is $s.iterator.grep(Str).elems, 3, ".iterator yields three Strs"; | 18:54 | |
the spec says that Iterable is a *role* | 18:55 | ||
masak | makes sense. | ||
18:55
SmokeMachine joined
|
|||
masak | r: my $s = set "a", "b", "c"; say $s.elems; say $s.grep(Str).elems | 18:55 | |
camelia | rakudo f7f3bb: OUTPUT«30» | ||
masak | hrm. | ||
r: my $s = set "a", "b", "c"; say $s.elems; say $s.list.grep(Str).elems | 18:56 | ||
camelia | rakudo f7f3bb: OUTPUT«33» | ||
TimToady | r: my $s = set "a", "b", "c"; say $s.elems; say @$s.grep(Str).elems | ||
camelia | rakudo f7f3bb: OUTPUT«33» | ||
TimToady | we want sets to behave more like items in list context, so it can't do whatever it is that decides list interpolation semantics | 18:58 | |
masak | fariy 'nuff. | ||
air* | |||
TimToady | already put it into the RI Clogs | 18:59 | |
colomon prefers MI Clogs | 19:00 | ||
pmurias | RI Clogs? | ||
lizmat | ok, I'm lost now: does this mean it is ok for Sets/Bags not to be Iterable, or that they should be Iterable | 19:01 | |
and therefore I should try to fix the problems caused by making it Iterable ? | |||
[Sno] | I get a core first time building raduko-star: paste.scsys.co.uk/268143 | 19:02 | |
redo the make succeeds | |||
but when "make clean" and redo, it cores again | |||
lizmat | [Sno]: please report as bug to [email@hidden.address] | 19:04 | |
19:04
bluescreen10 left
|
|||
[Sno] | well, I don't know whether it's a bug or not, but will do | 19:04 | |
19:06
colomon left,
alester joined
19:07
PZt joined
|
|||
masak | lizmat: pending further information, I'm leaning towards that Set should be Iterable. | 19:10 | |
lizmat: because Hash is. | |||
19:10
denis_boyun left
|
|||
masak | lizmat: "further information" includes the realization, for example, that it being Iterable is what makes it flatten in list context, and that's why all those tests break. | 19:11 | |
in which case I would change my mind :) | |||
lizmat | that *is* what makes the tests break | ||
doing some code cleanup / reorg now, will come back to it later | 19:13 | ||
19:13
SamuraiJack left
19:14
colomon joined
|
|||
masak | lizmat: if being Iterable causes flattening, then Set shouldn't be Iterable, because (as TimToady said), Set shouldn't flatten by default. | 19:17 | |
dalek | kudo/nom: 1980a70 | (Elizabeth Mattijsen)++ | src/core/stubs.pm: Remove unnecessary KeyHash stub |
||
masak | lizmat: it's highly likely that those tests were written at a time when we thought Sets were more flattenable than our current understanding. | 19:18 | |
lizmat | but maybe we can still have an iterator without it being Iterable ? | ||
masak | maybe. | 19:19 | |
if that passes all the tests, then sure. | |||
but it feels... suspect. | |||
lizmat | it is suspect, but so is parsing of adverbs :-) | 19:20 | |
masak | heh. :) | ||
parsing of adverbs falls under "torment the implementors to serve the users". | |||
not sure the same can be said for Set.iterator | 19:21 | ||
moritz | \o | 19:22 | |
masak | o/ | ||
19:22
domidumont left
19:23
thou left
19:32
teslos_ joined
|
|||
dalek | rlito: 945df32 | (Flavio S. Glock)++ | TODO-perlito5: Perlito5 - TODO update |
19:33 | |
19:35
teslos left,
teslos_ is now known as teslos
|
|||
dalek | rlito: c1fe8eb | (Flavio S. Glock)++ | src5/lib/Perlito5/Exporter.pm: Perlito5 - add minimal Exporter.pm; placeholder |
19:37 | |
19:38
FROGGS left,
FROGGS joined
19:49
EvanTeitelman joined
19:52
FROGGS left
20:05
FROGGS joined
20:10
kbaker left
20:21
Guest74969 is now known as ajr_,
FROGGS left
20:22
iSlug joined
20:23
stevan_ left
|
|||
dalek | ast: 7553f76 | (Elizabeth Mattijsen)++ | S02-types/ (2 files): Skip tests for KeyHash for now |
20:23 | |
20:26
bluescreen10 joined
20:28
dmol left
20:31
jnap left,
tgt joined
20:32
kaare_ left
20:34
btyler_ joined
20:36
btyler left,
tgt left
20:37
tgt joined,
tgt left
|
|||
dalek | kudo/nom: 69c3cce | (Elizabeth Mattijsen)++ | src/core/ (4 files): Move at_key/delete to from role to class (where they should be) |
20:39 | |
lizmat | calls it a day | 20:40 | |
gnight #perl6! | |||
jnthn | 'night, lizmat | ||
colomon | \o | 20:43 | |
20:43
kbaker joined
20:56
EvanTeitelman left
21:03
lowpro30 left,
PerlJam joined
21:05
thou joined,
skids left
21:09
denis_boyun joined
21:10
EvanTeitelman joined
21:12
dmol joined
21:13
iSlug left
21:19
dmol left
21:22
donaldh joined
21:23
jnap joined,
stevan_ joined,
kst`` joined
21:25
PacoAir left,
kst` left
21:26
denis_boyun left
21:28
Mouq left
21:29
krokite joined
21:33
spider-mario left
21:35
dmol joined
21:47
btyler joined
21:48
btyler_ left
21:53
locsmif joined
22:00
zwut00 left
|
|||
pmurias | jnthn: why is 0 of the string heap always null? | 22:07 | |
diakopter | it's not; it's off-by-one intentionally | ||
geekosaur | .oO { someone's been doing too much BSD } | ||
jnthn | pmurias: Forget the exact reason, but we need to represent the null string somehow... | 22:08 | |
pmurias: Think it turned out easiest to just do it that way. | |||
pmurias: iirc, I special-cased it to always be in 0 as it messed up the seen hash... | 22:09 | ||
22:09
dmol left
|
|||
pmurias | I'll to it that way to for consistency | 22:09 | |
s/to/too | 22:10 | ||
22:10
BenGoldberg joined
|
|||
jnthn | You'll too it that way? ;) | 22:10 | |
22:10
dmol joined
|
|||
jnthn | oh, :2nd/to/ :) | 22:10 | |
22:12
dmol left
|
|||
pmurias | typing on irc and translating a ton of boring serialization code doesn't mix together well ;) | 22:12 | |
diakopter | tell me about it | 22:13 | |
jnthn | tell *me* about it - I had to write the original! :P | 22:14 | |
Maybe I shoulda put random stories about dugongs in the comments to make it more interesting. | |||
diakopter | *titter* | ||
22:15
bluescreen10 left
22:16
tadzik left,
tadzik joined
|
|||
masak | "The tale of the dugong and the serialization." | 22:17 | |
very popular with the 4yo crowd. | |||
diakopter looks up what a dugong is | |||
jnthn | "A dugong swam past. After 2 bytes of padding, another dugong followed." | ||
masak | diakopter: www.weebls-stuff.com/songs/dugong/ | 22:18 | |
jnthn | diakopter: www.weebls-stuff.com/songs/dugong/ | ||
darn, masak won :P | |||
masak | :P | 22:19 | |
jnthn: one of us has spent far too much time in the other's company :P | |||
colomon | masak++ # brightening up a five-year-old's dinnertime | ||
masak | :D | ||
jnthn | tbh, I wouldn't have thought of stealing a chart from xbox magazine to compare sea creatures.. | 22:20 | |
colomon | does it ever stop? | ||
masak | colomon: also play www.weebls-stuff.com/songs/kenya/ for good measure. | ||
jnthn | no :) | ||
Though it may go out of sync :) | |||
masak | colomon: no, it loops. | ||
colomon | cruel | ||
jnthn | Don't forget the one about cucumber farming... www.weebls-stuff.com/songs/cucumbers/ | 22:21 | |
masak | so many quality videos. | 22:22 | |
I would also like to recommend the one about the mango: www.weebls-stuff.com/songs/mango/ | |||
locsmif | hot tamale! | 22:23 | |
huf | somehow reminds me of this www.youtube.com/watch?v=J8MRVGPGfWg | 22:24 | |
22:25
BenGoldberg left
22:30
berekuk left
|
|||
donaldh | jnthn: I'm back looking at ModuleLoader search_path which needs to produce absolute paths for the current $*CWD. | 22:32 | |
jnthn: haven't managed to figure out how to lookup IO::Spec.rel2abs . | |||
22:32
Mouq joined
22:33
skids joined,
ajr_ left
|
|||
jnthn | donaldh: Where'd you try looking? It comes from the setting... | 22:33 | |
donaldh | jnthn: would it make sense for the setting to provide a sub to ModuleLoader, for ModuleLoader to call to get a search path? | ||
jnthn | donaldh: If you're in the module loader, then you have %settings_loaded handy...you can locate it via that... | 22:34 | |
donaldh: But I'm wondering if this is a clean way to do it... | |||
donaldh | jnthn: I guess I don't know how to introspect what I can get from %settings_loaded | ||
jnthn | Something like my $IO := nqp::ctxlexpad(%settings_loaded<CORE>)<IO>; | 22:35 | |
donaldh | Could the setting register a sub that provides a search_path ? | ||
22:35
berekuk joined
|
|||
jnthn | Then $IO.WHO<Spec> or so... | 22:35 | |
Yes, it could do that and it's probably cleaner. | |||
If you put a method to register it into ModuleLoader | 22:36 | ||
Then you can call it like | |||
22:36
takesako left
|
|||
jnthn | nqp::gethllsym('perl6', 'ModuleLoader').register_absolutifier(sub ($path) { ... }); | 22:36 | |
Mouq | r: my my $mine | 22:37 | |
camelia | rakudo 69c3cc: OUTPUT«===SORRY!===Type 'my' is not declaredat /tmp/eoLSv_z_a3:1------> my my⏏ $mineMalformed myat /tmp/eoLSv_z_a3:1------> my ⏏my $mine expecting any of: scoped declarator» | ||
donaldh | okay, I'll try that approach. | ||
thanks for pointing out nqp::ctxlexpad as well. | 22:38 | ||
jnthn | r: class my { }; my my $mine | ||
camelia | rakudo 69c3cc: ( no output ) | ||
donaldh | r: class my { }; my my $my; | 22:39 | |
camelia | rakudo 69c3cc: ( no output ) | ||
Mouq | r: my state $shrug | ||
camelia | rakudo 69c3cc: OUTPUT«===SORRY!===Type 'state' is not declaredat /tmp/iPEKyWMsrX:1------> my state⏏ $shrugMalformed myat /tmp/iPEKyWMsrX:1------> my ⏏state $shrug expecting any of: scoped declarator»… | ||
22:39
takesako joined
|
|||
donaldh | r: multi sub infix:<my>($a, $b) { $a + $b }; my $my = 1; $my = $my my $my | 22:46 | |
camelia | rakudo 69c3cc: ( no output ) | ||
colomon | r: multi sub infix:<my>($a, $b) { $a + $b }; my $my = 1; $my = $my my $my; say $my | 22:48 | |
camelia | rakudo 69c3cc: OUTPUT«2» | ||
masak | 'night, #perl6 | ||
22:51
stevan_ left
22:57
census joined
|
|||
dalek | rl6-roast-data: 3c95946 | coke++ | / (5 files): today (automated commit) |
23:01 | |
23:03
jnap left
|
|||
jnthn | sleep & | 23:05 | |
23:06
berekuk left
23:07
pupoque left
|
|||
dalek | gs.hs: 370c8c2 | coke++ | t/spectest.data: This test is now out of reach. |
23:08 | |
23:12
jnap joined
23:15
btyler left,
donaldh left
23:17
schen joined
23:18
schen left
23:26
teslos left
23:30
BenGoldberg joined,
itz left
23:32
berekuk joined
23:33
itz joined
|
|||
dalek | ast: 7d57c4d | coke++ | S (2 files): rakudo.jvm fudge |
23:34 | |
23:35
berekuk left
23:36
thou left,
btyler joined
|
|||
BenGoldberg | yoleaux: karmatop | 23:39 | |
Err, oops | |||
preflex: karmatop | 23:40 | ||
preflex | c: 202122; g: 9871; ##c: 7874; c/c: 7113; moritz: 4968; whiteknight: 4931; bacek: 4624; notepad: 4305; jnthn: 4245; #c: 3767 | ||
BenGoldberg | If perl were named perl++ then it would have lots of good karma! :) | 23:41 | |
23:42
bearded_clam joined
23:44
btyler left
23:45
bearded_clam left
23:50
Vlavv left
|