00:01 Chillance left, cognominal left 00:04 cognominal_ left 00:06 adu joined
skids Probably it's more useful to throw the user's failure, whether the throw is immediate on typecheck, or whether the failure is passed through lazily, either way. 00:10
diakopter pmichaud: on the latest rakudo, I'm getting some failed spectests, and some loop forever eating all my memory 00:13
owait. 00:14
[Coke] +# 07/31/2012 - rakudo++ (22941); niecza (89.88%); pugs (40.99%)
diakopter I'm still on toqast branch..... oops.
[Coke] huh. the pugs failures on the specrun... vanished.
p: say 40.99/89.88 00:15
p6eval pugs: OUTPUT«0.4560525144637294170004450378282153983089␤»
[Coke] niecza: 8 failures; rakudo: 3
p6eval niecza v19-15-g051783d: OUTPUT«===SORRY!===␤␤Two terms in a row at /tmp/q0Y6oAArXq line 1:␤------> 8 ⏏failures; rakudo: 3␤␤Parse failed␤␤»
skids
.oO(evalbot gets the colon)
00:18
[Coke] I think that's the 2nd time I've done that. whoops. 00:19
dalek ecs: 12ee078 | larry++ | S05-regex.pod:
relationship of :sigspace with %

The rules follow from the way sigspace is enabled by previous matcher. fixes #22
00:21
diakopter TimToady: signicant typo 00:22
diakopter slowly races to fix.. 00:23
TimToady now I have to figure out how to implement it in STD as specced 00:25
basically ms/ <atom> * / needs to turn into / [<atom><.ws>]* / 00:26
adu woah 00:27
TimToady and ms/ <atom>* / turns into / <atom>* <.ws> 00:28
adu I would expect the latter
the former is unexpected
TimToady well, it's either that or force everyone to write [<atom> ]+ % ',' al over the place 00:29
*all
dalek ecs: 00da791 | u11++ | S05-regex.pod:
S05 - insignicant typo
TimToady I think <atom> +% ',' works better
diakopter hrm. how am I now named u11
oh. 00:30
TimToady but it means overhauling STD not to treat sigspace as its own atom 00:32
std: / :s <ident> * / 00:33
p6eval std f43a358: OUTPUT«ok 00:00 41m␤»
TimToady I'm a little surpised that parses
00:33 UncleFester6 joined
diakopter nqp: my @a := [[]]; say(@a); 00:34
p6eval nqp: OUTPUT«1␤»
benabik r: my @a = [[]]; say(@a) 00:35
p6eval rakudo c1bfbb: OUTPUT«␤»
diakopter r: my @a := [[]]; say(@a.perl); 00:36
p6eval rakudo c1bfbb: OUTPUT«Array.new([])␤»
diakopter r: my @a := [[[]]]; say(@a.perl);
p6eval rakudo c1bfbb: OUTPUT«Array.new([[]])␤»
diakopter heh
[Coke] r: r: my @a = [[]]; say(+@a);
p6eval rakudo c1bfbb: OUTPUT«===SORRY!===␤Confused␤at /tmp/OJK4HLivLg:1␤»
[Coke] r: my @a = [[]]; say(+@a);
p6eval rakudo c1bfbb: OUTPUT«1␤»
00:38 tokuhiro_ joined
diakopter uses 3 nested gathers/take for something; whee 00:42
colomon diakopter++ 00:46
00:47 cognominal_ joined
[Coke] colomon,sorear: gist.github.com/3222097 00:47
I cannot remember current fudging rules, so I leave it to you.
colomon oh, right, forgot to finish those changes....
diakopter r: say join(" a ", gather { for [1,2] { take join(" $_ ", gather { for [3,4] { take join(" $_ ", gather { for [5,6] { take "$_" } }) } }) } }) # halp 00:49
p6eval rakudo c1bfbb: OUTPUT«5 6␤»
diakopter r: say join(" a ", gather { for (1,2) { take join(" $_ ", gather { for (3,4) { take join(" $_ ", gather { for (5,6) { take "$_" } }) } }) } }) # halp 00:50
p6eval rakudo c1bfbb: OUTPUT«5 3 6 1 5 4 6 a 5 3 6 2 5 4 6␤»
00:52 raiph joined
diakopter doesn't seem right to me 00:52
oh hm, it's right 00:53
nm; sry
dalek ast: 88d6e1d | (Solomon Foster)++ | S32-str/substr.t:
Fudge for niecza.
00:55
ast: fedb957 | (Solomon Foster)++ | S05-interpolation/regex-in-variable.t:
Fudge for niecza.
01:01
01:03 scott___ joined
TimToady course now I've *really* broken STD: Unrecognized regex metacharacter < (must be quoted to match literally) 01:07
01:07 tokuhiro_ left
diakopter uh oh; do we now have to go through gimme5 again? 01:08
dalek ast: f5b1f2e | (Solomon Foster)++ | S02-lexical-conventions/comments.t:
Fudge for niecza.
ecza: ddf93f9 | (Solomon Foster)++ | t/spectest.data:
Turn off obsolete lcfirst and ucfirst tests.
01:09
TimToady nah, it's not that broken
TimToady crosses his fingers 01:10
diakopter std: /a***/ 01:16
p6eval std f43a358: OUTPUT«Can't bless non-reference value at CursorBase.pm line 1163.␤FAILED 00:00 41m␤»
diakopter O_O 01:17
std: /a/ 01:30
p6eval std f43a358: OUTPUT«Can't bless non-reference value at CursorBase.pm line 1163.␤FAILED 00:00 41m␤»
diakopter :J
01:44 cognominal_ left 01:46 Entonian joined
diakopter sorear: what makes you think the nobootstrap branch has failed? I'm curious what insurmountable difficulties you've struck 01:54
sorear diakopter: I can't think of any way to move the parser forward
01:55 Entonian left
diakopter forward.. on what axis 01:56
(I mean, I assume you don't mean forward in the input) 01:58
(or do you merely mean make progress on the parser?) 02:01
sorear I merely mean progress 02:02
there are ... issues ... because the parser is written in Perl 6
diakopter my first thought is the hardest problem will be mimicking the continuable RxFrame 02:03
.. or were you planning to use RxFrame 02:06
(and the trampoline) 02:07
02:08 lucas_ left
pmichaud TimToady: thanks for speedy issue #22 update 02:09
now I have to implement it also :)
sorear diakopter: I was kind of thinking of using RxFrame 02:10
something broke in my head and I started ranking designs in a non-transitive way
design 2 beats 1, 3 beats 2, 4 beats 3, 5 beats 4, 6 beats 5, but 6 is identical to 1 02:11
I stopped when I realized I was going in circles
diakopter oh.
I've experienced that a few times 02:12
except I usually don't notice I'm looping until a few times around the cycle
sorear: why would niecza not have a future just because the nobootstrap branch currently appears ill-fated 02:15
(I mean, what hope were you pinning on the nobootstrap branch?) 02:16
sorear diakopter: macros, slangs, fast startup
diakopter sorear: I suspect at least one of the "beats" in "design 2 beats 1, 3 beats 2, 4 beats 3, 5 beats 4, 6 beats 5, but 6 is identical to 1" has another interpretation 02:17
I'd be curious to hear about those designs 02:18
pmichaud I think I should stop asking questions; every time I do, the spec changes. :) 02:20
on the other hand, when people ask "why is Perl 6 taking so long", I guess we can say "it's Pm's fault." :-P
diakopter Perl 6: where our standards are so high, we keep tweaking the standards. 02:22
sorear diakopter: ok 02:24
diakopter: this will be a bit rambly, I apologize in advance 02:25
there are two major goals here:
- .net metadata is demand-loaded using C code and is generally a lot more efficient than trying to load our Perl6 metadata, so reducing the amount of P6 code in the compiler will speed up starting 02:26
- using a Perl 6 compiler requires isolating the compiler from user code in order to make bootstrapping not explode; the isolation layer makes it impossible for things like slangs and 'is parsed' macros to link directly into the parser, and is itself a large amount of awkward to maintain code 02:27
in the nobootstrap branch, I've already moved almost all of the compiler midend to C# 02:28
the parser, however-
we need the parser to be implemented using RxFrame/Cursor in order for it to integrate with user macros
there are then a couple choices
* hand written RxFrame/Cursor parser 02:29
* use STD, but write a MiniParser that can parse about the same fraction of Perl6 as gimme5
* use STD, and do bootstrapping just for STD
* translate a minimal subset of STD to C# and have it dynamically parse the rest of itself as augments 02:30
complicating issues include coping with binary-incompatible changes to the runtime support code
__END__ 02:31
diakopter hm
what are the detriments to option #2 02:33
slash relative costs 02:34
er, option #2, 1-indexed 02:35
02:36 Psyche^ joined 02:38 mikemol joined
sorear having to design a parser, mostly 02:39
02:39 UncleFester6 left
sorear questions like whehter to bring in something like 'jay' and how much to reuse the regex mident 02:39
EBRAINOVERFLOW
02:40 Patterner left, Psyche^ is now known as Patterner
diakopter goes to read a bit about Jay 02:40
sorear all I really know about jay is that mcs uses it 02:41
[Coke] pmichaud: I'd blame larry, not you. If he'd just get the spec right /first/, we could go much faster. ;) 02:42
02:42 cognominal joined, crab2313 joined
[Coke] ... I think my stomach just made an angry birds noise. wtf? 02:43
02:44 gongyiliao joined
diakopter sorear: oh. berkeley yacc to C# 02:44
sorear: I asked about option #2 because it was the option I preferred and planned to use ... several times (in several abortive projects) 02:48
like, the minimal subset of P6 in which STD *can be* reasonably readably/concisely written 02:50
... as strongly-typed as possible 02:51
strongly/primitively
'course, that'd be a lot of work. 02:52
(to get an edition of STD like that) 02:53
benabik diakopter: something like NQP?
02:53 sftp left
diakopter benabik: NQP will be quite close once it gets native/primitive locals/lexicals 02:53
and compact arrays 02:54
it already has native attributes (yay) 02:55
02:57 orafu left 02:59 orafu joined
diakopter benabik: I assume you mean NQP's subset of P6, not the NQP implementation. .. because we're talking about writing a parser for a language implementation written in C#.. (not looking for an existing parser) 03:00
03:01 cognominal left
sorear nqp: my int $x; 03:01
p6eval nqp: ( no output )
sorear nqp: my int $x := 1; my int $y := 0; while ($y < 20) { say($x); $x := $x * 1000; $y := $y + 1; } 03:03
p6eval nqp: OUTPUT«1␤1000␤1000000␤1000000000␤1000000000000␤1000000000000000␤1000000000000000000␤1000000000000000000000␤1000000000000000000000000␤1000000000000000000000000000␤1000000000000000000000000000000␤1000000000000000000000000000000000␤1000000000000000000000000000000000000␤100000000000000…
sorear wonders if nqp ints are bigints now
diakopter ah, I didn't know it got them
sorear: does option #3 involve viv? 03:05
sorear probably not, that's an idea I had not considered 03:08
diakopter one of the options I considered was to write a (C in my case) emitter in viv
03:10 crab2313 left
diakopter (but alas, merely pipe dreams..) 03:13
03:14 crab2313 joined 03:25 lue joined
benabik diakopter: Just meant to point out the similarities. :-) 03:34
03:54 crab2313 left
skids What's the specced behavior of something like int8(256)? A failure, or does that constitute "treating it as an object" and result in an Int? 03:55
sorear skids: per spec it has to coerce to int8, and native types don't support failures 04:00
so it either coerces to int8 somehow, or dies 04:01
I don't think the actual method of coercion is specced
it probably shouldn't be, for the same sorts of reasons that led C to not spec signed overflow
skids sorear++. That sounds like an interesting dilemma :-) 04:03
04:15 kaare_ joined 04:23 telex left, telex joined 04:29 skids left 04:34 telex left 04:36 telex joined 04:51 SamuraiJack joined 04:56 alc joined 05:11 alc left 05:26 alc joined 05:43 SamuraiJack left
moritz \o 05:43
05:46 adu left 05:52 wtw joined 05:59 birdwindupbird joined 06:09 telex left 06:10 telex joined 06:11 kaleem joined
arnsholt o/ 06:12
06:21 kaare_ left 06:30 alc left 06:34 thou left, cognominal joined 06:36 cognominal left
masak morning, #perl6 06:40
sorear o/ masak 06:44
masak final blog post in place now: strangelyconsistent.org/blog/july-3...ished-game 06:45
oh, and I found a MAIN-related bug yesterday when splitting things up into modules. reported it now: rt.perl.org/rt3/Ticket/Display.html?id=114354 06:53
sorear RFC period starts. 06:57
dalek ecza: 2d14b99 | sorear++ | docs/announce.v20:
Add v20 announce
masak reads 07:09
07:10 GlitchMr joined
masak sorry to hear about non-bootstrap running into a dead end. it seemed like an interesting direction. 07:10
shachaf ingy: Ping? 07:11
masak sorear: announcement looks good. 07:13
07:15 fhelmberger joined 07:16 crab2313 joined 07:18 crab2313 left
moritz aye, it does 07:19
sorear: why did non-bootstrap run into a dead end? tuit starvation? or technical problems? or both? 07:20
seedmagazine.com/content/article/se..._the_dark/ woah, subconscious-only seeing after a stroke damaged the visual cortex 07:22
sorear moritz: I guess you could call it technical problems 07:23
moritz: the technical problems mounted to a point where I lost all motivation to continue. So my weekend tuits went to other things.
moritz sorear: that does sound like a good time to rething the direction, yes 07:25
07:28 xinming left 07:29 xinming joined
sorear looks like niecza's makefile is not best friends with BSD cp 07:30
dalek ecza: 7f550a2 | sorear++ | Makefile:
Fix package generation with BSD cp
07:35
07:38 cognominal joined 07:40 cognominal left
moritz r: say Block.^mro 07:45
p6eval rakudo c1bfbb: OUTPUT«Block() Code() Any() Mu()␤»
07:51 alc joined 07:55 alc left
masak rn: say "\x2028 \x2029" 07:55
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«
 
