»ö« 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. |
|||
00:00
tokuhirom left,
pmichaud joined,
[Coke] joined,
PerlJam joined
00:04
Juerd joined
00:06
tadzik joined
00:09
tokuhirom joined
|
|||
ingy | tadzik: is HTTP::Easy psgi? | 00:12 | |
full disclosure... I'm working on ActiveState on Stackato which is a downloadable PaaS | 00:13 | ||
you can run your own polyglot app hosting env and push apps to it etc | 00:14 | ||
like dotcloud but you host it (or pick any place to host it) | 00:15 | ||
I'd like to think about adding p6 to our 8 or so languages | |||
I think having this work for Perl 6 would be a huge shot in the arm for Perl 6 evangelism. | 00:18 | ||
00:18
qu1j0t3 joined
|
|||
qu1j0t3 | hello chan. somebody might want to add a Perl 6 status update to this Quora topic. www.quora.com/What-is-the-future-of...rogramming | 00:18 | |
skids | perl6: class A { has $.a = 2; }; class B { has A $.aa handles A = A.new; has $.b; }; my B $f .= new(); $f.a.say; | 00:25 | |
p6eval | rakudo 4e5d8a: OUTPUT«2» | ||
..niecza v13-166-gcdf48b2: OUTPUT«===SORRY!===Action method trait_mod:handles not yet implemented at /tmp/ICrrfTgnIV line 1:------> = 2; }; class B { has A $.aa handles A ⏏= A.new; has $.b; }; my B $f .= new(); $Trait 0 not available on variables… | |||
..pugs b927740: OUTPUT«*** No such method in class B: "&a" at /tmp/QWKGE4oCrW line 1, column 97-105» | |||
skids | rakudo: class A { has $.a = 2; }; class B { has A $.aa handles A; has $.b; }; my B $f .= new(); $f.aa .= new(); $f.a.say; | 00:26 | |
p6eval | rakudo 4e5d8a: OUTPUT«Cannot assign to a readonly variable or a value in method dispatch:<.=> at src/gen/CORE.setting:788 in block <anon> at /tmp/XsMB2hHmP5:1 in <anon> at /tmp/XsMB2hHmP5:1» | ||
00:28
molaf joined
|
|||
raiph | ingy: nice! | 00:30 | |
colomon | ingy: please keep bringing this up. If needed we can write something to get the job done. | 00:32 | |
colomon is ignorant of the current state of p6 web stuff, but is very willing to learn and code. | |||
sorear | sounds like getting bailador to run on niecza should be a high priority of mie | 00:33 | |
00:33
qu1j0t3 left
|
|||
ingy | stackato is built over CloudFoundry. dukeleto is the "ingy" of that project. | 00:34 | |
so this would be good for parrot as well. | 00:35 | ||
dukeleto: make sense? | |||
CF is on github. | |||
also someone recently added mono support iirc | 00:36 | ||
so it could support niecza | |||
colomon | woot! | 00:37 | |
00:37
tokuhirom left
|
|||
ingy | Stackato is an "enterprise ready" paas built over VMWare's open source CloudFoundry paas. If we targeted p6 as a runtime for CF, it would also just work on Stackato, and thus be available to ActiveState's corporate customers. | 00:42 | |
sorear | can you explain paas? | 00:43 | |
ingy | I personally convinced ActiveState to make Stackato have a free license for single node non-commercial use. So people can download and use it free forever... | ||
sorear: sure | |||
EC2 and Linode etc are IaaS | |||
DotCloud and Heroku (and CF and Stackato) are PaaS | 00:44 | ||
PaaS is essentially a VM that is ready to run applications | |||
sorear | I have not personally used *any* of those examples. | ||
ingy | it has all the components preconfigured | 00:45 | |
OS, language runtime, database, services, etc | |||
so you just 'push' an app and it's running | 00:46 | ||
you control every aspect of the VM from a console... | |||
although we provide ssh access too | |||
most PaaS providers provision a VM for you on their own IaaS configuration | 00:47 | ||
sorear | what's IaaS? | ||
ingy | Infrastructure as a Service | ||
virtual hardware | 00:48 | ||
rackspace, linode, amazon ec2 | |||
etc | |||
paas is Platform aaS | |||
kshannon | sorear: irclog.perlgeek.de/perl6/2012-01-08#i_4952481 "this has been... rectified" | 00:49 | |
Does this mean p6eval should have my change? | |||
sorear | kshannon: yes | ||
ingy | this is the future of running web apps... | ||
kshannon | Hmm.... It doesn't seem to work :( | ||
nom: github.com/perl6/roast/blob/master...als/args.t | |||
p6eval | nom 4e5d8a: OUTPUT«===SORRY!===Confused at line 1, near "gi"» | ||
ingy | Stackato and CF are called "Private PaaS" | 00:50 | |
sorear | evalbot control restart | ||
00:50
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
ingy | meaning we don't care where you run it | 00:50 | |
which is why I joined AS | |||
because cloud computing is a big push towards centralization of power | 00:51 | ||
which is the end of a free internet as we know it | |||
imho... | |||
00:52
kmwallio joined
|
|||
ingy | offering cloud ease of use without giving away all your power is a win/win | 00:52 | |
having perl6 apps that deploy in 5 seconds is just the icing on the cake ;) | 00:53 | ||
00:55
Juerd_ joined,
Juerd_ left
|
|||
sorear | o/ Juerd | 00:56 | |
Juerd | Hi | ||
(Confused yet? I am...) | |||
ingy | Juerd: re? | 00:58 | |
Juerd | mi fa so la ti do! | 01:00 | |
ingy | :) | ||
cognominal | s/ti/si/ | ||
Juerd | tomato, tomato. | ||
IPA would have worked better but I don't know IPA. Or SAMPA. | 01:01 | ||
cognominal | you say tomato i say tomato :) | ||
Juerd | I tend to say tomaat. | 01:02 | |
That's kind of the norm, here in .nl | |||
benabik | I prefer Stouts to IPAs. | ||
01:12
twirp joined,
twirp left
01:13
twirp joined
01:15
kmwallio left
01:20
ksi left
|
|||
flussence just read the CORE2 stuff in backlog... looks promising | 01:31 | ||
01:32
wolfman2000 joined
|
|||
sorear | o/ flussence | 01:33 | |
flussence | I'm more of the opinion that there should be a good autoloader system for heavy classes, but I'll take an improvement that doesn't kill my netbook. also hi :) | 01:34 | |
01:34
twirp left
01:36
kmwallio joined
01:37
ggoebel joined
01:41
ggoebel left
01:47
ggoebel joined
|
|||
dalek | ast: f951a3e | coke++ | integration/advent2009-day09.t: niecza fudge |
02:30 | |
ecza: e960439 | coke++ | t/spectest.data: run more tests |
|||
02:31
tokuhirom joined
02:34
am0c joined
02:36
tokuhirom left
|
|||
dalek | ecza: 25c122b | sorear++ | / (2 files): Add a 'pure' trait, mark a bunch of setting functions |
02:38 | |
ecza: eba5eb3 | sorear++ | / (9 files): Take a first crack at implementing constant folding Using the 'pure' trait on functions, a function call with only immutable constant arguments can be replaced with its result value. For now only works on true functions; some pieces of function-like syntax that are implemented differently don't fold. |
|||
sorear | I spent most of today debugging eba5eb3 ... that fought me a lot more than roles have :| | ||
skids | What are the semantics of "class A is rw {...}"? | 02:39 | |
sorear | marks all attributes rw | 02:43 | |
niecza: 5**5**5 | |||
p6eval | niecza v13-166-gcdf48b2: ( no output ) | ||
sorear | niecza: for ^1000 { 5**5**5 } | ||
p6eval | niecza v13-166-gcdf48b2: ( no output ) | ||
sorear | niecza: 5**5**6 | ||
p6eval | niecza v13-166-gcdf48b2: ( no output ) | ||
sorear | niecza: for ^1000 { 5**5**6 } | ||
p6eval | niecza v13-166-gcdf48b2: ( no output ) | ||
sorear | niecza: 5**5**7 | ||
p6eval | niecza v13-166-gcdf48b2: ( no output ) | ||
sorear | niecza: 5**5**8 | ||
p6eval | niecza v13-166-gcdf48b2: ( no output ) | ||
sorear | niecza: for ^1000 { 5**5**8 } | 02:44 | |
p6eval | niecza v13-166-gcdf48b2: OUTPUT«(timeout)» | 02:45 | |
sorear | evalbot rebuild niecza | ||
p6eval | OK (started asynchronously) | ||
dalek | Rebuild of niecza complete. | 02:46 | |
sorear | niecza: for ^1000 { 5**5**8 } | ||
p6eval | niecza v13-169-geba5eb3: ( no output ) | ||
sorear | look how much faster it is!!! | ||
benabik | Fix for exponentiation? | 02:47 | |
[Coke] | sorear: in backscroll I cannot tell the difference. ;) | ||
colomon | sorear++ | 02:48 | |
02:48
HarryS joined
|
|||
[Coke] | ah. I lie, I can, if I read the last 2. nifty. | 02:48 | |
perl6: List.new(4,5,6).say | 02:50 | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«Unhandled exception: Excess arguments to List.new, used 1 of 4 positionals at /home/p6eval/niecza/lib/CORE.setting line 0 (List.new @ 1)  at /tmp/jy0xOJzb6k line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2842 (ANON @ 3)  at /h… | ||
..rakudo 4e5d8a: OUTPUT«4 5 6» | |||
..pugs b927740: OUTPUT«*** Must only use named arguments to new() constructor Be sure to use bareword keys. at /tmp/I2bec2OfGY line 1, column 1 - line 2, column 1» | |||
[Coke] | is rakudo wrong here? | ||
colomon | it's probably not spec'd | 02:52 | |
perl6: list(4, 5, 6).say | |||
p6eval | rakudo 4e5d8a, niecza v13-169-geba5eb3: OUTPUT«4 5 6» | ||
..pugs b927740: OUTPUT«456» | |||
felher | will rakudo/nom compile with 400MB free RAM? | 02:55 | |
sorear | Maybe, if you have 2 gigs of fast swap and a lot of patience. | 02:56 | |
02:56
jeffreykegler joined
|
|||
felher | sorear: :D. k, thnx :) | 02:56 | |
03:00
lutok joined
03:03
jeffreykegler left
03:04
am0c_ joined
03:06
am0c left,
am0c_ is now known as am0c,
am0c is now known as Guest71677
03:07
Guest71677 is now known as am0c^
03:08
lutok left
03:28
kmwallio left
03:33
thou_ joined
|
|||
[Coke] | i wonder if we should just always re-fudge when running t/spec/fudge | 03:36 | |
(rather than relying at all on timestamps.) | |||
03:38
Psyche^ joined
03:39
Psyche^ is now known as Patterner
|
|||
sorear | [Coke]: +1... the fudger is very fast compared to all current implementations | 03:43 | |
03:50
orafu joined
|
|||
dalek | ast: 2372496 | coke++ | fudge: Always attempt to refudge. Handles cases when arguments change or version control mucks with timestamps. |
03:57 | |
[Coke] | ah. it was also impacting autounfudge. whee. | 03:59 | |
kshannon | coke++ | 04:02 | |
04:12
raiph left
04:19
dku joined
04:37
odoacre joined
05:04
satyavvd joined
05:08
cognominal joined
05:13
kaleem joined
05:15
mkramer joined
05:20
am0c^ left
|
|||
moritz | phenny: tell jnthn about gist.github.com/1581336 (nqp qbootstrap test output with ICU) | 05:40 | |
phenny | moritz: I'll pass that on when jnthn is around. | ||
kshannon | I've got a NQP 'int' from nqp::getattr_i($c, NQPCursorRole, '$!pos') and I want to put it in a string for tracing but everything I'm trying is giving: get_string() not implemented in class 'int' | 05:44 | |
dalek | ast: 42626ba | coke++ | S (14 files): niecza (auto)unfudge |
05:45 | |
moritz | kshannon: is that in NQP or in Rakudo? | 05:46 | |
in rakudo, I'd nqp::p6box_s() the thing | 05:47 | ||
in NQP; I'd try pir::set__SI() around it | |||
05:47
kaleem left
|
|||
kshannon | NQP qbootstrap debugging | 05:48 | |
05:50
benabik joined
06:05
tokuhirom joined
06:09
kaleem joined,
tokuhirom left
|
|||
[Coke] | std: regex b {}; | 06:11 | |
p6eval | std dc62e1d: OUTPUT«===SORRY!===Null pattern not allowed at /tmp/M47szwRhuk line 1:------> regex b {⏏};Other potential difficulties: 'regex' declaration outside of grammar at /tmp/M47szwRhuk line 1:------> regex b ⏏{};Parse … | ||
[Coke] | std: regex b {'a'}; | ||
p6eval | std dc62e1d: OUTPUT«Potential difficulties: 'regex' declaration outside of grammar at /tmp/LIFCIeDulm line 1:------> regex b ⏏{'a'};ok 00:01 120m» | ||
[Coke] | sorear: there are a few tests we can't run they have a regex/token outside of a grammar. | 06:12 | |
ah, misread the error, looks like it's the same as std. | 06:14 | ||
(so it's not an error and there's something else going on.) | |||
06:15
baest_ joined
|
|||
sorear | niecza: regex b {'a'} | 06:18 | |
p6eval | niecza v13-169-geba5eb3: OUTPUT«===SORRY!===Methods must be used in some kind of package at /tmp/cT1obwdQ0z line 1:------> regex b ⏏{'a'}Potential difficulties: 'regex' declaration outside of grammar at /tmp/cT1obwdQ0z line 1:------> reg… | ||
sorear | [Coke]: My understanding of the current spec is that a regex outside of a grammar must be marked "my" | ||
it's possible we'll rule this is automatic | |||
06:19
dukeleto joined
|
|||
[Coke] | ah. | 06:25 | |
06:26
thou_ left,
zby_home_ joined
06:27
nornagest joined
06:31
Woodi joined,
koban joined
06:32
koban left
06:36
DrEeevil joined
06:38
y3llow_ joined
|
|||
moritz | I thought the idea was to invent some magic handwaving that mixes regexes into the current slang (?), and thus makes regex a { foo }; 'a' ~~ /<a>/ work | 06:38 | |
sorear | moritz: that can be accomplished just by having regex a default to my | 06:41 | |
moritz | sorear: but /<a>/ doesn't look for a lexical &a, does it? | 06:42 | |
sorear | moritz: it does | ||
06:43
wtw joined
|
|||
sorear | S05:1422 | 06:43 | |
I interpreted this to mean *only* Regex-classed objects | |||
so / <sin> / is still a call to a method | 06:44 | ||
if you have a burning desire to use a trig function as a parsing method, you'll need to use <sin=&sin> like in Rakudo b | |||
06:45
REPLeffect joined
06:46
dukeleto left,
odoacre left,
orafu left,
p6eval left,
tadzik left,
Util left,
Lorn left,
`patch` left,
y3llow_ is now known as y3llow
06:47
orafu joined
|
|||
moritz | nom: my regex a { }; say | 06:48 | |
nom: my regex a { 'a' }; say 'a' 9~ | |||
nom: my regex a { 'a' }; say 'a' ~~ /<a>/ | |||
what's up with p6eval? | |||
kshannon | Netsplit | ||
moritz | worse | 06:49 | |
it doesn't react to ctrl+c from the command line | |||
06:50
bbkr joined,
MC91 joined,
tadzik joined,
dukeleto joined,
odoacre joined,
p6eval joined,
Util joined,
spetrea joined,
fsergot joined,
ashleydev joined,
lestrrat joined,
daxim joined,
fhelmberger joined,
mattp_ joined,
daemon joined,
dalek joined,
Tene joined,
kfo joined,
Lorn joined,
`patch` joined,
wolfe.freenode.net sets mode: +vv p6eval dalek
|
|||
kshannon | nom: my regex a { 'a' }; say 'a' ~~ /<a>/ | 06:50 | |
06:50
p6eval left,
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
kshannon | nom: my regex a { 'a' }; say 'a' ~~ /<a>/ | 06:50 | |
moritz | it received that input at least | 06:51 | |
p6eval | nom 4e5d8a: OUTPUT«Method 'a' not found for invocant of class 'Cursor' in regex <anon> at /tmp/06o0zaeUGJ:1 in method ACCEPTS at src/gen/CORE.setting:7228 in block <anon> at /tmp/06o0zaeUGJ:1 in <anon> at /tmp/06o0zaeUGJ:1» | ||
nom 4e5d8a: OUTPUT«Method 'a' not found for invocant of class 'Cursor' in regex <anon> at /tmp/CBvV5AexSy:1 in method ACCEPTS at src/gen/CORE.setting:7228 in block <anon> at /tmp/CBvV5AexSy:1 in <anon> at /tmp/CBvV5AexSy:1» | |||
moritz | niecza: my regex a { 'a' }; say 'a' ~~ /<a>/ | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«#<match from(0) to(1) text(a) pos([].list) named({"a" => #<match from(0) to(1) text(a) pos([].list) named({}.hash)>}.hash)>» | ||
moritz | niecza: my regex a { 'a' }; { my sub a() { }; say so 'a' ~~ /<a>/ } | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«Potential difficulties: &a is declared but not used at /tmp/_jIipyvpZ4 line 1:------> my regex a { 'a' }; { my sub a⏏() { }; say so 'a' ~~ /<a>/ }Unhandled exception: Unable to resolve method a in class Cursor at /tmp/_jIipyvpZ4 … | ||
sorear | moritz: transatlantic routing glitch causes netsplit and disrupts your ssh connection? | 06:52 | |
moritz | sorear: no, the ssh connection was fine; I could change windows inside the screen | ||
06:54
DrEeevil is now known as bonsaikitten
07:04
jaldhar joined
|
|||
sorear | rakudo: sub foo(::Int $x) { say 15 ~~ Int }; foo("xyz") | 07:07 | |
p6eval | rakudo 4e5d8a: OUTPUT«===SORRY!===You cannot create an instance of this type» | ||
07:09
sayu joined
|
|||
sorear | Does initial in parameters :: always mean "en passant type capture"? | 07:09 | |
japhb | nom: my $class := Any.HOW.HOW; my @m := $class.HOW.methods($class, :local).list; say @m.WHAT; | 07:10 | |
p6eval | nom 4e5d8a: OUTPUT«List()» | ||
japhb | nom: my $class := Any.HOW.HOW; my @m := $class.HOW.methods($class, :local).list; say @m.WHAT; for @m { say "alive" } | 07:11 | |
p6eval | nom 4e5d8a: OUTPUT«List()Unmarshallable foreign language value passed for parameter '$value' in method new at src/gen/CORE.setting:5111 in sub coro at src/gen/CORE.setting:4522 in method reify at src/gen/CORE.setting:4497 in method reify at src/gen/CORE.setting:4280 in method… | ||
japhb | OK, how do I iterate @m in the above? I've clearly got Tired Brane | ||
sorear | Why are you using .list there at all? | 07:12 | |
japhb | nom: my $class := Any.HOW.HOW; my @m := $class.HOW.methods($class, :local); say @m.WHAT; | ||
p6eval | nom 4e5d8a: OUTPUT«Type check failed in binding in block <anon> at /tmp/P4dKWJPLj6:1 in <anon> at /tmp/P4dKWJPLj6:1» | ||
japhb | That's why. | ||
sorear | You're saying @m | ||
Don't do that | |||
japhb | nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.WHAT; | 07:13 | |
p6eval | nom 4e5d8a: OUTPUT«Hash()» | ||
sorear | @m requires Positional, which is a Perl 6 type, excluding NQP result values | ||
...or those | |||
japhb | WTF? | ||
sorear | nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m | ||
p6eval | nom 4e5d8a: OUTPUT«Unmarshallable foreign language value passed for parameter '$value' in method new at src/gen/CORE.setting:5111 in sub coro at src/gen/CORE.setting:4522 in method reify at src/gen/CORE.setting:4497 in method reify at src/gen/CORE.setting:4280 in method reify … | ||
sorear | nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.Str | ||
p6eval | nom 4e5d8a: OUTPUT«Unmarshallable foreign language value passed for parameter '$value' in method new at src/gen/CORE.setting:5111 in sub coro at src/gen/CORE.setting:4522 in method reify at src/gen/CORE.setting:4497 in method reify at src/gen/CORE.setting:4280 in method reify … | ||
sorear | nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.keys | 07:14 | |
p6eval | nom 4e5d8a: OUTPUT«Unmarshallable foreign language value passed for parameter '$value' in method new at src/gen/CORE.setting:5111 in sub coro at src/gen/CORE.setting:4522 in method reify at src/gen/CORE.setting:4497 in method reify at src/gen/CORE.setting:4280 in method reify … | ||
sorear | nom: my $class := Any.HOW.HOW; say $class | ||
p6eval | nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'NQPClassHOW' in sub say at src/gen/CORE.setting:5702 in block <anon> at /tmp/UIgLocYCpJ:1 in <anon> at /tmp/UIgLocYCpJ:1» | ||
sorear | nom: my $class := Any.HOW.HOW.HOW; say $class | 07:15 | |
p6eval | nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'KnowHOW' in sub say at src/gen/CORE.setting:5702 in block <anon> at /tmp/EOnuiUqMkG:1 in <anon> at /tmp/EOnuiUqMkG:1» | ||
sorear | nom: my $class := Any.HOW.HOW.HOW.HOW; say $class | ||
p6eval | nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'KnowHOW' in sub say at src/gen/CORE.setting:5702 in block <anon> at /tmp/561r3cJriK:1 in <anon> at /tmp/561r3cJriK:1» | ||
japhb chuckles: Find the class by looking at the error message telling you it can't show you the name for the class. | |||
sorear | japhb, I'm ready to try to add &val to niecza | 07:16 | |
I'm wondering what the parse rules should be, esp. for Pairs | |||
kshannon | \o/ | ||
japhb | The annoying thing is that on a conceptual level, it looks like there's a decent-ish set of metamethods all the way down, but unfortunately beyond a certain point, I can't actually seem to introspect any further from Perl6-land. | 07:17 | |
sorear | japhb: You need to use NQP to use the lower metamethods | 07:18 | |
Perl6 can only really use its own objects | |||
I think that... thing... was a parrot;Hash | |||
nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.REPR | |||
p6eval | nom 4e5d8a: OUTPUT«P6opaque» | ||
japhb | Yeah, that's my guess as well. | ||
sorear | hmm, maybe not | 07:19 | |
jnthn has been pretty clear in the past that Any.HOW.HOW is meant to be an NQP-world object in Rakudo | |||
japhb | nom: my $class := Any.HOW.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.REPR | ||
p6eval | nom 4e5d8a: OUTPUT«P6opaque» | ||
japhb | Yeah, it's lying. | ||
sorear | I don't know if he intends to make gisting a P6hash work, though | 07:20 | |
japhb | nom: my $class := Any.HOW; my $m := $class.HOW.methods($class, :local); say $m.REPR | ||
p6eval | nom 4e5d8a: OUTPUT«P6opaque» | ||
benabik | nom: my $class := Any.HOW; say $class | ||
p6eval | nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::ClassHOW' in sub say at src/gen/CORE.setting:5702 in block <anon> at /tmp/OKHMwo9wxz:1 in <anon> at /tmp/OKHMwo9wxz:1» | ||
benabik | nom: my $class := Any.HOW; say $class.name | ||
p6eval | nom 4e5d8a: OUTPUT«too few positional arguments: 1 passed, 2 (or more) expected in name at src/gen/Metamodel.pm:58 in block <anon> at /tmp/vXY_xGljPo:1 in <anon> at /tmp/vXY_xGljPo:1» | ||
moritz | nom: my $class := Any.HOW; say $class.name($class) | 07:21 | |
p6eval | nom 4e5d8a: OUTPUT«Any» | ||
sorear | nom: my $class := Any; say $class.HOW.name($class) | ||
p6eval | nom 4e5d8a: OUTPUT«Any» | ||
japhb doesn't actually care about .gist for this stuff per se; I was really just trying to figure out how to write a tool that introspected the entire class space and drew a massive diagram of the whole reality all the way down to the bottom turtle. | |||
sorear | nom: my $class := Any; say $class.^name # how it's meant to be used | ||
p6eval | nom 4e5d8a: OUTPUT«Any» | ||
benabik | sorear++ | ||
07:21
zby_home_ left
|
|||
benabik | nom: my $class := Any.HOW; say $class.^name | 07:22 | |
p6eval | nom 4e5d8a: OUTPUT«Method 'dispatch:<.^>' not found for invocant of class 'Perl6::Metamodel::ClassHOW' in block <anon> at /tmp/Z9iHNNf7zb:1 in <anon> at /tmp/Z9iHNNf7zb:1» | ||
benabik | nom: my $class := Any.HOW; say $class.name($class) | ||
p6eval | nom 4e5d8a: OUTPUT«Any» | ||
benabik | nom: my $class := Any.HOW.HOW; say $class.name($class) | ||
p6eval | nom 4e5d8a: OUTPUT«Perl6::Metamodel::ClassHOW» | ||
benabik | nom: my $class := Any.HOW.HOW.HOW; say $class.name($class) | 07:23 | |
p6eval | nom 4e5d8a: OUTPUT«NQPClassHOW» | ||
sorear | don't get into the habit of writing $class.name($class) | ||
japhb | benabik discovered why I was compulsively writing the longhand. :-) | ||
sorear | it's wrong | ||
07:23
jaldhar left
|
|||
japhb | Once you cross into the metamodel, .^ doesn't work. | 07:23 | |
... at least, not in nom | |||
sorear | it happens to work because all of jnthn's metaclasses (except KnowHOW) ignore their argument | ||
the correct way to write the longhand is $class.HOW.name($class) | 07:24 | ||
the invocant and the first argument should not be the same | |||
japhb | Yes, and you'll note I was using the correct longhand. ;-) | ||
sorear | But benabik was not. | ||
benabik | nom: my $class := Any.HOW.HOW; say $class.HOW.name($class) | ||
p6eval | nom 4e5d8a: OUTPUT«NQPClassHOW» | ||
japhb nods in acknowledgement | 07:25 | ||
benabik | sorear: Ah, I see the difference. Hard for me to remember this late at night. | ||
sorear | your IRC client thinks you're in London. How late is the night? | 07:26 | |
benabik | London? | ||
sorear | 0730 | ||
japhb tables this line of thought until jnthn++ is back to explain how it can magically Just Work. :-) | |||
sorear | UTC+0000 | ||
benabik | Oh. It's returning UTC. I have no idea why. I'm EST. -5 | 07:27 | |
sorear | now it's my turn to be all tired braney, I was thinking "EEST? That's not night at all!" | ||
benabik | Heh. There's a reason I added the -5 | 07:28 | |
benabik doesn't see an option for fixing local time. Pity. | |||
japhb | sorear, What exactly did you want to talk about re: Pair syntax? Obviously I think it should try to interpret a string that looks like a colon pair as a numeric form first, since we can assume that colon syntax with a decimal integer key is not meant as a Pair but rather as a Numeric. | 07:29 | |
sorear | benabik: irssi? | ||
japhb | But I'm not sure what you are thinking beyond that? | ||
benabik | sorear: Colloquy | ||
sorear | benabik: oh, you're not using a colo server? | ||
sorear had to manually set the timezone in .bashrc on this VM | 07:30 | ||
benabik | It's always displayed the timestamps in UTC, but I figured that was server time. :-/ | ||
No, this is running on my laptop. | |||
I intend to set up a bouncer on my server when I rebuild it. | |||
sorear | (seriously, who thinks 'America/Los_Angeles' is a sane way to set a timezone? I'm 200 miles south of LA, but I can't seem to set an actual offset.) | 07:31 | |
benabik | America/New_York makes sense for me, but I bet it was named after the city, not the state. | 07:33 | |
sorear | japhb: Mostly I just want to co-ordinate. | ||
benabik | sorear: I think you can use US/Pacific instead of America/Los_Angeles. The reason why you can't just use an offset is that it also has to find leap seconds, DST, etc etc | 07:37 | |
japhb | sorear, so that our algorithm is (functionally) the same, I assume? Which is to say, both Niecza and Rakudo will make the same sort of thing out of identical strings? | 07:39 | |
sorear | japhb: yes | 07:40 | |
japhb | Ah, excellent. | ||
sorear | japhb: also I don't want to duplicate work on the grammars & stuff | 07:41 | |
japhb | Fair enough. | ||
sorear | Do leap seconds actually vary by locale? I thought IERS set them for everyone. | ||
benabik | Not everyone listens? | 07:42 | |
japhb | Well, the thing that started me down the mental path that eventually led to trying to introspect all the turtles was just making sure I had a good mental model of all the types and how I wanted to approach (or ignore) them for val(). | ||
benabik | Huh. file reports different numbers of "transition times" for US/Eastern and US/Pacific. | 07:43 | |
japhb | As benabik++ said, I suspect not every timezone respects leap seconds. | ||
tadzik | ingy: yes, HTTP::Easy supports PSGI | ||
japhb | tadzik, What is the intended difference between HTTP::Server::Simple and HTTP::Easy? | ||
Or do they in fact inhabit the same niche? | 07:44 | ||
sorear | (IERS has to be one of the coolest NGO names anywhere) | ||
tadzik | japhb: HTTP::Easy is generally HTTP::Server::SImple rewritten with some new features, I observed | 07:45 | |
japhb | Ah, OK. | ||
sorear, one thing that occurs to me with val() is that we might want some way to remove some of the default-secure at programmer request. Specifically, I've already wanted to be able to say "Expose this Enum to val()", even though I think the default should be that no Enum not provided by the setting should be visible. | 07:47 | ||
sorear | I don't like this proliferation of random names. It should just be called HTTP:auth<cpan:TADZIKES> | 07:48 | |
japhb: to me, that's not a security issue but rather a single-valuedness issue | 07:50 | ||
japhb: I don't really care if user input can get enum values, but I do think that if val uses CALLER, we'll have a lot more problems | 07:51 | ||
(for a start, CALLER absolutely will not work with the constant folding I implemented earlier today) | |||
japhb | Hence my thought that if one wanted to expose additional types to val(), they'd have to expose that desire at the call site. An adverb on val(), perhaps, or even another sub entirely. | 07:53 | |
bacek | jnthn, ping | 07:54 | |
japhb | bacek, chances are he's still asleep | ||
bacek | japhb, ah, thanks. In which timezone he is now? | 07:55 | |
japhb | Sweden, I believe | ||
bacek | ok | ||
japhb | (But he likes to go to sleep around 2 AM local time IIRC.) | ||
bacek | aloha, clock? | 07:56 | |
ok, about 9PM. Waaaaay too early :) | |||
sorear | japhb: ...no wonder we get along so well! :D | 07:57 | |
japhb | *chuckle* | 07:58 | |
sorear | o/ bacek | ||
07:59
lutok joined
08:00
stepnem joined
|
|||
japhb | Are there (Perl 6) types that (should) exist by the end of the setting that are not represented in the list at the end of nom's src/Perl6/Metamodel/BOOTSTRAP.pm ? | 08:06 | |
Duh, yes. | |||
Sigh. | |||
All I want for winter holiday is NomIllGuts. | 08:07 | ||
sorear | S02's list of types not good enough for you? | 08:11 | |
08:11
baest_ is now known as baest
|
|||
masak | morning, #perl6 | 08:12 | |
sorear | masak! | ||
masak | sorear! \o/ | ||
tadzik | hello masak! | ||
masak | oh hai tadzik | 08:13 | |
I think you can expect jnthn soonish -- or at least not too late. | |||
sorear is studying the uses of <typename> and <type_constraint> in STD | 08:15 | ||
trying to figure out how best to handle the entire gamut | 08:16 | ||
japhb | sorear, I can pull most of what I want from different places in S02, yes. | ||
sorear | japhb: what kind of charts do you want? | 08:17 | |
japhb | But I was hoping to not have to do the gathering by hand. :-) | ||
sorear, Have you seen IllGuts for Perl 5? | |||
sorear | not recently | 08:18 | |
japhb | or rather, perl5, I suppose. | ||
The doc's been kept up to date. Someone's got a rev for every perl5 release with a guts change. | 08:19 | ||
Anyway, I want to have such a thing for Rakudo. If I have to create it myself, I will. :-) | |||
sorear | japhb: I am going to guess now that pm is an early riser. | 08:20 | |
japhb | pmichaud? Why do you say that? | 08:21 | |
sorear | I wonder what should be allowed inside the () in my Str(...) $x; | ||
japhb: because jnthn sleeps at 2am, and I don't get along nearly as well with pm | |||
japhb | *snrk* | 08:22 | |
sorear | STD parses the ... as a postcircumfix | 08:23 | |
so you could have my Str(:bar) $x ... which is just wrong | |||
it should probably be limited to smartmatchers or type objects | |||
seems to me it might be better to parse it as '(' <typename>? ')' | 08:24 | ||
08:26
orafu left,
orafu joined
|
|||
masak | sorear: yes, pmichaud is an early to very early riser. | 08:26 | |
08:28
mj41 joined
08:30
cognominal_ joined
|
|||
sorear | masak: constant folding! | 08:30 | |
masak: also, isBEKaml expressed interest in Yapsi. | |||
japhb | All this talk of sleep and waking is reminding me that kid's vacation is over, and thus I'd better get to bed, or regret it when the alarm goes off. ;-) | 08:31 | |
sorear | :) | ||
masak | sorear: oh, so that's how you got the exponentiation to be faster. kudos! | ||
sorear | good night | ||
japhb | good night all & | 08:32 | |
masak | o/ | ||
08:32
cognominal left
|
|||
moritz | \o | 08:32 | |
sorear | I see how this works ... type_constraint is only used in signatures, easy enough | 08:33 | |
still a bit of a tangle with leading :: support; not sure if I should try to restrict the grammar or the actions | 08:34 | ||
(NONE of the places where typename is used, have a use for a WHENCE block, but typename still looks for one. Etc.) | 08:35 | ||
nom: sub foo(Int(Cool) $x) { } | 08:36 | ||
p6eval | nom 4e5d8a: OUTPUT«===SORRY!===Malformed block at line 1, near "(Int(Cool)"» | ||
sorear | nom: sub foo(Cool $x as Int) { say $x }; foo 1.5 | 08:37 | |
p6eval | nom 4e5d8a: OUTPUT«1» | ||
sorear | ah, not quite on the latest spec? | ||
sorear -> sleep | 08:38 | ||
jnthn | morning | 08:47 | |
phenny | jnthn: 05:40Z <moritz> tell jnthn about gist.github.com/1581336 (nqp qbootstrap test output with ICU) | ||
jnthn | moritz: Thanks :) | 08:48 | |
masak | sorear: no, not quite on the latest spec with that one. | ||
jnthn | The latest spec on that one is deeper than being a purely syntactic matter | ||
I think coercion types are meant to be first class or some such... | 08:49 | ||
08:52
snearch joined,
daxim left
|
|||
masak | not sure I see what that means. | 08:53 | |
jnthn | Not sure I fully do yet either :P | 08:54 | |
moritz | I thought it just meant that you store two types per container | ||
the type to coerce to, and the type that is checked before coercion | 08:55 | ||
08:56
wolverian joined,
daxim joined
|
|||
jnthn | role R[::T] { method m(T $x) { } }; R[Int(Str)].m('42') # should this be possible? | 08:57 | |
afk for a moment | |||
masak | I don't immediately see any problems with that. | 08:58 | |
and yes, that explains what "first class" means for coercion types. | |||
moritz | I too see the point now, and I don't know if that's meant to work | ||
08:59
cognominal_ left,
cognominal joined
09:00
icwiener joined
|
|||
kshannon | moritz++ # Awesomness of acronyms on irc.perlgeek.de | 09:09 | |
masak | the thing inside the R[] is a signature, and we know that signatures can contain Int(Str) -- hence the above is correct. :) | ||
moritz | masak: no, it's not a signatue | 09:11 | |
*signature | |||
masak: it's a signature in the declaration (R[::T]), but not in the application. There it's an argument list or Capture | |||
jnthn | What moritz said | 09:12 | |
It's showing up as a term in my example | |||
Probably parsed by typename | |||
er | |||
by term:name | |||
moritz | masak: yesterday I closed a bug where you tried to use ::T inside the role concretization, and got a NPMCA; now you just get a different error :-) | 09:13 | |
b: role A[$x] { }; class B does A[::T] { } | |||
p6eval | b 1b7dd1: ( no output ) | ||
moritz | b: role A[$x] { }; class B does A[::T] { }; say B.new | ||
p6eval | b 1b7dd1: OUTPUT«B()<0x4b76490>» | ||
moritz | huh, then that ticket was really old | ||
jnthn | ...what does that mean? :) | ||
moritz | nom: role A[$x] { }; class B does A[::T] { }; say B.new | 09:14 | |
p6eval | nom 4e5d8a: OUTPUT«===SORRY!===Could not locate compile-time value for symbol T» | ||
jnthn | nor could I, nom :) | ||
moritz | b: role A[$x] { method x() { $x } }; class B does A[::T] { }; say B.new.x | ||
p6eval | b 1b7dd1: ( no output ) | ||
09:14
mkramer left
|
|||
moritz | b: role A[$x] { method x() { $x } }; class B does A[::T] { }; say B.new.x.WHAT | 09:14 | |
p6eval | b 1b7dd1: OUTPUT«Failure()» | ||
moritz | b: role A[$x] { method x() { $x } }; class B does A[::T] { }; say B.new.x.perl | ||
p6eval | b 1b7dd1: OUTPUT«undef» | ||
jnthn | o.O | ||
Glad nom didn't do that, or masak'd be submitting already :P | 09:15 | ||
moritz | I don't think nom mentions undef, except for generating an error message about misuse of undef | 09:16 | |
jnthn | Good. :) | 09:17 | |
jnthn figures he should do some $dayjob | 09:18 | ||
09:21
dakkar joined
|
|||
masak | point taken about the signature/capture distinction in parametric roles. it mirrors the declare/use of routines, I guess. | 09:23 | |
jnthn | Rajt. | ||
masak | Grejt. | 09:24 | |
09:30
mikemol joined
|
|||
dalek | p: bb332d9 | bacek++ | src/pmc/ (3 files): Don't use pmc-specific accessors when not necessary |
09:33 | |
09:39
orafu left,
orafu joined
|
|||
cognominal | S04-control.pod:1668: macro statement_control:<if> ($expr, &ifblock) {...} | 09:59 | |
does that mean that macro call arguments are not space separated? | |||
jnthn | ...what's a macro doing taking something with an & sigil? | 10:00 | |
It only gets ASTs in, no? | |||
cognominal | that also... | ||
masak | jnthn: ooh, I had not seen that one before. | 10:01 | |
cognominal | but that may be a macro for the implementation of an interpreter | 10:02 | |
masak | but yeah, the specification is full of those half-working macro examples. | ||
to be fair, E06 is worse ;) | |||
jnthn just asks masak when he wants to know how macros will work :) | |||
masak | I don't think they'll ever work like S04:1668 :) | 10:03 | |
cognominal | meaning a function is returned not an ASTm to be bound to &ifblock | ||
masak | keep in mind though that these bits of the spec are known to be slushy. TimToady proposed a whole 'nuther *syntax* for quasi-interpolation a few months back, which never went into the spec because it was vastly problematic. | 10:05 | |
(the syntax proposed to annotate each unit of interpolation with a syntactic class.) | |||
kshannon | jnthn: you're rxtrace in qbootstrap has some issues... | ||
./nqp t/nqp/01-literals.t dies with: Confused at line 18, near "say(q <ok" | 10:06 | ||
./nqp --rxtrace t/nqp/01-literals.t instead: Confused at line 5, near "say('1..9'" | |||
find_dynamic_lex of "$*QUOTE_STOP" stops working... | |||
tadzik | did you mean: your? | ||
kshannon | s/you're/your/ | ||
jnthn | kshannon: That's...odd. | 10:08 | |
kshannon | very. | ||
I patched QHLL/Grammar.pm stopper to die if it can't find $*QUOTE_STOP and it does just after the ' on line 5, but only when --rxtrace is on. | 10:10 | ||
jnthn | wtf | 10:13 | |
kshannon | I really wish the parrot debugger was in a workable state. GDB just isn't at the right level :( | 10:14 | |
bacek | jnthn, \o | 10:18 | |
jnthn | o/ bacek | ||
bacek | jnthn, have a few minutes? I've got few questions about 6model | ||
jnthn | bacek: I'm $dayjobbing, but can probably answer a few :) | 10:19 | |
bacek | jnthn, I'll try to be short :) Why in SixObjectCommonalities "stable" and "sc" are PMCs? Just for GC? | 10:20 | |
jnthn, (next one) what do you think is bare minimum of VTABLEs required to support 6model natively in Parrot? My current list is "init", "mark", "destroy", "store", "freeze" and "invoke". Did I miss something obvious? | 10:21 | ||
jnthn | bacek: An SC probably wants to be GC-able | 10:23 | |
STable need not be | |||
I've more than once pondered switching to ref-counting them. | |||
Because not doing so runs into finalisation order issues | |||
bacek | jnthn, I'm thinking about something like STableRegistery for memory management. | 10:24 | |
.. of STables | |||
jnthn | So long as they can be collected | ||
10:24
donri joined
|
|||
jnthn | Well | 10:25 | |
freed | |||
When no longer needed | |||
bacek | jnthn, erm. Who cares? They are freed only at program exit afaik. | ||
jnthn | No | ||
bacek | ah. My bad. | ||
jnthn | Types can come into existence during execution | 10:26 | |
And then go out of scope and need freeing | |||
bacek | otoh, how many different types we can have? 1k? 10k? 100k? | 10:27 | |
jnthn | 100k would be very unusual, I suspect. | ||
Well | |||
Existing at once | |||
bacek | Indeed. | 10:28 | |
jnthn | There's no hard limit of course, but generally you have many instnaces of a much smaller number of types | ||
bacek | 10k stables. With 100 bytes per stable it's only 1M of memory | ||
jnthn | Yeah, and 10k sounds excessive. | 10:29 | |
Well, for a large application maybe not | |||
bacek | Not a big deal if we will keep them till end. | ||
jnthn | Oh, I said "existing at once" | ||
Example: Test::Mock creates anonymous subclasses for mock objects. They need collecting, otherwise each test csae leaks memory | 10:30 | ||
10:30
tokuhirom joined
|
|||
jnthn | Or even internally, I think role composition's temporary summation role that it creates may be collectable. | 10:30 | |
bacek | Ok. Agreed. To summarise: STable should be "GCable" but not necessary PMC. | 10:31 | |
jnthn | Well | ||
PMCs really want to be 6model objects I guess. | |||
bacek | jnthn, yes. | ||
jnthn, this lead us to next question: "minimal set of VTABLEs" :) | 10:33 | ||
afk # bb in 5 | |||
jnthn | Mark and destroy are representation operations. | 10:35 | |
init - really needs splitting in two. What are the required initialization actions at a representation level, no matter what type we have (which is what initialize in the REPR API is for), plus some type-space mechanism that's like Perl 6's BUILD. | 10:36 | ||
The initialization level ones are non-optional and just part of object creation. | 10:37 | ||
kshannon | Ah! find_dynamic_lex is working, it's the return from peek_delimiters... | 10:41 | |
(start, stop) = self.'peek_delimiters'(target, pos) | |||
moritz | that only works in PIR I suppose | ||
kshannon | TWO return arguments... the trace wrapper only passes ONE back... | ||
moritz | not on the NQP level | ||
oh, that's it | |||
bacek | jnthn, we have 2 stage registration of PMC in Parrot right now. First stage can be used for init REPRs. | 10:42 | |
jnthn | Oh. | ||
bacek: Something in there sounds like a mis-understanding... | 10:43 | ||
bacek | jnthn, second stage can be used as .compose for PMCs. Or we can even simplify it a bit. | ||
kshannon | I'm starting to get pretty good at twisting GDB to do what I need for breakpoints in parrot. | ||
bacek | jnthn, erm... Explain? | ||
jnthn | OK, now I'm really confused | ||
bacek: Every object has an STable pointer. An STable points in turn to a meta-object and a REPR function table. That function table is a "singleton" per REPR. If it wants per-type data, it hangs it off the STable. | 10:45 | ||
bacek: The meta-object is just a completely normal object. | |||
bacek: It's meta-objects that generally have compose methods. But generally it's just a convention, not something that'd be baked in too deeply | 10:46 | ||
bacek: The point is that representation operations are not vtable-like things on an object itself. In fact, if you statically know the representation then it needn't be an indirect call at all. | 10:47 | ||
bacek | jnthn, oookey. | ||
moritz | nom: enum A <b c>; say A.HOW | 10:48 | |
p6eval | nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::EnumHOW' in sub say at src/gen/CORE.setting:5702 in block <anon> at /tmp/az7G1FQd1v:1 in <anon> at /tmp/az7G1FQd1v:1» | ||
moritz | jnthn: if I want to add a method that all enums need to have, do I put it into EnumHOW? | 10:50 | |
jnthn | moritz: ? | 10:51 | |
moritz | erm, no, that's the wrong meta level | ||
jnthn | Right :) | ||
moritz | where does it go? | ||
jnthn | moritz: See src/core/Enumeration.pm | ||
moritz | ah, wonderful | ||
nom: say Bool.pick | |||
p6eval | nom 4e5d8a: OUTPUT«Bool::True» | 10:52 | |
moritz | that one is fixed already, great | ||
10:53
explorer__ joined
|
|||
kshannon | nom: say Bool.pick | 10:54 | |
p6eval | nom 4e5d8a: OUTPUT«Bool::False» | ||
kshannon | just checking... | ||
moritz adds Bool.roll too | |||
nom: say Bool.roll(8) | |||
p6eval | nom 4e5d8a: OUTPUT«True True True True False True True True» | ||
10:55
DarthGandalf joined
|
|||
moritz | why does that work, even though there's no method roll in src/core/Enumeration.pm? | 10:55 | |
nom: say Bool.roll | |||
p6eval | nom 4e5d8a: OUTPUT«Bool::True» | ||
moritz | oh, I guess Any.roll re-dispatches to self.pick or so | 10:56 | |
nom: say Bool.list | |||
p6eval | nom 4e5d8a: OUTPUT«use of uninitialized value of type Bool in string context» | ||
moritz | no, it doesn't. Any.roll redispatches to self.list.roll, and List.roll does all the work itself | 10:57 | |
bacek | jnthn, why SixModel_REPROps_Indexing supports only integer indexes? And how hashes are implemented in terms of REPR? | 11:00 | |
jnthn | moritz: Because Bool isn't an enum, iirc | ||
bacek: Oh, the index REPR ops part is *very* new. | |||
*indexed | 11:01 | ||
11:01
explorer__ left
|
|||
bacek | jnthn, hmm... Looks like you'll have full set of current parrot's VTABLEs in REPRs... | 11:01 | |
jnthn | bacek: Only those that explicitly relate to allocation and storage of stuff. For example, there'd never be a find_method, does, etc. | 11:02 | |
moritz | nom: enum A <b c>; say A.pick(*); say A.roll(8) | 11:05 | |
p6eval | nom 4e5d8a: OUTPUT«b cuse of uninitialized value of type A in string contextuse of uninitialized value of type A in string contextuse of uninitialized value of type A in string contextuse of uninitialized value of type A in string contextuse of uninitialized value of type A in stri… | ||
bacek | jnthn, ook. So, get_{foo}_keyed_{bar} is in. | ||
jnthn, get/setattr is in (Modulo my confusion about what the heck is difference between attr and prop in parrot) | |||
jnthn, boxing is in | 11:06 | ||
jnthn, all math ops are out (?) | |||
moritz | bacek: what are you trying to do? migrate 6model to parrot? | ||
bacek | moritz, other way round. Migrate parrot to 6model | 11:07 | |
masak | \o/ | ||
bacek | moritz, to make parrot small, simple, fast and comprehensible. | ||
masak | bacek++ | 11:08 | |
moritz | bacek: awesome! | ||
jnthn | bacek: Yeah. Either REPR-specific ops (see nqp_bigint.ops) or we always unbox things to native types and do the computation natively | ||
bacek: To clarify, I don't think Parrot should be doing MMD in PMCs at all. | |||
If languages want to do their ops that way, they probably have their own idea of multiple dispatch. | |||
bacek | jnthn, it was 3rd question about MultiSub vs DispatcherSub :) | ||
jnthn | bacek: DispatcherSub implements NQP multi-dispatch semantics. | 11:09 | |
bacek: But really, IMHO Parrot should be dis-entangling itself from multi-dispatch, not entangling itself in another language's view of it. | 11:10 | ||
bacek | jnthn, if "NewMultiSub" will provide only storage for Subs with empty .invoke, than we can have "DispatcherSub" and "P6MultiSub" inherited from it and provide different semantics for MMD | ||
jnthn | Argh no, not inheritance!!! | 11:11 | |
moritz | simply store a function pointer to the multi dispather | ||
masak | jnthn: it takes some time for people to get used to a core world without inheritance :) | ||
jnthn | bacek: We really need a "protocol" of some kind for invocation | 11:12 | |
Where a type can say "this is what invocation means to me" | |||
bacek: I don't think we should make languages commit to one way of storing their candidate lists. | |||
bacek: Already NQP and Perl 6 look differently there | |||
bacek: When I prototyped 6model on the CLR, I did just have a delegate (basically, function pointer) hanging off the STable. | 11:13 | ||
11:14
LlamaRider joined
|
|||
jnthn has to leave for $meeting soon | 11:15 | ||
bacek: I sense that if the notion of vtable as Parrot has it today survives a 6model transition, it's function will be mostly reduced to HLL interop. | 11:18 | ||
*its | |||
11:21
cognominal left
11:23
cognominal joined
11:25
cognominal_ joined
|
|||
jnthn | meeting & | 11:27 | |
11:29
cognominal left
11:35
jaldhar joined
11:39
Juerd left,
Juerd joined
|
|||
bacek | jnthn, ok. 1) If MMD is basically doesn't exists from VM point of view; 2) and call is just "VTABLE_invoke" on Object; than we can hand it over to HLL. | 11:41 | |
jnthn, one problem - MMD over free functions. Should we have some kind of "Namespace.invoke"? | |||
11:49
tokuhirom left,
tokuhirom joined
11:53
tokuhirom left
11:55
cognominal_ left
11:56
birdwindupbird joined
11:57
cognominal joined
11:58
satyavvd left
12:11
LlamaRider left
|
|||
masak | bacek: what's a "free function"? | 12:15 | |
12:15
sayu left
|
|||
masak | I know what a free variable is; never heard of a free function. | 12:15 | |
nom: class C { our method foo { say "OH HAI" } }; my &f = &C::foo; f(C.new) | 12:16 | ||
p6eval | nom 4e5d8a: OUTPUT«OH HAI» | ||
masak | is &f a free function? | ||
nom: class C { our method foo { say "OH HAI" } }; my &f = &C::foo; class D is C {}; f(D.new) | 12:20 | ||
p6eval | nom 4e5d8a: OUTPUT«OH HAI» | ||
12:21
araujo joined,
araujo left,
araujo joined
|
|||
masak | nom: class C { }; class D is C { our method foo { say "OH HAI" } }; my &f = &D::foo; f(D.new) | 12:22 | |
p6eval | nom 4e5d8a: OUTPUT«OH HAI» | ||
masak | nom: class C { }; class D is C { our method foo { say "OH HAI" } }; my &f = &D::foo; f(C.new) | 12:23 | |
p6eval | nom 4e5d8a: OUTPUT«Nominal type check failed for parameter ''; expected D but got C instead in method foo at /tmp/3Uls2VsWfb:1 in block <anon> at /tmp/3Uls2VsWfb:1 in <anon> at /tmp/3Uls2VsWfb:1» | ||
masak | \o/ | ||
12:23
pnu joined
12:26
arlinius joined
|
|||
colomon | masak: mind if I borrow your trans (from ng) for niecza? | 12:30 | |
kshannon | Well, That's a lot of PIR to get a working sub wrapper... | ||
18 lines: 4 prologue, 10 wrapped call, 4 epilogue | 12:31 | ||
masak | colomon: go right ahead. | ||
colomon: fwiw, pmichaud reported some problems with that code. I never did, but it uses some slightly advanced features like lexical classes. | 12:32 | ||
s/never did/never noticed anything/ | |||
colomon | checking now to see if it compiles. :) | 12:33 | |
masak | I remember developing that bit of code. what's in ng is a second approach, after my first one turned out not to be radical enough. :) | 12:34 | |
the main point is to encapsulate the difference between replacement substrings and replacement regexes. | |||
12:41
cognominal left
12:42
cognominal joined
|
|||
kshannon | If anyone else (e.g. jnthn) wants my hack for tracing in qbootstrap it's at github.com/KrisShannon/nqp/tree/qb...trace-HACK ( git pull git://github.com/KrisShannon/nqp.git qbootstrap-trace-HACK ) | 12:43 | |
masak | kshannon++ | 12:44 | |
kshannon | I'm too ashamed of it to put it into the official repo... | ||
masak | ;) | ||
colomon | niecza: class B { has $!a; methdo foo { say $!a; }; }; my $b = B.new(a => "hello"); $b.foo | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«===SORRY!===Variable $!a used where no 'self' is available at /tmp/b59_zkKXmv line 1:------> class B { has $!a; methdo foo { say ⏏$!a; }; }; my $b = B.new(a => "hello");Undeclared routines: 'foo' used at line 1… | ||
colomon | niecza: class B { has $!a; method foo { say $!a; }; }; my $b = B.new(a => "hello"); $b.foo | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«Any()» | 12:45 | |
moritz | that's correct | ||
colomon | niecza: class B { has $.a; method foo { say $.a; }; }; my $b = B.new(a => "hello"); $b.foo | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«===SORRY!===Confused at /tmp/tPJwjlfAyh line 1:------> class B { has $.a; metho⏏d foo { say $.a; }; }; my $b = B.new(aUndeclared routine: 'metho' used at line 1Parse failed» | ||
moritz | niecza: class B { has $.a; method foo { say $.a; }; }; my $b = B.new(a => "hello"); $b.foo | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«hello» | ||
moritz | colomon: you had a non-printable character inside the 'method' | ||
colomon | so that doesn't work to initialize $! attributes? | 12:46 | |
moritz | correct | ||
masak | colomon: you can't see private attributes from the outside, so you can't initialize them. | ||
colomon | did it used to work in rakudo? I keep on seeing examples that try to do that... | ||
masak | yes. | ||
moritz | it used to be specced to work | ||
until masak++ raged against it, iirc | |||
helped by TheDamian | 12:47 | ||
masak | "raged"? :) | ||
I'm the height of composure... | |||
moritz | raged in a civilized way :-) | ||
masak | it *is* a lost battle, because there has to be a mechanism or two to actually get at private attributes. | ||
but there are good reasons for not making it easy. | 12:48 | ||
colomon | anyway, masak++'s old trans code relied on it. ;) | 12:49 | |
and now it works! | |||
moritz | colomon: you could have looked at nom, there it has submethod BUILD(:$!source) { } to allow that | 12:50 | |
12:51
tokuhirom joined
|
|||
masak | oh! didn't know my .trans had been ported to nom. | 12:58 | |
moritz | masak: it has, but it has some regression | 12:59 | |
s | |||
masak | not surprised. | 13:00 | |
moritz | masak: which I haven't investigated, because I don't know the code at all | ||
it was basically a "blind" port | |||
nom: say 'abc'.trans('b' => 'X') | |||
p6eval | nom 4e5d8a: OUTPUT«aXc» | ||
moritz | nom: say 'abc'.trans('b' => '') | ||
p6eval | nom 4e5d8a: OUTPUT«ac» | ||
moritz | oh, I thought that one failed | ||
13:02
Trashlord joined
|
|||
masak | nom: say 'abbbbbc'.trans('bb' => 'b') | 13:03 | |
p6eval | nom 4e5d8a: OUTPUT«abbbbbc» | ||
masak | nom: say 'abbbbbc'.trans(['bb'] => ['b']) | ||
p6eval | nom 4e5d8a: OUTPUT«abbbc» | ||
masak | ooh; that's correct! | 13:04 | |
dalek | ast: f0e1cc8 | moritz++ | S (3 files): rakudo unfudges |
13:06 | |
masak | huh -- what kind of path is 'S'? | 13:08 | |
moritz | masak: it's the common prefix of S32 and S02 or so | ||
masak | I see :P | ||
no further questions. :) | |||
moritz | no further answers :-) | 13:09 | |
13:20
tokuhirom left
13:21
tokuhirom joined
13:25
tokuhirom left
13:32
kaleem left
|
|||
moritz | nom: say 'a'.trans(rx/a/ => sub ($x) { $x.WHAT.gist }) | 13:34 | |
p6eval | nom 4e5d8a: OUTPUT«Not enough positional parameters passed; got 0 but expected 1 in sub <anon> at /tmp/whRiVANMpS:1 in method next_substitution at src/gen/CORE.setting:3720 in method trans at src/gen/CORE.setting:3765 in block <anon> at /tmp/whRiVANMpS:1 in <anon> at /tmp/whRi… | ||
moritz | ah, that's the problem in current num | ||
s/num/nom+trans/ | |||
13:37
cognominal left
13:38
cognominal joined
|
|||
masak | hm -- did that ever work? | 13:39 | |
moritz | nope | ||
seems not | |||
b: say 'a'.trans(rx/a/ => sub ($x) { $x.WHAT }) | |||
p6eval | b 1b7dd1: OUTPUT«Not enough positional parameters passed; got 0 but expected 1 in <anon> at line 22:/tmp/htRsXK_5tq in 'Cool::next_substitution' at line 2512:src/gen/core.pm in 'Cool::trans' at line 2559:src/gen/core.pm in main program body at line 22:/tmp/htRsXK_5tq» | ||
13:40
simcop2387 joined
13:41
simcop2387 left,
simcop2387 joined,
alim_ joined
|
|||
moritz | masak: the problem with your .trans code, beautiful as it may be, is that it separates the matching and the substitution far enough that we don't have the Match object around anymore when the substitution closure is called | 13:42 | |
13:42
Trashlord left
|
|||
masak | nod. | 13:43 | |
I'm aware that it's not the final iteration. | |||
the big win with that code, recall, was that it took the time complexity from O(.chars) to O(<substitutions made>) | 13:44 | ||
13:44
xinming joined
|
|||
masak | which was a big deal with the November wiki at some point: strangelyconsistent.org/blog/novemb...pragmatism | 13:45 | |
moritz | I'm not sure that calculation is correct though | ||
it looks more like O(<subsitutions considered>) | 13:46 | ||
nom: say 'aaa'.trans(['aa', 'a'] => ['X', 'Y']) | |||
p6eval | nom 4e5d8a: OUTPUT«XY» | 13:47 | |
masak | aye, you're right about that. | ||
moritz | also it uses index() and regex matches, which are still O(.chars) | 13:48 | |
13:49
xinming left
13:51
xinming joined
|
|||
masak | I'll retreat my arguments from exact O() notations to "it's a lot faster". | 13:51 | |
13:51
cognominal_ joined
|
|||
moritz | O( :/ ) to O( acceptable) :-) | 13:53 | |
13:54
cognominal left
|
|||
[Coke] | .u hap | 13:55 | |
phenny | U+A274 YI SYLLABLE HAP (ꉴ) | ||
13:55
xinming left
13:58
daxim left
|
|||
[Coke] | who was recently trying to split the setting? | 14:02 | |
(for rakudo) | |||
moritz | |||
14:02
daxim joined
|
|||
[Coke] | any luck? and do you think breaking up the setting will speed up the build? | 14:04 | |
(or at least reduce memory pressure?) | |||
moritz | reducing memory pressure is my main goal | ||
I've succeeded in moving some very few, isolated files out of the main setting | |||
for example the MAIN_HELPER | |||
but it seems I can't easily add multi candidates in the second setting to a proto defined in the first setting | 14:05 | ||
jnthn++ promised to look into it | |||
if that's fixed, it might be possible to move all the Temporal stuff to the second setting | 14:06 | ||
maybe IO::Socket too | |||
hm, that one might work today already | |||
jnthn | jnthn is always saying he'll do stuff | ||
:) | |||
jnthn will try and get to it today...qbootstrap hacking sucked up yesterday's tuit supply | |||
moritz | [Coke]: anyway, I already reduced virtual memory usage from 1.7G to 1.6G. Success!!! | 14:09 | |
[Coke] | \o/ | 14:10 | |
dalek | kudo/nom: 8b620e7 | moritz++ | src/core/Enumeration.pm: Enumeration.roll |
14:11 | |
14:12
spine_ joined
14:13
mkramer joined
|
|||
dalek | ast: 8f11d73 | (Solomon Foster)++ | S05-transliteration/trans.t: Fudge for niecza. |
14:16 | |
moritz | meh, moving IO::Socket +INET to core2 gives the same 'rtype not set' error :/ | 14:17 | |
14:19
fsergot left
14:22
mkramer left,
skids joined
14:24
mkramer joined
14:26
mkramer left,
simcop2387 left
14:27
mkramer joined
14:28
fsergot joined
|
|||
fsergot | o/ :) | 14:28 | |
moritz | \o | 14:29 | |
14:31
birdwindupbird left
|
|||
[Coke] thinks we might hit 97% today, if colomon can find a few more of those. ;) | 14:33 | ||
14:34
PacoAir joined
14:35
simcop2387 joined,
simcop2387 left,
simcop2387 joined
14:36
kaleem joined
|
|||
colomon | [Coke]: don't count on it, I need to $work | 14:37 | |
[Coke] | aw. *pout* (me too. ;) | 14:38 | |
14:39
simcop2387 left
|
|||
[Coke] | colomon: are you missing a push to niecza, or is that for later? | 14:39 | |
colomon | [Coke]: well, it's like this. | ||
I ported masak++'s trans code to niecza. | 14:40 | ||
and then I spectested | |||
and then I got a bunch of failures. | |||
[Coke] | (we are at just over 96% as of about 20m ago.) | ||
colomon | right now I'm trying to verify the failures have nothing to do with my patch | ||
[Coke] | roger. | ||
14:40
simcop2387 joined
14:43
nebuchadnezzar joined
|
|||
colomon | niecza: say 13e21 % 4e21 - 1e21 | 14:50 | |
p6eval | niecza v13-169-geba5eb3: OUTPUT«NaN» | ||
14:50
kaleem left
|
|||
colomon | niecza: say 13e21 % 4e21 | 14:50 | |
p6eval | niecza v13-169-geba5eb3: OUTPUT«NaN» | 14:51 | |
colomon | well now, that's revolting | ||
moritz | perl6: say 13e21 % 4e21 | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«NaN» | ||
..rakudo 8b620e: OUTPUT«1e+21» | |||
..pugs b927740: OUTPUT«1000000000000000000000» | |||
colomon | niecza: say (13e21 % 4e21) | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«NaN» | ||
colomon | niecza: say (13e21) % (4e21) | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«NaN» | ||
colomon | I think it must be from the constant folding patch | ||
because this worked yesterday in niecza. | |||
14:53
kaleem joined
|
|||
colomon | dunno if it's worth trying to hunt it down, or if sorear++ will just look at it and realize what is wrong | 14:54 | |
moritz | niecza: my ($a, $b) = (13e21, 4e21); say $a % $b | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«1E+21» | ||
moritz | constant folding indeed | ||
colomon | moritz++ # smartness | 14:55 | |
14:55
mkramer left,
kmwallio joined
|
|||
[Coke] | I see 8 new failures since yesterday, but haven't tracked it down. | 14:56 | |
dalek | ecza: 27b68eb | (Solomon Foster)++ | lib/CORE.setting: Straightforward port of masak++'s .trans method from Rakudo ng. |
||
ecza: a43ea40 | (Solomon Foster)++ | t/spectest.data: Turn on S05-transliteration/trans.t. |
|||
colomon | niecza: say 'bit' ~& 'wise' | ||
p6eval | niecza v13-169-geba5eb3: OUTPUT«Unhandled exception: Buffer bitops NYI at /home/p6eval/niecza/lib/CORE.setting line 1075 (die @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2396 (infix:<~&> @ 3)  at /tmp/hPe44s2pLW line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setti… | ||
dalek | ast: dcb1827 | (Solomon Foster)++ | integration/real-strings.t: Fudge for niecza. |
||
ecza: 452c98b | (Solomon Foster)++ | t/spectest.data: Turn on integration/real-strings.t. |
14:57 | ||
masak | in Niecza, unimplemented features are exceptions. | 15:00 | |
:) | |||
15:00
wolfman2000 left
15:01
carlin joined
|
|||
moritz | nom: try calframe.callframe; say $!.WHAT | 15:01 | |
p6eval | nom 8b620e: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&calframe' called (line 1)» | ||
moritz | nom: try callframe.callframe; say $!.WHAT | 15:02 | |
p6eval | nom 8b620e: OUTPUT«X::NYI()» | ||
moritz | :-) | ||
jnthn | Typed exceptions :) | ||
moritz++ | |||
colomon | hmmm... does it even make sense to call a buffer bitop on two strings? | 15:03 | |
perl6: say 'bit' ~& 'wise' | |||
p6eval | pugs b927740, rakudo 8b620e: OUTPUT«bip» | ||
..niecza v13-169-geba5eb3: OUTPUT«Unhandled exception: Buffer bitops NYI at /home/p6eval/niecza/lib/CORE.setting line 1075 (die @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2396 (infix:<~&> @ 3)  at /tmp/I2Loy_et2Q line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setti… | |||
moritz | colomon: ~& is meant to be a string bitwise op, not necessarily a buffer bitwise op | 15:04 | |
but what they mean is another questions, since bitops usually have to assume a fixed bit width | |||
colomon | but... doesn't it depend on the string encoding? | ||
moritz | which strings don't have | ||
colomon: iirc the ops boil down to bit operations on the codepoint numbers | 15:05 | ||
colomon | ugh | ||
masak | TimToady usually says that string literals are allomorphic wrt Str/Buf. | 15:06 | |
moritz | which you can do just fine for & and |, but starts to get hairy for ^ | ||
masak | implementation is left as an exercise to the reader ;) | ||
colomon turns on his SEP field... | 15:07 | ||
moritz | colomon: it's turned off by default? | ||
how can you possibly survive? | |||
colomon | ;) | 15:08 | |
[Coke] | moritz: ... why do YOU care? ;) | ||
masak | [Coke]: because his field is off, duh! | ||
skids spitballs on compact structs/regex/pack/unpack | 15:09 | ||
What if<:: > metasyntax, if invoked as <::Class> treated a Class as a rule | |||
(and sucked in the number of bytes in the compact struct, assuming 8-bit) | |||
moritz | [Coke]: because I wonder how low I can tune my field, and remain as (in)sane as I am today | ||
masak | skids: why do you need to treat Class as a role for that? | ||
skids | rule, not role | 15:10 | |
The normal assignment mechanisms being used to say where to stuff it | |||
And a lookaheadbefore that could serveto validate fields if needed | |||
masak can't read :) | |||
[Coke] finds the embedded tabs not readable. | 15:11 | ||
masak | skids: there are inexplicable Tab characters (^I) in your communication. | ||
skids | Oh crap. Was pretyping and pasting. | ||
Funny they don't show up on my client. | |||
masak | phenny: sv en "tabbe"? | ||
phenny | masak: "gaffe" (sv to en, translate.google.com) | ||
masak | :P | ||
moritz | phenny: de en "plenken"? | 15:12 | |
phenny | moritz: "Plenk" (de to en, translate.google.com) | ||
LoRe | phenny: de en "kohlmeisen" | 15:14 | |
moritz | phenny: de en "kohlmeisen"? | ||
phenny | moritz: "Great Tits" (de to en, translate.google.com) | ||
[Coke] | O_o | ||
moritz | it should append (bio.) or so :-) | 15:15 | |
en.wikipedia.org/wiki/Great_Tit | |||
colomon | as opposed to silicone, moritz? | ||
moritz | colomon: as opposed to the vulgar interpretation you are thinking of :-) | 15:16 | |
skids | I was going to say what could be more "bio" than great tits, but then colomon brought up silicone. | ||
15:18
araujo left
15:20
sivoais joined
|
|||
[Coke] wonders if niecza/perl6 has a "nocritic" option to allow intentionall defined but unused constructs for, say, tests that are try to excercize a side effect. | 15:21 | ||
masak | "'Plenken' is derived as a borrowed word from the English 'blank'." -- en.wikipedia.org/wiki/Plenken | ||
[Coke]: there's #OK | |||
might work. | 15:22 | ||
niecza: my $a | |||
p6eval | niecza v13-172-g452c98b: OUTPUT«Potential difficulties: $a is declared but not used at /tmp/8eEryAM0NI line 1:------> my ⏏$a» | ||
masak | niecza: my $a #OK | ||
p6eval | niecza v13-172-g452c98b: ( no output ) | ||
masak | yup. | ||
[Coke] ponders applying that liberally to the spec tests. | |||
[Coke] guesses it's not worth it for right now. | 15:23 | ||
colomon | we really should have a roast hackathon someday and try to clean the test files up | ||
[Coke] reruns after colomon's commits: | 15:31 | ||
niecza at 96.39% | |||
15:31
rjbs joined
|
|||
rjbs | Good morning, butterfly people. | 15:31 | |
15:31
araujo joined
|
|||
rjbs | I have a question for you about rt.perl.org's perl6 queue. | 15:31 | |
masak | shoot. | ||
[Coke] | niecza: say 18513*.97-17845 | ||
p6eval | niecza v13-172-g452c98b: OUTPUT«112.61» | ||
rjbs | I am now a moderator for mail that gets reported to rt.perl.org's perl6 queue by email. | ||
masak | rjbs: you mean all bug reports, for example? | 15:32 | |
rjbs | Yes, or followups. | ||
Example email in the queue: | |||
[001] MODERATE for [email@hidden.address] | |||
From: [email@hidden.address] (via RT) [email@hidden.address] | |||
Subject: [perl #107780] Compliments of the Season. | |||
Obviously, this is spam. | |||
masak | aye. | ||
moritz | agreed. | ||
rjbs | If I delete the message, the ticket *is still there* | ||
masak | aye. | ||
rjbs | So it might just sit there, looking like ignored spam in your queues. | ||
If I approve the message, you will get the spam mail, which will alert you to go delete/reject the ticket. | 15:33 | ||
Which would you folks prefer? | |||
[Coke] | delete the mail. | ||
masak | just sit there, I think. | ||
moritz | rjbs: I'd prefer to never see that ticket | ||
[Coke] | we go through often enough that we'll see the spam sitting in the rt queue. | ||
masak | right. | ||
we don't want to inconvenience p6c with spam. | |||
rjbs | Okay, thanks. | 15:34 | |
[Coke] | I delete a few of those every week. (for p6 & tpfgrants) | ||
rjbs | I asked because in p5, we do not reliably go through new tickets yet. :-/ | ||
masak | [Coke]++ | ||
[Coke] | rjbs++ # I hate moderating. ;) | ||
rjbs | I will relate your preference to the other moderators. I wasn't 100% sure. | ||
masak | rjbs: thanks for checking. | ||
[Coke] | rjbs: we're... getting there for rakudo, but it's still not right. | ||
15:39
nornagest_ joined
15:42
nornagest left
|
|||
[Coke] | niecza: say 18513*.97-17788 | 15:51 | |
p6eval | niecza v13-172-g452c98b: OUTPUT«169.61» | ||
16:00
packetknife left
|
|||
dalek | ast: 45736a6 | coke++ | S05-transliteration/with-closure.t: niecza fudge |
16:07 | |
ecza: 82f499a | coke++ | t/spectest.data: run S05-transliteration/with-closure.t |
|||
[Coke] | (10 more) | 16:08 | |
16:09
cognominal_ left
16:10
cognominal joined
|
|||
[Coke] | sorear: S32-num/bridge.t has another 200 tests; is this something you can get running? (looks like I'd have to fudge it down to almost nothing at the moment.) | 16:13 | |
er, ../real-bridge.t | 16:14 | ||
colomon | [Coke]: that's my baby, and it's going to be tricky for nieza | 16:16 | |
niecza | 16:17 | ||
well, it might not be too awful to get the methods going. it's the operators that are thorny at the moment. | 16:25 | ||
16:25
Trashlord joined
|
|||
colomon is having one of those mystifying moments of stuff which shouldn't work working for $work | 16:27 | ||
16:28
kaare_ joined
|
|||
colomon | and when I say "moment", I mean, "morning" | 16:33 | |
16:33
kaleem left
16:38
alester joined
16:42
cognominal left
16:43
cognominal joined
16:44
LlamaRider joined
16:51
kaleem joined,
x3nU joined
16:52
spine_ left,
kaleem left
16:54
kaleem joined
16:56
zipf joined
17:00
mj41 left
|
|||
LlamaRider | rakudo: my @a=[100]; say @a[0]/2; | 17:02 | |
p6eval | rakudo 8b620e: OUTPUT«0.5» | ||
LlamaRider | help with array contexts? | ||
I want to get 50 out ;) | 17:03 | ||
tadzik | huh | 17:04 | |
colomon | rakudo: my @a=100; say @a[0]/2; | ||
p6eval | rakudo 8b620e: OUTPUT«50» | ||
tadzik | rakudo: my @a=[100]; say @a.perl | ||
p6eval | rakudo 8b620e: OUTPUT«Array.new([100])» | ||
tadzik | hehe | ||
that's right | |||
@a[0] is an array | |||
numifies to its size, which is 1 | |||
colomon | LlamaRider: the way you did it, the first element of @a was [100] | ||
LlamaRider | O_O | 17:05 | |
colomon | rakudo: my @a=[100]; say @a.perl | ||
LlamaRider | this [] notations comes back to bite me quite often | ||
p6eval | rakudo 8b620e: OUTPUT«Array.new([100])» | 17:06 | |
[Coke] | rakudo: my @a=(100); say @a.perl | ||
p6eval | rakudo 8b620e: OUTPUT«Array.new(100)» | ||
colomon | rakudo: my $a=[100]; say $a[0]/2; | ||
p6eval | rakudo 8b620e: OUTPUT«===SORRY!===Confused at line 1, near "say $a\x{1c}[0\x{1c}"» | ||
[Coke] | if you really miss something to contain the elements. | ||
colomon | stupid IRC client | ||
LlamaRider | thanks to all | 17:07 | |
I switched to () which works as in Perl 5 (in this case) | |||
jnthn | Note that you don't actually need it at all in Perl 6 | 17:08 | |
nom: my @a = 1,2,3; say @a.elems | |||
p6eval | nom 8b620e: OUTPUT«3» | ||
jnthn | [...] is the way you write an array literal, which can be useful for nested arrays too | 17:09 | |
LlamaRider | I'm just worried not to end up with a Parcel (since I never understood those fully) | ||
jnthn | LlamaRider: Parcels mostly disappear | ||
A parcel is just the thing you get when you separate a bunch of things with commas | 17:10 | ||
nom: say (1,2,3).WHAT | |||
p6eval | nom 8b620e: OUTPUT«Parcel()» | ||
LlamaRider | yeah, I was trying not to get that :) Arrays sound safer ( = i understand them) | ||
jnthn | :) | 17:11 | |
Time for some dinner, and then I should have some Perl 6 tuits :) | |||
bbiab | |||
17:12
alim_ left
17:13
alim joined
17:15
mj41 joined
17:17
alim left
17:23
mj41 left
17:24
zipf left,
zipf joined
|
|||
LlamaRider | I'm surprised one has to say log($n,2) and can't use log(:base(2),$n). Would be nice to have both (no idea if that's relevant feedback for anyone here) | 17:25 | |
tadzik | hehe, didn't we de-spec that not so long ago? :P | 17:26 | |
17:26
kaare_ left,
kaare_ joined
|
|||
colomon finally is getting the failure in his $work code he's been looking for all morning! o/ | 17:27 | ||
moritz | LlamaRider: that used to work via the general mechanism of filling positional parameters by name; we've abolished that, so now we should think about specific cases like the one you mentioned | ||
17:27
mj41 joined
17:29
simcop2387 left
|
|||
[Coke] | moritz: by having one multi with named and one with positional? | 17:29 | |
LlamaRider | thanks for the background | ||
17:30
ksi joined,
simcop2387 joined
|
|||
moritz | [Coke]: maybe that's a desired solution, or maybe we want to make the base always named. No idea. | 17:31 | |
17:31
simcop2387 left
17:33
simcop2387 joined,
cognominal left
17:34
cognominal joined,
shinobicl___ joined,
mj41 left
17:35
wtw left
17:36
zipf left
|
|||
LlamaRider | rakudo: my $a = [100]; say $a[0]/2; | 17:40 | |
p6eval | rakudo 8b620e: OUTPUT«50» | ||
LlamaRider | shortest solution to my previous issue ;) | ||
colomon | LlamaRider: I posted that one at 12:06. Not sure I'd advise it, though. :) | 17:41 | |
LlamaRider | ah, the one with the encoding problems. Btw :06 is more helpful to avoid timezone issues :) | 17:42 | |
why not advise it? It will be safer to pass $a around than @a I guess (copying a reference is light) | |||
not sure it is a reference of course... used to be in P5 | 17:43 | ||
tadzik | LlamaRider: moritz wrote a post on this year's advent calendar about references, I think | 17:44 | |
(I think it was moritz) | 17:45 | ||
17:45
zby_home joined
|
|||
colomon | perl6advent.wordpress.com/2011/12/1...nces-gone/ | 17:45 | |
17:45
zipf joined,
daxim left
|
|||
LlamaRider | on it. | 17:46 | |
17:46
Chillance joined
|
|||
PerlJam | LlamaRider: maybe you wanted binding originally? | 17:47 | |
nom: my @a := [100]; say @a[0]/2; | |||
p6eval | nom 8b620e: OUTPUT«50» | ||
LlamaRider | and again O_O | ||
PerlJam | did someone already mention that? My quick eye-ball scan didn't see it. | 17:49 | |
LlamaRider | I am sure I didn't *want* that, since I never thought about it from this angle. I wonder if this has some unexpected differences from the other ways. | ||
wasn't mentioned before, no | |||
PerlJam | LlamaRider: It occurs to me that, if you learn something here, it would make a nice blog post from the non-perl6-person-doing-perl6 point of view. | 17:51 | |
LlamaRider | Can't promise I will have the time, but I might sum up what I've been through after the p6cc is over. | 17:54 | |
you're definitely right that it is the least I can do to repay the generous tutoring I am offered here :) | 17:55 | ||
17:56
dakkar left
18:02
thou joined
18:03
alim joined,
cognominal left
|
|||
sorear | good * #perl6 | 18:03 | |
jnthn: I'm wondering if role T { }; class Foo does ::T { } should be allowed. | 18:04 | ||
18:04
cognominal joined
|
|||
moritz | nom: role T { }; class Foo does ::T { }; say 'alive' | 18:05 | |
p6eval | nom 8b620e: OUTPUT«===SORRY!===Foo cannot compose T because it is not composable» | ||
moritz | nom: role T { }; class Foo does T { }; say 'alive' | ||
p6eval | nom 8b620e: OUTPUT«alive» | ||
[Coke] | sorear: hio. | 18:07 | |
18:08
nornagest_ is now known as nornagest
|
|||
sorear | colomon: fwiw, I'm planning to write a completely original trans for Niecza (because LTM mostly) | 18:08 | |
18:10
snearch left
|
|||
colomon | sorear: cool. | 18:15 | |
masak | sorear: \o | ||
colomon | I won't put in any effort trying to make the current version handle flags, then. :) | ||
sorear | huh | 18:18 | |
oh! | |||
jnthn | sorear: Will you write it in Perl 6? :) | 18:20 | |
jnthn would be happy to have a better trans for Rakudo ;) | |||
::T - I'm dubious about what that means anywhere other than in a signature. | 18:21 | ||
18:22
zipf left
|
|||
dalek | ecza: c2021a0 | sorear++ | src/CompilerBlob.cs: Fix constant folding with large integral Nums |
18:26 | |
sorear | jnthn: well, notice that there is a T in the lexical scope | 18:27 | |
leading :: in expression context can be used to reference a type without regard to whether it has been declared yet | |||
jnthn | Ah, that | 18:28 | |
Yeah, that's sane enough too | |||
It's the uses like | |||
my ::T $x = ... | |||
That bother me a bit more | |||
Agree the thingy above shoulda probably worked. | |||
sorear | this gets used a lot in niecza to make references from modules to classes in other modules that aren't directly used | ||
dalek | ecs: d9a16d0 | coke++ | S (2 files): remove duplicated words. |
18:30 | |
18:30
pyrimidine joined
|
|||
LlamaRider | hm, i figured the [] arrays mostly, but need help with figuring out if they're actually references. Seems that they are: | 18:32 | |
rakudo: sub change ($a is copy) { push $a, 1; }; my $a = [2]; say $a; say change $a; say $a; | |||
p6eval | rakudo 8b620e: OUTPUT«22 12 1» | ||
LlamaRider | this doesn't clone the Array object, but copies over a reference, right? | 18:33 | |
moritz | right | ||
perl6: sub change ($a is copy) { push $a, 1; }; my $a = [2]; change $a; say $a | |||
p6eval | pugs b927740, rakudo 8b620e, niecza v13-172-g452c98b: OUTPUT«2 1» | ||
[Coke] | rakudo: sub change (@a is copy) { push @a, 1; }; my @a = [2]; say @a; say change @a; say @a; | ||
p6eval | rakudo 8b620e: OUTPUT«22 12» | ||
moritz | [Coke]: that's what I would have expected | ||
LlamaRider | so, those are completely real references. Now, is this something special with refs to Array objects, or are all OO objects similar? | 18:34 | |
TimToady | special to containers, more like | 18:36 | |
Hashes work the same | |||
masak | but "container" isn't a closed set of types. | ||
LlamaRider | why not make "is copy" to a $scalar throw an error? Seems awfully confusing to me. | 18:37 | |
TimToady | that's how we get a read/write copy of values | ||
otherwise it's readonly | |||
moritz | nom: sub f($x) { $x = 3 }; f(6) | ||
p6eval | nom 8b620e: OUTPUT«Cannot assign to a readonly variable or a value in sub f at /tmp/uqMZ97Sw1S:1 in block <anon> at /tmp/uqMZ97Sw1S:1 in <anon> at /tmp/uqMZ97Sw1S:1» | ||
moritz | nom: sub f($x is copy) { $x = 3 }; f(6) | 18:38 | |
p6eval | nom 8b620e: ( no output ) | ||
moritz | LlamaRider: that's the common use case | ||
LlamaRider | this use case shocks me :) you just assigned something to a (passed) constant | ||
18:38
tokuhirom joined
|
|||
LlamaRider | ah wait. got it. and then there are references, which are trickier. | 18:39 | |
18:40
rjbs left,
Moukeddar joined
|
|||
TimToady | we're trying to give implementations freedom on that level to use either pass-by-value or pass-by-reference, as long as it looks readonly | 18:40 | |
and it biases solutions toward FP style to have readonly params | 18:41 | ||
cognominal | TimToady, what do you think of irclog.perlgeek.de/perl6/2012-01-09#i_4956213 ? | 18:43 | |
18:44
tokuhirom left
|
|||
cognominal | about FP, is there a way to declare a function/method as having no side effects? | 18:44 | |
LlamaRider | "is rw" has to copy by reference. "is copy" has to copy by value (but not deeply clone). and the default is a read-only pass by reference. is that right? | ||
18:46
wolfman2000 joined
|
|||
sorear | jnthn: I was actually hoping you'd say it shouldn't be allowed. :| | 18:48 | |
note: | 18:49 | ||
std: class X does ::T { say T } | |||
p6eval | std dc62e1d: OUTPUT«ok 00:01 108m» | 18:50 | |
sorear | in STD, ::T when parsed as <typename> is always declarative, never referential | ||
jnthn wonders if there's any value in splitting the declarative and referential cases of type parsing in some way. | 18:56 | ||
TimToady | cognominal: that piece of spec is pretty ancient, and likely to need revision as we explore how syntactic defaults work for various categories | 19:05 | |
it's more there to illustrate that different categories may have different defualts | |||
*au | |||
19:11
mj41 joined
|
|||
jnthn | TimToady: After taking a look over the metamodel stuff...don't think an allmethods will be needed. Turns out that things actually get neater in some cases when I use method_table rather than methods inside the meta-model, and that it'll probably be marginally faster to boot. | 19:13 | |
TimToady: So methods can be the user-facing thing and .^mro and .^method_table can be the more "primitive" things. | |||
TimToady | \o/ | 19:14 | |
cognominal: regarding marking things as pure, I think it's the wrong default | 19:15 | ||
jnthn trundles off to S12 to see what exactly .methods is meant to do | |||
TimToady | most things should be pure, the closer you get to the FP ideal | ||
that's the C++ const failure mode, marking almost everything | 19:16 | ||
TimToady is also not sure that methods can rise to the same level of purity as mathematical functions, unless the object as a whole is immutable | 19:17 | ||
[Coke] | about 670 tests less until niecza passes rakudo. | ||
*left | |||
cognominal | C++ is a curse. I thought cursing was inappropriate in this channel. :) | 19:18 | |
TimToady | we can discuss curses though, which is fortunate for you | ||
kshannon | jnthn: on of the parsing problems with the qbootstrap comes from the NFA mergesubrule of a protoregex not being recursive, e.g. the term NFA merges term:sym<value> which merges quote which is empty... | ||
TimToady | but also, linguists don't believe words are magical that way | 19:19 | |
colomon | eh? I thought most linguists believed words *were* magical... | 19:20 | |
TimToady | we feel perfectly free to talk about words like "fuck", "shit", and "cunt" without thinking we're cursing. :) | ||
colomon | ;) | ||
jnthn | o.O | ||
:) | |||
kshannon: Oh... | 19:21 | ||
kshannon: Yes, that will be a problem. | |||
And needs fixing :) | |||
Fixing that'll fix a couple of busted things | |||
Not to mention trim more branches earlier. | |||
19:23
birdwindupbird joined,
alim left
|
|||
[Coke] | perl6: say DateTime.new(); | 19:23 | |
p6eval | niecza v13-174-gc2021a0: OUTPUT«===SORRY!===Undeclared name: 'DateTime' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die @ 2)  at /home/p6eval/niecza/src/STD.pm6 line 1143 (P6.comp_unit @ 32)  at /ho… | ||
..pugs b927740: OUTPUT«*** No such subroutine: "&DateTime" at /tmp/gKJc73E369 line 1, column 5-19» | |||
..rakudo 8b620e: OUTPUT«use of uninitialized value of type Int in string contextDateTime.new(year => , month => 1, day => 1, hour => 0, minute => 0, second => 0/1)» | |||
TimToady | I remember with amusement once when someone I know told his son that he should not use the word "frickin'", but could not bring himself to say why :) | ||
19:24
hundskatt joined,
alim joined
|
|||
masak | yeah, those euphemisms are so nasty. | 19:24 | |
TimToady | so I explained plainly that it was commonly thought to be small swearing for "fucking". | ||
they both looked at me, shocked :) | |||
masak | :P | 19:25 | |
TimToady | linguists have to get their pleasure somewhere | ||
the languages themselves are mostly a form of torment :) | 19:26 | ||
masak | I know the feeling :) | ||
jnthn | :excl exclude Cool and Any (the default) | 19:28 | |
...and presumably Mu too? | |||
TimToady | colomon: but you're also right in that linguists do believe in "magic", on one level, which they call "pragmatics" | ||
there's a famous paper called "How to Do Things With Words" | |||
it's all about phrases that actually do things, such as "I now pronounce you husband and wife." | 19:29 | ||
and "I promise" | |||
and insofar as all language is intended to have some effect on the listener, yes, it's all magical :) | 19:30 | ||
but it's also just called "effective communication" | 19:31 | ||
or in some cases "effective propaganda" :) | |||
slavik1 | TimToady: taking a dig at USSR? :P | ||
TimToady | actually, I was just talking ad hitlerium | 19:32 | |
slavik1 | lol | ||
fair enough | |||
TimToady | but we all propagandize to a lesser or greater extent | 19:33 | |
slavik1 | true | ||
TimToady | pretty much all of us want people to think better of us than we think of ourselves | ||
slavik1 | TimToady: I disagree, everyone thinking better of me adds to my list of things I have to work on. :( | 19:34 | |
which I am not supposed to be responsible for. | |||
TimToady | heh | ||
well, I did hedge it with "pretty much", so maybe you're the only exception :) | |||
slavik1 | I am sure I am not the only one, but point taken. :) | 19:35 | |
TimToady | well, I did hedge it with "maybe", so it's possible you're not the only one :) | 19:36 | |
19:37
Moukeddar left
|
|||
masak | I see what you're doing there. | 19:37 | |
TimToady bows on some semantic level or other | 19:38 | ||
[Coke] | perl6: KeyHash.new(); | 19:40 | |
p6eval | niecza v13-174-gc2021a0: OUTPUT«===SORRY!===Undeclared name: 'KeyHash' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die @ 2)  at /home/p6eval/niecza/src/STD.pm6 line 1143 (P6.comp_unit @ 32)  at /hom… | ||
..pugs b927740: OUTPUT«*** No such subroutine: "&KeyHash" at /tmp/7RPef_2m5l line 1, column 1-14» | |||
..rakudo 8b620e: ( no output ) | |||
moritz | nom: saz KeyHash.^parents | 19:41 | |
p6eval | nom 8b620e: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&saz' called (line 1)» | ||
moritz | nom: say KeyHash.^parents | ||
p6eval | nom 8b620e: OUTPUT«Iterable() Cool() Any() Mu()» | ||
[Coke] | rakudo: my %a = KeyHash.new(); %a{1} = True; say %a.keys; %a{1} = False; say %a.keys; | ||
p6eval | rakudo 8b620e: OUTPUT«Method 'iterator' not found for invocant of class 'KeyHash' in method reify at src/gen/CORE.setting:4283 in method gimme at src/gen/CORE.setting:4647 in method eager at src/gen/CORE.setting:4622 in method STORE at src/gen/CORE.setting:5313 in block <anon>… | ||
jnthn | It's NYRI, I think | 19:42 | |
moritz | nom: say KeyHash.^methods(:local) | ||
p6eval | nom 8b620e: OUTPUT«of» | ||
moritz | yes, looks like a stub to me | 19:43 | |
[Coke] wonders what the point of the KeyHash is. | |||
TimToady | sorear: re irclog.perlgeek.de/perl6/2012-01-09#i_4954903, another possibility is to automatically derive a new Regex slang for the current lexical scope that derives from the outer Regex slang | 19:44 | |
then we could dispense with the &foo requirement | 19:45 | ||
19:45
Vlavv_ joined
|
|||
moritz | and use that only for regex literals outside of grammars? | 19:47 | |
TimToady | [Coke]: "A C<KeyHash> automatically deletes any key whose value goes false." | 19:48 | |
moritz: yes, a declared grammar doesn't need to make an anonymous derivation | |||
I suppose this would only apply to named regexes, since anon regexes could be mixed in to other things | 19:49 | ||
moritz | TimToady: something in me says "that's wrong", but that might be because my mental model of slangs are wrong | 19:50 | |
somehow I thought a slang consists of rules for parsing the current language | |||
jnthn too | |||
Well | |||
TimToady | well, there's a | ||
jnthn | Something in the current language braid | ||
moritz | not something that a user-space regex is supposed to call back to (unless it wants to parse Perl 6) | ||
TimToady | Regex slang embedded in the MAIN slang | 19:51 | |
a regex with a name can be considered declarative, and mixed in at compile time | |||
there could be compile-time mixins for other slangs in the current braid as well, I suppose | 19:52 | ||
that's essentially what things like Q:c are already doing | 19:53 | ||
but those scope to the current quote, not the rest of the lexical scope | |||
[Coke] | TimToady: it also says that .elems is the sum of all the values, neither of which seems awesome enough to be a core data type. | ||
so I am wondering what problem they were trying to solve. | 19:54 | ||
TimToady | the postulated 'quote' keyword could be considered a to-end-of-scope mixin of a new quote construct | ||
moritz | hey, if somebody wants a bit of fun, implement the last algorithm from www.keithschwarz.com/darts-dice-coins/ for Hash.roll (or better EnumMap.roll) | 19:55 | |
and add that to the settings of both rakudo and niecza | |||
TimToady | [Coke]: it's just a generalization of mutable sets, bags, and similar values that may include fractional amounts, such as how much oil do you have in a set of oil tanks? | 19:56 | |
always assuming the oil tanks blow up when they get empty :) | 19:57 | ||
it's also possible that KeyHash is slightly mis-specced, confusing false with default | 19:58 | ||
[Coke] | niecza: my $a is Numeric; | ||
p6eval | niecza v13-174-gc2021a0: OUTPUT«===SORRY!===Trait name not available on variables at /tmp/Lwg2MmPHaD line 1:------> my $a is Numeric⏏;Potential difficulties: $a is declared but not used at /tmp/Lwg2MmPHaD line 1:------> my ⏏$a … | ||
[Coke] | sorear: that will probably block some of the type roles tests. | 19:59 | |
moritz | fwiw I'll spend most of tomorrow traveling, and AFK | ||
TimToady | we probably want KeyHashes that can contain false values, so it should really be formulated in terms of the default value, which might be undefined | ||
it's just that a Set has a default value of False, and a Bag has a default value of 0 | 20:00 | ||
but we don't have hash/array defaults totally thrashed out just yet | |||
and it may be that the generalization is not KeyHash, but my %stuff is default(42) is autopruned; or some such | 20:01 | ||
20:02
bluescreen10 joined
|
|||
TimToady | or... is default(42, :auto) | 20:02 | |
20:03
birdwindupbird left,
jakky joined
|
|||
skids | Wouldn't a hash/array logically default to the default of its value type, rather than having its own default? | 20:03 | |
TimToady | that's the default default, yes | 20:04 | |
20:04
LlamaRider_ joined
|
|||
skids | :-) | 20:04 | |
masak | I for one would like to experiment not only with autopruning, but with many useful data structures (stacks, queues, heaps, trees) as backend implementations to '@' and '%' variables. | ||
TimToady | the autoprune generalization probably wants a smartmatch, not just a single value | 20:05 | |
so fractional bags delete when * <= 0, maybe | |||
maybe that's the wrong approach though | 20:06 | ||
jnthn | .oO( I for one welcome our data structure overlords ) |
||
20:07
LlamaRider left
|
|||
skids | masak: Think "backend implementation of several @'s or %'s at the same time in one data structure." | 20:07 | |
20:07
cognominal left,
cognominal joined
|
|||
TimToady | if we have a value type that's a subset type, then if the value is outside the subset, we choose either error or deletion, depening on whether it matches the default | 20:07 | |
my Positive %fracbag is default(0) # delete if 0, complain if <0 | 20:08 | ||
that seems cleaner to my clouded brane | 20:09 | ||
masak | 'fracbag' sounds like it would be a severe insult in Battlestar Galactica. | 20:10 | |
TimToady | how 'bout %auxtank that you discard when empty | 20:11 | |
assuming airplane semantics :) | |||
jettison, I should say | |||
skids | Last time I tried taking a hash of all hash keys during hash accesses in parrot (running rakudo) something like 90% of hash accesses were for hashes from a family with about 10 or 20 distinct key states. So essentially there were tens of thousands of copies of the same hash keys with different values. (Though jnthn++'s REPR stuff will also be attacking that problem.) | ||
masak | doy: hey! I just noticed you're making Moose releases, too! doy++ | 20:12 | |
TimToady | you mean you were using a %hash[Str] (the default) rather than %hash[Enum] (or some such | ||
we're also sorely lacking non-string hash keys | 20:13 | ||
20:13
Chillance left
|
|||
TimToady | I have most of translation of Set.pm assuming that we can have hash keys based on WHICH | 20:13 | |
20:13
Chillance joined
|
|||
skids | Just saying an implementation of "lots of little hashes with same keys" on the back end might speed up naive programs. | 20:14 | |
TimToady | that's turning common strings into symbols, or some such, internally | ||
p5 actually does some optimization on that wise | |||
the trick to moving beyond string hashes is that you really only need a hash of the *identity* | 20:15 | ||
when you understand the identity, you can have a hash of it | 20:16 | ||
I suspect .WHICH is usually the right default for most entities, assuming we can get a hash of it | 20:17 | ||
dalek | ast: a40c3de | jnthn++ | S12-introspection/definite.t: Tests for .DEFINITE. |
||
ast: 72d6c38 | jnthn++ | S12-introspection/methods.t: Update methods.t for :excl semantics, new proto semantics and scatter .gist to avoid some warnings. |
|||
ast: 6529af0 | jnthn++ | S12-introspection/parents.t: Scatter some :all in parents.t to get it to pass again. |
|||
kudo/nom: 0838f41 | jnthn++ | src/ (2 files): Implement .DEFINITE. |
20:18 | ||
kudo/nom: b1d3c7c | jnthn++ | src/Perl6/Metamodel/ (4 files): Refactor to use method_table in place of methods inside of MOP. |
|||
kudo/nom: 1f302f8 | jnthn++ | src/ (6 files): Implement :excl and :all for methods, attributes and parents. Make :excl the default. |
|||
kudo/nom: b21d28b | jnthn++ | src/ops/perl6.ops: Fix .DEFINITE for container case. |
|||
kudo/nom: e65b6b1 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm: Fixes to .is_dispatcher and .is_generic. |
|||
kudo/nom: 783b468 | jnthn++ | t/spectest.data: Run S12-introspection/definite.t. |
|||
masak | what's this .DEFINITE of which you speak? | 20:19 | |
jnthn | See S12 | ||
TimToady | what :D actually checks | ||
masak | ah. | ||
sorear wanders back | 20:20 | ||
TimToady | oh, hey, moritz++ already talked about slang mixins; I should finish backlogging before commenting in my current delirous blathery state | 20:23 | |
delirious, even | 20:25 | ||
dalek | ast: fc605cb | jnthn++ | S12-introspection/definite.t: Test that DEFINITE really is a macro. |
20:26 | |
ast: 7c55366 | jnthn++ | S12-introspection/parents.t: Some tests for :excl, both explicit and as the default. |
|||
jnthn | That's one less thing for TimToady++ to complain about. :) | 20:27 | |
TimToady can find something else now... | |||
masak | jnthn++ | ||
jnthn | TimToady: I expected nothing less :P | ||
tadzik | jnthn: do we pass that macro one? | ||
jnthn | tadzik: ? | 20:28 | |
Yes | |||
tadzik | huh | ||
jnthn | tadzik: You meant the test I just added | ||
? | |||
tadzik | yeah. For a moment I thought "we pass that, so we must have macros" | 20:29 | |
jnthn | no, no. It's wired in Actions.pm. | ||
tadzik | I see | ||
masak | I'm not sure how one'd *define* such a macro, but... :) | ||
sorear | We do have macros. Just not user-defined macros. | ||
masak | that's the same problem as with .WHAT and the others. | ||
[Coke] | 01/09/2012 - niecza at 96.46% (sorear++'s fix earlier today) | ||
sorear | [Coke]: any remaining failures? | 20:30 | |
TimToady | any sufficiently advance macro is indistinguishable from a primitive... | ||
masak | ;) | ||
[Coke] | 5 more: gist.github.com/1584782 | ||
masak | maybe they're just 'macro postfix:<.WHAT>' -- but ISTR there was some problem with that notion... | ||
I think when Niecza reaches Rakudo's number of spectests, the Mayan calendar will just go "oh, frig it" and end early. :P | 20:31 | ||
skids | What's a "mutator" for the purposes of perlcabal.org/syn/S09.html#Compact_structs 3rd paragraph? | 20:32 | |
dalek | kudo/nom: de59b4b | jnthn++ | docs/ChangeLog: Start a ChangeLog for the month, so we don't have it all to do right before the next release. |
||
masak | colomon++ [Coke]++ tadzik++ PerlJam++ # tutoring LlamaRider_ earlier | 20:33 | |
LlamaRider_ | do you have some sort of karma system in the channel? (trying to figure out the ++ mnemonics) | 20:34 | |
tadzik | karma LlamaRider_ | ||
aloha | LlamaRider_ has karma of 0. | ||
tadzik | karma LlamaRider | ||
aloha | LlamaRider has karma of 0. | ||
tadzik | LlamaRider++ # for the new road of life | ||
LlamaRider_ | lol | 20:35 | |
TimToady | skids: any method that modifies any of the attributes | ||
[Coke] | masak: ? I did no such thing, I was just double checking stuff. ;) | ||
20:35
LlamaRider_ left
|
|||
masak | oh, ok. | 20:35 | |
[Coke]-- | |||
;P | |||
TimToady | it might be better to declare that it's a value type, and then try to catch mutators and complain | ||
20:36
LlamaRider joined
|
|||
dalek | ast: 3fc0720 | jnthn++ | S14-roles/anonymous.t: Fudge for Rakudo (curiously, Niecza and Rakudo are consistent here - maybe the test is dubious. |
20:36 | |
skids | Hrm. Less flexible than I thought it would be... the reasons are probably over my head. | 20:37 | |
TimToady | esp since whether it's a value type changes how its identity is calculated | ||
dalek | p/qbootstrap: f500829 | kshannon++ | .gitignore: Make git ignore all *.pbc |
||
p/qbootstrap: e4fe3ad | kshannon++ | src/QRegex/NFA.nqp: The enumcharlist can be negated. Fix the NFA building to pay attention to that. |
|||
TimToady | trying to deduce value-ness from the absense of mutators now seems like a mistake | ||
dalek | kudo/nom: 6bf68d0 | jnthn++ | t/spectest.data: Run S14-roles/anonymous.t. |
20:39 | |
masak | TimToady: +1 | 20:40 | |
skids | I dunno it just strikes me that changing an attribute should just be treated like writing a new value to the entire set of attributes. | 20:41 | |
[Coke] | jnthn: there are a lot of places where I see "nom regression" and "niecza todo" on the exact same tests in the spec. | 20:42 | |
jnthn | Curious :) | ||
TimToady | skids: at which point you either have a mutable type container, or you've violated the identity of the value type | 20:43 | |
skids | I'm not immersed enough in the vocabulary to converse intelligently I guess. | 20:46 | |
TimToady | well, there's far too much vocabulary swirling around this subject, but to the first approximation, if something is mutable, it means it takes its identity from its containerness, which can be thought of as a location somewhere | 20:53 | |
if something is immutable, it takes its identity from its own value, and has the same identity wherever it finds itself | 20:54 | ||
copying a value doesn't make two different values | |||
5 is the same everywhere, if you ignore representations | 20:55 | ||
awwaiid | wherever you go, there you are? | ||
TimToady | well, buckaroo banzai is kind of a constant in that sense, yes | ||
20:56
kaleem left
|
|||
TimToady | but that's really more the mystery of a container acting as a value, whose identity is "buckaroo banzai" wherever he goes | 20:56 | |
two object hashes keyed on buckaroo banzai are keyed on the same person, not on two different representations of the same person | 20:57 | ||
buckaroo banzai has only one .WHICH | 20:58 | ||
masak | good night, #perl6. | ||
TimToady | o/ | ||
kshannon | Well with a NFA recursive proto hack we now pass a lot more of the test suite: gist.github.com/1584871 | 20:59 | |
jnthn | kshannon++ !! | ||
TimToady | yay | ||
jnthn | kshannon: How...hacky? ;) | ||
skids | That much I get, it's the "value type" --> immutable (?) I was missing. | ||
sorear | [Coke]: the first three were missed earlier | ||
kshannon | Needs to be redone with a proper api. I'm just not sure what that api should be. | 21:00 | |
But as a proof that the missing recursiveness was most of the parsing errrors it performs brilliantly. | 21:01 | ||
dalek | ast: 503fe00 | jnthn++ | S32-array/delete.t: Fudge S32-array/delete.t for Rakudo (same tests Niecza has fudged). |
21:02 | |
ecza: 7bc2d96 | sorear++ | lib/CORE.setting: infix:<ne> also needs to handle junctions internally, gets three tests back |
21:03 | ||
kudo/nom: b281b21 | jnthn++ | src/core/Hash.pm: Handle various other cases of Hash.delete. |
|||
kudo/nom: f4b327b | jnthn++ | t/spectest.data: Run S32-hash/delete.t. |
|||
kudo/nom: c827edc | jnthn++ | src/core/Array.pm: Implement Array.delete (based on ng code, but with various tweaks and updatings). |
|||
kudo/nom: 38165a5 | jnthn++ | t/spectest.data: Run S32-array/delete.t. |
|||
kshannon | If we can work out why the subclassing isn't working I think we'll be very close to a working QRegex NQP | 21:04 | |
sorear | jnthn: what do you think of S14-roles/anonymous.t:39? | ||
jnthn: it's getting confused by niecza's "3 but Str("xyz")" implementation | |||
jnthn | sorear: Should be workable | 21:06 | |
sorear: We can tell the difference between a sub and a type | |||
TimToady | kshannon: perhaps you need a way to examine the new computed lexer to see if it reflects the changes correctly | ||
jnthn | sorear: I'm not sure how it's conflicting because role_generator lives in the lexpad as &role_generator, no? | 21:07 | |
sorear | jnthn: but what if the sub returns a type when called without arguments? | ||
jnthn | oh, wait | ||
:) | |||
sorear | jnthn: niecza is compiling it as &infix:<does>($a, &role_generator(), :value("hi")) | ||
jnthn | sorear: Right. | 21:08 | |
sorear: But role_generator isn't a known type | |||
sorear: So it's possible to disambiguate that quite easily, I'd imagine. | |||
kshannon: Oh, I know why that isn't working | 21:09 | ||
kshannon: rt.perl.org/rt3/Ticket/Display.html?id=107746 | |||
kshannon: It's that - there's a case just like it package_def | |||
colomon | sorear: when you get a chance, you should probably look at the failures in t/spec/S03-junctions/autothreading.t -- I based on when it stopped working, I'm guessing constant folding related. | 21:10 | |
sorear | colomon: I just fixed them | 21:11 | |
colomon | sorear++ | ||
colomon has been cleaning the nasty crevices of the kitchen. :( | |||
dalek | ast: 04cea6b | sorear++ | S (2 files): Fudge an accidental pass and a regression-with-cause for niecza |
21:13 | |
[Coke] | colomon: we have some of those. you should come over, I'll bier you. ;) | ||
colomon | [Coke]: no thanks, once a decade is about enough for my taste. | 21:14 | |
[Coke] | sorear: "accidental pass" - does that make a passing TODO? | ||
sorear | [Coke]: no, it switched back to a fail with the constant folding changes | ||
jnthn | afk for a bit | 21:15 | |
kshannon: BTW, if you want to pass over your protoregex/NFA patch, I'd be happy to look at the API side of it. Or feel free to hack on it yourself if you're having fun with it :) | |||
jnthn really gone for a while | |||
21:17
Exodist joined,
spine joined,
spine left
21:18
spine joined
|
|||
[Coke] | sorear: ah. thanks. | 21:22 | |
21:24
fsergot left
21:26
alim left
21:29
PacoAir left
21:32
zjmarlow joined
21:33
xinming joined
21:34
MC91 left,
MC91 joined
21:38
Trashlord left
21:39
xinming left
|
|||
LlamaRider | jnthn: I mentioned I was scared of not understanding Parcels before. I got a Parcel by accident in one of my subs and tried to do a Zen slice on it. Took me a while to figure out I can't do that, since I had no clue I was working with a Parcel there :) | 21:41 | |
rakudo: my Parcel $a = (1,2); say $a[]; | |||
p6eval | rakudo 38165a: OUTPUT«1 2» | ||
LlamaRider | ... or I need to update? | ||
I am getting "Not enough positional parameters passed; got 1 but expected 2" | 21:42 | ||
yep. seems I need to update. | |||
21:43
PacoAir joined
21:47
kaare_ left
21:53
bluescreen100 joined
21:58
alester left
21:59
arlinius left,
arlinius joined
|
|||
jnthn | LlamaRider: That bug was fixed recently :) | 22:00 | |
LlamaRider | is it currently easy to update rakudo? | 22:01 | |
22:01
skids left
|
|||
jnthn | LlamaRider: How did you get your Rakudo build? | 22:01 | |
If you're just building from git, then just "git pull", then re-do the build steps | 22:02 | ||
LlamaRider | exactly how i did it. let me try | ||
boy that build takes a while :) | 22:09 | ||
22:09
wolfman2000 left
|
|||
jnthn | yeah...working on improving that. :) | 22:11 | |
LlamaRider | works! :) | 22:12 | |
jnthn | yay! :) | 22:13 | |
LlamaRider | shame that I had to run into the bug though... took a while to find :D | 22:14 | |
good job on fixing it :) | |||
22:15
tokuhirom joined
22:19
tokuhirom left
|
|||
[Coke] | # 01/09/2012 - niecza at 96.13% (after jnthn's commit fest) | 22:25 | |
sorear | jnthn: Do you think it's reasonble in the short term to make class Foo does ::My::Role carp? | 22:27 | |
jnthn | sorear: That's all Rakudo does at the moment :) | ||
22:28
saberman_3 joined,
saberman_3 left
|
|||
jnthn | phenny: tell moritz oops, the setting compilation bustage was not anything to do with moving the temporal ops. It was to do with the sleep change that came in the previous commit. | 22:30 | |
phenny | jnthn: I'll pass that on when moritz is around. | ||
jnthn | phenny: tell moritz well, the rtype bit anyway | ||
phenny | jnthn: I'll pass that on when moritz is around. | ||
dalek | kudo/staged-setting-fail: 664f46b | jnthn++ | src/core/control.pm: Work around pir::... limitation. |
||
22:35
mj41 left
22:38
Chillance left
22:40
pyrimidine left
22:43
nornagest left
22:44
icwiener left
22:52
donri left
|
|||
tadzik | is there a clean way to do &some_sub.=wrap()? | 22:54 | |
I get Cannot assign to a non-container. A bug maybe? | |||
jnthn | tadzik: .wrap already is in place. | ||
tadzik | oh, ok | 22:55 | |
that was my first thought too, maybe I'm doing something wrong | |||
dalek | kudo/staged-setting-fail: ab92aff | jnthn++ | src/Perl6/ (2 files): Fix for the 'Sub doesn't have an SC' issue - CORE and CORE2 both compile now. |
22:56 | |
jnthn | nom: sub foo() { say 2 }; &foo.wrap({ print 4; callsame; }); foo() | ||
p6eval | nom 38165a: OUTPUT«42» | ||
tadzik | nom: &foo.wrap({ print 4; callsame; }); sub foo() { say 2 }; foo() | 22:57 | |
p6eval | nom 38165a: OUTPUT«42» | ||
tadzik | mkay | ||
jnthn | phenny: tell moritz fixed the other bug you ran into too. Note - please can we call what you're called CORE2 as CORE, and then call the more primitive one something like PRIMITIVES? :) | ||
phenny | jnthn: I'll pass that on when moritz is around. | ||
jnthn | (Otherwise implementing CORE:: will be hell :)) | ||
tadzik | nom: &foo.wrap({ callsame + 1 }); sub foo() { 2 }; say foo() | 22:59 | |
p6eval | nom 38165a: OUTPUT«===SORRY!===CHECK FAILED:Calling '_block18889' will never work with argument types (Mu) (line 1) Expected: :()» | ||
tadzik | nom: &foo.wrap({ callsame() + 1 }); sub foo() { 2 }; say foo() | ||
p6eval | nom 38165a: OUTPUT«3» | ||
23:05
ksi left
|
|||
jnthn | sleep & | 23:05 | |
23:06
snearch joined
23:07
MC91 left
23:13
zjmarlow left
23:15
Trashlord joined,
skids joined
23:16
PacoAir left
23:18
cooper joined
23:26
Trashlord left
|
|||
tadzik | nom: &foo.wrap({ callsame() + 1 }); sub foo() { return 2 }; say foo() | 23:28 | |
p6eval | nom 38165a: OUTPUT«3» | ||
sorear | I wonder if Str:D(Cool:D)should be allowed | ||
LlamaRider | good night ^^ | 23:29 | |
23:29
LlamaRider left
23:44
zjmarlow joined
|
|||
tadzik | ohh | 23:44 | |
exported subs don't get wrapped from inside the module | |||
gist.github.com/1585730 bug or feature? | 23:46 | ||
23:47
snearch left
|
|||
tadzik | S11 uses the word "binding" when it comes to exportation, this looks more like copying | 23:51 |