␤»
masak .u 
 
 07:56
phenny U+2028 LINE SEPARATOR (
)
U+0020 SPACE ( )
U+2029 PARAGRAPH SEPARATOR (
)
masak JavaScript considers "\u2028" and "\u2029" to be line terminators.
I was thinking of things like .lines; how should it behave in the face of such characters? 07:57
GlitchMr \u2028?
I remember this. It's reason why JSON isn't subset of JavaScript.
masak er? how can JavaScript's support of \u2028 be a reason JSON isn't a subset? 07:58
sorear masak: I think because JSON allows \u2028 to appear unescaped in a string 07:59
masak ah. 08:00
GlitchMr But, I guess it's just small detail that Crockford hasn't noticed 08:02
moritz rn: say Routine ~~ Block
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
masak GlitchMr: probably. 08:06
rn: say Method ~~ Routine
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«True␤»
masak I noticed today that S06 says that MAIN should be a Routine, which implies that it can be a Method. which I think isn't so.
moritz I think it must be a Sub 08:08
masak: and I might have a patch for MAIN being executed in modules 08:10
unles $*W.is_precompilation_mode { ... }
oh wait, that's not quite enough
sorear yay, looks like my message went through 08:13
08:14 jdrab joined
masak sorear++ # v20 08:18
08:20 fgomez left
masak moritz: 'unles' is not quite enough, no. it's missing an 's' :P 08:21
moritz masak: I meant, a simple use MyModule; doesn't put MyModule in precompilationi mode 08:23
jnthn: or does it? 08:24
08:24 dakkar joined
masak "the compilation unit was directly invoked rather than by being required by another compilation unit" -- this is what we want to test. 08:25
if that's called $*W.is_precompilation_mode or not, I don't know. 08:26
moritz unfortunately for patching rakudo, I need to know if it's spelled that way :-)
or how to spell it
jnthn moritz: No, is_precompilation_mode just means "Rakudo was run with --target=pir" I think. 08:27
moritz I've now tried if !$*W.is_precompilation_mode && +@*MODULES == 0 && $unit.symbol('&MAIN') { ... } 08:28
and now it never runs MAIN :/
I need to debug which of those conditions failed
08:30 xinming_ joined
moritz it seems that +@*MODULES is always at least 1 08:31
masak .oO( 412 ) 08:32
08:32 xinming left
moritz which is very odd, given that the only place that adds to @*MODULES is the module loader 08:33
masak what does it contain? 08:35
moritz the module loading backtrace, so to say
jnthn moritz: Does it pop off again? 08:36
moritz jnthn: there's code for popping off it
jnthn: not sure if I've tested it properly
08:36 mscha joined
jnthn Yeah. It looks right at least. 08:37
08:38 SamuraiJack joined
moritz I'm now trying to create a new my @*MODULES in the loader instead 08:39
which should be more robust
my current theory is that loading the setting populates @*MODULES somehow
and doesn't clean up properly 08:40
08:40 cognominal joined 08:42 cognominal left
moritz ok, that seems to fix things 08:43
oh, I now see why
for the first module, there are *two* hashes pushed onto @*MODULES
one for the calling location, one for the module itself 08:44
jnthn The setting does use Perl6::BOOTSTRAP or so.
dalek kudo/nom: 558ea68 | moritz++ | src/core/IO.pm:
remove IO::Path and IO::Dir

as the deprecation notice predicted
09:02
kudo/nom: 85b7789 | moritz++ | src/core/IO.pm:
fixup
kudo/nom: 2cdf1c6 | moritz++ | src/Perl6/ (2 files):
Only run MAIN in the mainline. Closes RT #114354

Includes a small refactoring of @*MODULES handling, which avoids leaving traces in @*MODULES after the first module load (which is always the setting)
moritz forgot to rebase -i before committing. Sadface :(
I'm now trying to write tests for that patch 09:19
and it's surprisingly hard 09:20
I don't know how to propagate state through 'use' or 'require' boundaries
I've tried package variables and dynamic variables
masak dynamicals?
oh, of course you tried that already.
even package vars don't work? :/ 09:21
moritz and I got a dispatch failure for ++$*tracker in the module
masak did you declare it?
moritz in the caller, sure
masak r: sub foo { say ++$*tracker }; my $*tracker = 0; foo
p6eval rakudo c1bfbb: OUTPUT«1␤»
masak my intuition tells me dynamicals should survive a 'use' or 'require'. 09:22
moritz ok, one more idea 09:23
I die() in sub MAIN
and do a lives_ok { require TestMOdule; }
\o/ that works 09:24
masak moritz++
arnsholt "Like the famous mad philosopher said, when you stare into the void, the void stares also; but if you cast into the void, you get a type conversion error. (Which just goes to show Nietzsche wasn’t a C++ programmer.)" 09:25
Figured that quote might amuse some of you =)
moritz :-)
dalek ast: 95987ec | moritz++ | / (2 files):
sub MAIN in modules should not run. RT #114354
09:26
masak moritz: I can get dynamicals and require to work locally. 09:28
moritz: my guess is you couldn't get 'use' to work because you used BEGIN blocks and the dynamical went out of (lexical) scope.
moritz I did not 09:29
masak I should know better than to underestimate you :)
anyway, dynamicals+'require' works here. 09:30
moritz well, I did do something wrong 09:33
hm, I might have an idea 09:34
maybe MAIN ran *after* the require
so the dynvar wasn't in scope anymore at all
masak maybe. :)
moritz but I thought it didn't run at all :/
masak is again reminded of HPMoR today
moritz no new episode so far :( 09:35
just a new episode of the podcast
masak too early in the day yet.
09:37 cognominal joined 09:44 daxim joined
mscha perl6: say reverse 0..Inf; 09:53
p6eval rakudo c1bfbb: OUTPUT«Cannot reverse an infinite list␤ in method gist at src/gen/CORE.setting:9624␤ in sub say at src/gen/CORE.setting:7024␤ in block at /tmp/oCOFAIOTpZ:1␤␤» 09:54
..niecza v19-15-g051783d: OUTPUT«(timeout)»
mscha (My copy of Rakudo Star 2012.4 said "Cannot reverse and infinite list", which has apparently been fixed. 09:55
)
masak X::Infinite::YouKnowWhatIMean 09:56
GlitchMr Reversing infinite list would require knowing its last position 09:58
moritz but we know it. It's Inf :-) 09:59
GlitchMr So, reverse 0 .. Inf should return infinite list of Inf
masak this is the danger of confusing actual numbers with concepts representing limits.
Inf isn't a natural number.
moritz nr: say Inf.WHAT 10:00
p6eval rakudo c1bfbb, niecza v19-15-g051783d: OUTPUT«Num()␤»
masak it's the limit towards which natural numbers tend.
moritz rakudo and niecza agrees that it's not a natural number :-)
GlitchMr gather for ^Inf { take Inf }
Is there better way of representing such list?
jnthn 1..* 10:01
moritz GlitchMr: Inf xx Inf
jnthn Oh, you wanted all Infs...
moritz or Inf xx *
GlitchMr > Inf xx Inf
moritz shorter :-)
GlitchMr Cannot coerce Inf to an Int
huh
jnthn Sorry, I thought we were doing useful things :)
moritz yes, xx wants an Int on the RHS
GlitchMr Inf xx * seems to work
Actually, reversing infinite list would be possible, but it's impossible 10:03
10:03 Bzek joined
GlitchMr or something 10:04
The list 0 xx * could be easily reversed
Just wondering, does reverse return iterator? 10:05
moritz a lazy list
iterators aren't exposed to the user
GlitchMr > pop 0 xx *
.pop from an infinite list NYI
huh?
So, if somehow .pop will be implemented on infinite list, reverse will be possible too 10:06
But... why .pop on infinite list would be possible?
moritz I guess I just wasn't sure if it might be possible oneday 10:07
feel free to submit a patch for a better error message 10:08
GlitchMr Wouldn't getting last element from infinite list require getting every element before?
I can see it possible with shift or unshift... but with pop() 10:11
(by the way, push() on infinite list could be nop)
But error is better
arnsholt I don't really see how pop on an infinite list would be impossible 10:13
moritz it's possible for a potentially-infinite list 10:14
but for a really infinite list?
masak I think it's a bad idea.
GlitchMr paste.uk.to/22f651a2
So, I have unshift() for infinite arrays 10:15
moritz unshift is already implemented 10:16
GlitchMr oh, ok
moritz and it's the same for finite and infinite lists
because it just works on the reified part
10:17 cognominal left
moritz r: my @a = 1, 2; @a.unshift: <a b>.list: @a[0] = 4; say @a 10:18
p6eval rakudo c1bfbb: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method list at src/gen/CORE.setting:4614␤ in block at /tmp/8zypWOWaui:1␤␤»
moritz r: my @a = 1, 2; @a.unshift: <a b>.list; @a[0] = 4; say @a 10:19
p6eval rakudo c1bfbb: OUTPUT«4 b 1 2␤»
moritz has no idea where the container in @a[0] comes from
masak arrays provide containers. 10:22
arnsholt fails to spot the difference between moritz's two snippets
masak arnsholt: colon vs semicolon 10:23
moritz just a few pixels
masak yes, it was subtle :)
arnsholt Oh, now I see it =)
GlitchMr pop and push should be errors on infinite lists 10:25
pop because it's impossible
push because it's useless
10:25 cognominal joined
arnsholt Durr, of course. I had things confused >.<