»ö« 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. |
|||
Moukeddar | i'm stuck too, i have an OSS freak teaching us, what a pain | 00:00 | |
00:09
Moukeddar left
00:17
dorlamm joined
|
|||
Timbus | sorear, that's a good point. I was going to use gtk and anyevent, maybe with coro, but since I need serial port communication, it might be a serious blocker | 00:20 | |
what a terrible unintended pun | |||
sorear | Timbus: if it's all going with serial ports anyevent should work fine | 00:22 | |
Timbus | I'm only used to working with Device::Serialport, which is terrible. and it blocks. | 00:24 | |
and with the possibility that this will need to run on windows, can I access the serial like it was a normal filehandle? I don't know | 00:25 | ||
00:29
silug joined
|
|||
sorear | on Linux there is nothing special about accessing the serial port; it's just /dev/ttyS0, open it and access it as a filehandle | 00:31 | |
you'll need to use POSIX::tcsetattr and friends to set up I/O parameters | |||
I don't know about Windows serial port access, but the existance of System.IO.Ports makes me doubt you can just treat the serial port as a file under Windows | 00:32 | ||
because if you could, people would just use the ordinary classes in System.IO... | 00:33 | ||
00:37
replore joined
|
|||
Timbus | probably the wrong words. 'as a file' => 'as an IO handle' | 00:37 | |
specifically one that I can wait on | |||
because a GUI shouldnt freeze waiting for IO | 00:39 | ||
sorear | AnyEvent will definitely work with serial port FDs on Unixes | 00:40 | |
it has to, because serial ports are considered a kind of terminal, and when you run irssi on a terminal it has to wait for either a key press or socket input | 00:41 | ||
Timbus | good point | 00:42 | |
guess I'll convince my work to run an ubuntu box | |||
won't be hard to do | |||
00:47
tokuhirom left
00:51
dorlamm left
|
|||
sorear | Timbus: I'm not saying it's hard to do on Windows, only that I have no experience | 00:53 | |
01:02
hypolin joined
01:09
woosley joined,
woosley left
01:10
woosley joined,
woosley left
01:13
packetknife joined
01:24
mkramer joined
01:25
pluto_ joined,
mkramer left,
mkramer joined
01:26
woosley joined
01:31
daniel-s joined
01:36
mkramer left
01:48
packetknife left
02:10
overrosy left
02:11
overrosy joined
02:43
cooper left
02:46
benabik joined
03:08
Guest74144 left
|
|||
diakopter | in case anyone wants to see method quant for NFA.nqp (it won't be committed unless we get some good tests for it by tomorrow) gist.github.com/1372240 | 03:10 | |
WFM though | |||
03:19
wolfman2000 joined
03:56
mkramer joined
03:57
mkramer left
04:12
packetknife joined
04:20
birdwindupbird joined
04:29
satyavvd joined
04:31
packetknife left
04:35
replore left,
replore__ joined
04:42
envi_|2 joined
04:48
sili joined
05:02
_jaldhar joined
05:13
kaleem joined,
hypolin left
05:22
risou_awy is now known as risou
05:23
twinshadow joined
05:28
envi_|2 left
05:33
hypolin joined
05:37
sftp left
05:51
hypolin left
05:54
Exodist left
|
|||
Woodi | do Perl allows load modules at runtime ? | 06:12 | |
sorear | yes | ||
require Foo; | 06:13 | ||
both 5 and 6 | |||
06:23
risou is now known as risou_awy
|
|||
Woodi | right, checked only eval( use ... )... anyway strange question :) | 06:24 | |
06:29
fsergot left
06:35
koban joined
06:40
mkramer joined
06:45
Exodist joined
06:50
fsergot joined
06:51
molaf joined
|
|||
sorear | Woodi: it needs to be eval(" use ... ") | 06:51 | |
06:54
mkramer left,
wtw joined,
flussence left
06:55
mkramer joined,
mberends left
07:07
fsergot left
07:08
sivoais left,
molaf left
07:09
woosley left
|
|||
Woodi say nothing | 07:13 | ||
07:22
flussence joined
07:29
fsergot joined,
mishin joined
07:31
flussence left
07:32
flussence joined
07:40
Sarten-X joined
07:42
koban left
07:54
fsergot left
07:56
wolfman2000 left
08:05
sili left
08:07
mishin left
08:14
fsergot joined
08:17
mj41 joined
08:18
am0c left
08:30
fsergot left
|
|||
masak | morning, #perl6 | 08:31 | |
ok, follow-up to Woodi's question: is there a way to re-require a module, in the event its file changed on disk? module hotswapping, in effect. | 08:32 | ||
ISTR buubot_backup does it, and is written in Perl 5. I have no idea how to go about it in Perl 6. | 08:33 | ||
08:51
fsergot joined
09:05
fsergot left
09:20
mkramer left
09:22
mkramer joined
|
|||
moritz | masak: I think the solution is to assign the new module a new version, and load that | 09:22 | |
09:24
mkramer1 joined,
mkramer left
09:26
fsergot joined
|
|||
masak | fair enough. | 09:27 | |
has there been a parrot release yet this week? | 09:29 | ||
I don't see any release announcement. | |||
moritz | #parrot topic says 3.10.0 | ||
moritz disappears again | 09:30 | ||
09:35
mkramer1 left
09:43
mkramer joined
09:45
replore__ left
09:47
mkramer1 joined,
replore_ joined
09:48
mkramer left
09:49
dakkar joined
09:50
pluto_ left
09:51
mkramer1 left,
bazqux joined,
mkramer joined
09:52
replore_ left
09:59
fsergot left
10:02
mkramer left
10:06
Trashlord joined
10:07
daxim_ joined
10:08
BooK left,
BooK joined,
daxim left
10:15
kfo joined
10:16
worr joined
10:18
kfo_ left
10:22
fsergot joined
10:25
kst` joined
10:26
kst left
10:28
envi_|2 joined
10:35
fsergot left
10:37
envi_|2 left
10:38
envi_ joined
10:40
risou_awy is now known as risou
10:57
heleana joined
10:58
heleana left
11:15
mtk left
11:20
fsergot joined
|
|||
felher just noticed there is a new protoregex branch o/. jnthn++ | 11:29 | ||
11:29
fsergot left
|
|||
jnthn | felher: Plan to merge it this evening. | 11:30 | |
felher | jnthn: great :) | ||
jnthn: then i can test a few of my old programs on nom rather than on ng :) | |||
jnthn | felher: Yeah. There's still other regex engine stuff that'll need looking at too. | 11:33 | |
But, I'll be picking them off best I can. | |||
bbkr | awesome news, JSON::Tiny should work again with proto | 11:35 | |
felher | jnthn: nice. great work :) | 11:36 | |
jnthn | bbkr: Not sure how well that's going to work yet...but yeah, that's what I'm shooting for. | ||
11:37
worr left
11:40
JimmyZ joined,
satyavvd left
11:51
mkramer joined
11:53
worr joined
11:54
Je joined
|
|||
Je | Say 3 | 11:55 | |
11:56
mkramer left
11:57
Je left,
mkramer joined
12:05
mkramer1 joined,
mkramer left
12:07
benabik left
12:10
HarryS left
12:12
HarryS joined,
Psyche^ joined
12:15
icwiener joined
12:16
Patterner left,
Psyche^ is now known as Patterner
12:36
bluescreen10 joined
12:37
mkramer1 left
12:38
[Coke] left,
[Coke] joined,
pmichaud left,
masak left,
pmichaud joined
12:39
mkramer joined
12:40
masak joined,
PerlJam left
12:41
PerlJam joined
12:45
worr left,
worr joined
12:51
worr left
12:58
benabik joined,
JimmyZ_ joined,
JimmyZ_ left
12:59
JimmyZ left
13:16
kaleem left
13:20
mkramer1 joined,
mkramer left
13:22
colomon left
13:23
kaleem joined
|
|||
[Coke] | jnthn: how's protoregex going? | 13:37 | |
jnthn++ # unblocking modules | |||
13:37
JimmyZ joined
13:39
mkramer1 left
13:42
colomon joined
13:44
mkramer joined
|
|||
jnthn | [Coke]: At $dayjob for the next couple of hours. But the branch passes all tests nom does, plus protoregex.t. :) | 13:48 | |
[Coke]: So plan to merge it ahead of tonight's release | |||
Bit last minute but the release manager didn't scream at me :) | 13:49 | ||
...though that could be because we don't have one ;) | |||
colomon | ;) | ||
jnthn | Generally though, I'm all for getting it into people's hands if they follow compiler releases. | 13:50 | |
13:53
mtk joined
|
|||
[Coke] | Agreed. in general, star releases we should be more careful of (except the next one which we know will be a jolt because of nom) | 13:56 | |
14:00
vmspb joined
14:03
sivoais joined
|
|||
arnsholt | nom: sub foo(*@args) { say @args.join(", "); }; my @a = <a b c>; foo(|@a); | 14:04 | |
p6eval | nom 8f1f5d: OUTPUT«a, b, c» | ||
arnsholt | nom: sub foo(*@args) { say @args.join(", "); }; my @a = <a b c>; foo(d, |@a); | 14:05 | |
p6eval | nom 8f1f5d: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&d' called (line 1)» | ||
arnsholt | nom: sub foo(*@args) { say @args.join(", "); }; my @a = <a b c>; foo('d', |@a); # Oh, do understand what I mean :p | ||
p6eval | nom 8f1f5d: OUTPUT«d, a, b, c» | ||
arnsholt | Huh. Must be something else wrong with my code then | ||
[Coke] | paypal-- | 14:06 | |
14:10
mkramer left
14:12
mkramer joined
14:18
mkramer left
14:20
mkramer joined,
Sarten-X left
14:24
mkramer left
|
|||
jnthn | [Coke]: Yeah, but I'm hoping to make it a softish jolt :) Or at least a "ooh, it's faster at least" one :) | 14:24 | |
arnsholt | Is it possible to have both the default constructor and a constructor that takes positional arguments? | 14:25 | |
multi method new($a, $b) { ... } doesn't seem to do the trick | 14:26 | ||
jnthn | arnsholt: yes, just multi it | ||
arnsholt | Then I'm doing something else wrong =) | ||
14:26
mkramer joined
|
|||
jnthn | nom: class A { has $!a; has $!b; multi method new($a, $b) { self.bless(:$a, :$b) } }; say A.new(1,2).a; say A.new(:a(1), :b(2)).a | 14:27 | |
p6eval | nom 8f1f5d: OUTPUT«Not enough positional parameters passed; got 1 but expected at least 2 in method bless at src/gen/CORE.setting:533 in method new at /tmp/aYxTBROcFM:1 in block <anon> at /tmp/aYxTBROcFM:1 in <anon> at /tmp/aYxTBROcFM:1» | ||
jnthn | oh, yes | ||
14:27
bazqux left
|
|||
jnthn | bless needs a candiate | 14:27 | |
nom: class A { has $!a; has $!b; multi method new($a, $b) { self.bless(*, :$a, :$b) } }; say A.new(1,2).a; say A.new(:a(1), :b(2)).a | |||
p6eval | nom 8f1f5d: OUTPUT«Method 'a' not found for invocant of class 'A' in block <anon> at /tmp/biq5LAHKm1:1 in <anon> at /tmp/biq5LAHKm1:1» | ||
jnthn | oh, and I meant . | ||
nom: class A { has $.a; has $.b; multi method new($a, $b) { self.bless(*, :$a, :$b) } }; say A.new(1,2).a; say A.new(:a(1), :b(2)).a | |||
p6eval | nom 8f1f5d: OUTPUT«11» | ||
jnthn | arnsholt: Like ^ | 14:28 | |
Your new just transforms nameds into positionals for bless to use. | |||
14:28
mkramer left
|
|||
arnsholt | Coll | 14:28 | |
Or, cool | |||
14:29
mkramer joined
14:31
Sarten-X joined
14:33
mkramer left
14:35
tokuhirom joined,
sftp joined
14:37
mkramer joined,
mkramer left
|
|||
felher | Is map eager in current nom? | 14:43 | |
masak | nom: my @a := map { say "OH HAI" }, 1, 2, 3; say "alive!" | 14:44 | |
p6eval | nom 8f1f5d: OUTPUT«alive!» | ||
masak | doesn't seem like it. | ||
nom: multi foo($a) { say "OH HAI" }; multi foo(:$a) { say "OH named HAI" }; foo(5); foo( :a(5) ) | |||
p6eval | nom 8f1f5d: OUTPUT«OH HAIOH named HAI» | ||
masak | nom++ | 14:45 | |
colomon | niecza: multi foo($a) { say "OH HAI" }; multi foo(:$a) { say "OH named HAI" }; foo(5); foo( :a(5) ) | ||
p6eval | niecza v11-24-gcdd4e66: OUTPUT«Potential difficulties: $a is declared but not used at /tmp/W8DtKGd0og line 1:------> multi foo(⏏$a) { say "OH HAI" }; multi foo(:$a) { sOH HAIUnhandled exception: Ambiguous dispatch for &foo at <unknown> line 0 (&foo @ 0)  at … | ||
colomon | ah, not caught up with the spec changes yet, eh? | ||
felher | Hm.. 'why does for (1..*) { .say; }' work as expected but 'for ((1..*).map({$_ + 1})) { .say; }' doesn't? | 14:46 | |
The first print all the numbers, the second doesn't print anything here. | 14:47 | ||
s/as expected/as i expected/ :) | 14:48 | ||
masak | colomon: frankly, I expected some kind of ambiguous dispatch when I tired it in nom as well... | ||
colomon | that is the latest spec, though, right? You can't call positional arguments by name anymore. | 14:49 | |
jnthn | The positional one was ruled out on arity. | ||
14:49
sayu joined
|
|||
jnthn | That left one candidate | 14:49 | |
Well, the multi-dispatcher was, iirc, never spec'd to do named to positonal mapping. | |||
masak | nom: .say for 1..Inf | ||
p6eval | nom 8f1f5d: OUTPUT«(timeout)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182xE2 | 14:50 | |
masak | nom: .say for map * + 1, 1..Inf | ||
PerlJam | felher: insufficient eager on the second one? | ||
p6eval | nom 8f1f5d: OUTPUT«(timeout)» | ||
jnthn | That looks rong. | ||
masak | PerlJam: more like too eager. | ||
colomon | insufficient laziness | ||
PerlJam | yeah, that's what I meant | ||
:) | |||
felher | :) | ||
PerlJam | (insufficent caffiene for me at the moment) | 14:51 | |
felher afk | 14:53 | ||
mux | too eager/ insufficient laziness - I swear to god I thought I was in #haskell just now | 14:54 | |
PerlJam | you know what the neat thing is about not messing with perl 6 for about a month? ... Rakudo seems much faster than I remember :) | ||
masak | PerlJam: as you get older, time appears to speed up :P | 14:55 | |
or rather, mental perception points get sparser. | 14:56 | ||
PerlJam | masak: yeah, and back when I was a kid, pi was just 3 :) | ||
masak | those were the days. | ||
14:56
shinobicl joined
|
|||
masak | circles looked like hexagons. | 14:56 | |
PerlJam | The perceptual resolution of reality increases with time | 14:57 | |
mid-life crisis is when you become aware of the fractal nature of everything. | 14:58 | ||
masak | oh, that's what it is? | ||
14:59
am0c joined
|
|||
masak .oO( omg, it's full of crises ) | 14:59 | ||
PerlJam | I think there's a relativity principle in play here. While rakudo's execution speed seems much faster, compilation still seems to take forever | 15:00 | |
masak | well, remember the November stats from 2008: we brought the time for a GET request down from 17 seconds to 3 seconds by precompiling everything to PIR. | ||
so, nihil novo. | 15:01 | ||
arnsholt | If I may pick a nit, it's novi. =) The classic example of partitive genitive (which is quite cool) | 15:05 | |
jnthn | ...which language are we in? :) | ||
masak | arnsholt: much appreciated. I did hesitate, but didn't check. :/ | ||
jnthn: Latin. | |||
jnthn | ah :) | ||
masak | arnsholt: partitive genitive because "nothing of new"? | 15:06 | |
jnthn | (compile time) well, step 1 is parse faster. step 2 is build ast nodes faster :) | ||
PerlJam | And then when you get older people start speaking funny languages and you think that you're having an aneurism | ||
;) | |||
15:08
wtw left
15:09
simcop2387 left
|
|||
masak | PerlJam: here in Europe we're pretty used to people speaking "funny languages" :) | 15:10 | |
jnthn | Nikdy nehovorim komicke jazyky! :P | 15:11 | |
15:12
simcop2387 joined
|
|||
arnsholt | masak: Yeah, nothing of the new kind under the sun | 15:18 | |
15:21
kaleem left
|
|||
masak | arnsholt: I feel like each time I encounter the partitive genitive, I understand it but it feels like the first time I learn it. I should learn it for real some time. :) | 15:22 | |
15:23
alester joined
15:29
ethndbst joined,
ethndbst left,
ethndbst joined
|
|||
arnsholt | It's a bit tricky to remember. But learning French is useful, since they still use it (sort of) | 15:29 | |
masak | I learned French long ago, but I'm pretty sure they didn't mention partitive genitive. | 15:33 | |
arnsholt | Yeah, it's a bit hidden | 15:35 | |
mux | I'm french and I have no idea what partitive genitive is | ||
arnsholt | "une bouteille d'eau" is partitive genitive, essentially | 15:36 | |
cognominal | partitive genetive, hidden, that's sound like private parts to the average french pervert | ||
arnsholt | It's the de and something without an article | ||
mux | oh, that has a name? ;-) | ||
arnsholt | Yeah, us foreigners need to name things to remember them properly =D | ||
mux | this "d'" (contraction of de) here is just like the "of" in english to me - like in a bottle of water | 15:37 | |
arnsholt | Yeah, that's the same use case | 15:38 | |
mux | okay then | ||
masak | so "a bottle of water" is partitive genitive too? :) | ||
mux | it would seem so | ||
arnsholt | But IIRC the article or no article decision is a bit fiddly for foreigners | ||
At least it is for me as a Norwegian | |||
masak: You might be able to call it that | 15:39 | ||
But the article de in French is a very direct successor of the genitive case. Not sure if it's that straightforward in Germanic | |||
mux cannot think of a better way to spend the last hour of his working day than to research grammatical constructs on wikipedia | |||
arnsholt | Indeed! | 15:40 | |
mux | if only there wasn't the face of Jimmy creepy Wales up there, it creeps the shit out of me | ||
arnsholt | Yeah, that's a bit unnerving | ||
mux | this guy would make a very successful stalker | ||
15:41
Gothmog_ left
|
|||
masak | his face looks stranger the more you stare at it. | 15:42 | |
kind of assymetrical. | |||
15:43
JimmyZ left
|
|||
mux | i.imgur.com/bZKqt.png -- I thought you guys would enjoy that as much as I did | 15:44 | |
arnsholt | Ah, the internet. Helping me procrastinate, as always =D | 15:45 | |
Speaking of which, writing abstracts is hard (let's go shopping?) | 15:46 | ||
15:46
PlusYan joined
15:47
tokuhirom left
|
|||
masak | shopping abstracts is hard too. | 15:47 | |
arnsholt | True, true =D | 15:48 | |
Util | FYI: nom regression | 15:49 | |
While pondering rosettacode.org/wiki/Hofstadter_Q_sequence , I reduced it to: | |||
my @h := 1, 1, { @h[*-@h[*-1]] + @h[*-@h[*-2]] } ... *; say @h[^10]; | |||
which works with Niecza and Rakudo_2011.04, but fails with Rakudo_2011.10 . | |||
This reduced case also fails with Rakudo_2011.10: | |||
my @h := 1, 1, { @h[*-1] } ... *; say @h[^5]; | |||
This case hangs forever with Rakudo_2011.10, but generates `1 1 Any Any Any` on Niecza and Rakudo_2011.04: | |||
my @h := 1, 1, { @h[2] } ... *; say @h[^5]; | |||
EOR | |||
jnthn | If anyone wants to turn that into an RT, please do | 15:50 | |
15:50
plobsing_ joined
|
|||
benabik | Is * supposed to be "current position" when building an infinite list? | 15:51 | |
colomon | benabik: errr... no? | 15:52 | |
Util | benabik: @foo[*-3] is the new way to say Perl 5's $foo[-3], or "third element from the end" | 15:53 | |
benabik | Util: And the end of an list defined as … * is? | ||
colomon | but (for instance) if you pass a Whatever (thing that we used to call curry) to @a[ ], then it evaluates it using the current number of elements as the argument | ||
Util | Since inf lists have no end, a useful interpretation would be "third element from the end of what we have generated so far" | ||
colomon | ... * means "go on forever" | ||
15:53
plobsing left
|
|||
colomon | oooo, yeah, I see what benabik is getting at | 15:54 | |
that does seem kind of dodgy | |||
masak | agree about the dodgy. | 15:55 | |
colomon | rakudo: my @h := 1, 1, -> @h2 { @h2[*-@h2[*-1]] + @h2[*-@h2[*-2]] } ... *; say @h[^10]; | ||
p6eval | rakudo 8f1f5d: OUTPUT«Nominal type check failed for parameter '@h2'; expected Positional but got Int instead in block <anon> at /tmp/NWHOaGZz7p:1 in sub coro at src/gen/CORE.setting:4154 in method reify at src/gen/CORE.setting:4129 in method reify at src/gen/CORE.setting:3914 … | ||
colomon | b: my @h := 1, 1, -> @h2 { @h2[*-@h2[*-1]] + @h2[*-@h2[*-2]] } ... *; say @h[^10]; | ||
masak | is that spec'd at all? what does the * refer to when indexing a not-fully-evaluated lazy list? | ||
p6eval | b 1b7dd1: OUTPUT«Nominal type check failed for parameter '@h2'; expected Positional but got Int instead in <anon> at line 22:/tmp/NnA517xBbT in <anon> at line 872:src/gen/core.pm in 'List::at_pos' at line 1:src/metamodel/RoleToInstanceApplier.nqp in 'Any::postcircumfix:<[ ]>' at… | ||
colomon | masak: pretty sure that's not spec'd at all | 15:56 | |
or at least, we definitely want it to refer to the fully-evaluated list | |||
otherwise it would break all sorts of normal usages | |||
Util | Since you can never generate element# N without already having element# N-1, I think it is safe to allow the generating function to access the size of the bound array so far (when the generating func is referencing the bound array). | 15:57 | |
colomon | it's safe to allow, sure. | 15:58 | |
Util | I just want this use of * to work *within* the generating function. colomon: point taken on normal use *outside* the generating function. | ||
colomon | but * has the same meaning in either place | 15:59 | |
Util | Not usefully so. | ||
colomon | If I understand you correctly, you're asking that the generating closure containing @h[ ] know that it is a generating closure and therefore change the meaning of @h[ ] | 16:00 | |
b: my @h := 1, 1, -> *@h2 { @h2[*-@h2[*-1]] + @h2[*-@h2[*-2]] } ... *; say @h[^10]; | 16:01 | ||
p6eval | b 1b7dd1: OUTPUT«1123345566» | ||
Util | colomon: I *think* so; I had not thought of it in those terms until this conversation. | 16:02 | |
colomon | rakudo: my @h := 1, 1, -> *@h2 { @h2[*-@h2[*-1]] + @h2[*-@h2[*-2]] } ... *; say @h[^10]; | ||
p6eval | rakudo 8f1f5d: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are::(Mu, Mu %_) in method Numeric at src/gen/CORE.setting:614 in sub infix:<-> at src/gen/CORE.setting:1976 in whatevercode <anon> at /tmp/ZnhUJVAHrU:1 in method postcircum… | ||
jnthn | decommute | ||
16:02
bluescreen10 left
|
|||
colomon | I believe that code I just tried definitely represents a nom-bug | 16:02 | |
niecza: my @h := 1, 1, -> *@h2 { @h2[*-@h2[*-1]] + @h2[*-@h2[*-2]] } ... *; say @h[^10]; | 16:03 | ||
p6eval | niecza v11-24-gcdd4e66: OUTPUT«1 1 2 3 3 4 5 5 6 6» | ||
Util | But what is the alternative? Force finite-but-lazy lists to generate their entire sequence whenever anything outside the gen.func. uses [*-5]? | ||
colomon | Util: yes | ||
I mean, consider my @a := $str.comb; say @a[*-1] | 16:04 | ||
shouldn't that return the same value as my @a = $str.comb; say @a[*-1] | |||
? | |||
Util | colomon: hmmm. Yes. And, ($fh.lines)[*-5] would have to read the whole file to work as expected. | 16:06 | |
colomon | right | ||
16:07
jnthn left,
vmspb left
|
|||
Util | colomon: I see your point. Can you think of any situation where a generating function could usefully access * where * is the last element? | 16:08 | |
colomon | Util: the real last element? not really. | 16:09 | |
benabik | Hm. Rakudo doesn't like slurpy blocks for generators. | ||
nom, at least. | |||
colomon | but remember, there's nothing at all special about a generating function. | ||
benabik: yeah, that would be a nom bug. | |||
benabik | It's a useful trick though. | 16:10 | |
Util | I think that having * mean "size so far" withing a sequence's code block (gen.func.) is agreeable, given that *'s usual meaning is not useful (and maybe even nonsensical) there. | 16:11 | |
benabik | But would you transform every * inside the generator? Or do you want to spec that generator functions have to know what variable they're operating on? | ||
niecza: my @x := 0,1,-> *@x { +@x } ... *; say @x[10] # works, but you have to be explicit | 16:12 | ||
p6eval | niecza v11-24-gcdd4e66: OUTPUT«10» | ||
colomon | I really think that, as much as it would be elegant, having @h[ ] behave specially if you are generating @h at the time seems like a very bad idea. | 16:14 | |
16:14
bluescreen10 joined,
sayu left
|
|||
colomon | I mean, what if instead of saying 1, 1, { @h[*-@h[*-1]] + @h[*-@h[*-2]] }, you said sub generate() { @h[*-@h[*-1]] + @h[*-@h[*-2]] }; 1, 1, &generate | 16:15 | |
colomon is imagining the nightmare of trying to implement this... | 16:16 | ||
sorear | what is @h? | ||
16:16
am0c left
|
|||
colomon | b: my @h := 1, 1, -> *@h { @h[*-@h[*-1]] + @h[*-@h[*-2]] } ... *; say @h[^10]; | 16:16 | |
p6eval | b 1b7dd1: OUTPUT«1123345566» | ||
sorear | @h doesn't even exist until ... returns | 16:17 | |
Util | colomon: What nightmare? It *used* to work! (and still does in Niecza) :) | ||
masak | sure it exists. | ||
sorear | you have to use the temp value that ... gives you, via the slurpy param | ||
Util | sorear: it is bound, not assigned. | ||
masak | it exists from the point of its declaration. | ||
sorear | my @h := 1, 1, { @h[*-1] } will never work | ||
colomon | Util: that would be what is known as an accident | ||
sorear | masak: the variable exists, but the array that will become known as @h doesn't | ||
s/variable/name/ | 16:18 | ||
benabik | The two "simple" ways I see to do it is to special case generators on the RHS of bindings or to set a flag in the list before calling the generator. | ||
Util | BTW, The Q sequence (as opposed to Fibonacci) needs this because each next element does not rely on the last element, nor the last two, nor even the last N elements. It uses the last two elements to *find* which two elements to add together to get the next number. | ||
Now that I write that, I see that it could shorten the solution to: | |||
my @h := 1, 1, { @h[*-$^a] + @h[*-$^b] } ... *; say @h[^10]; | |||
colomon | niecza: my @h := 1, 1, { @h[*-1] } ... *; say @h[^10] | ||
p6eval | niecza v11-24-gcdd4e66: OUTPUT«1 1 1 1 1 1 1 1 1 1» | ||
16:18
kaare_ joined
|
|||
masak | sorear: you can bind infinite lazy lists to array variables in Perl 6. | 16:18 | |
sorear | cute accident | 16:19 | |
cognominal: pong | |||
masak | sorear: the question here is only whether @h[*-1] means "length so far" or "infinite length" for such an array. | ||
benabik | I wonder why it works. | ||
masak | er, whether the '*' means that. | ||
sorear | masak: I'm suprised it works, I thought I implemented * to be eager. | 16:20 | |
colomon | Util: If you just add -> *@h to your generator function, it should work fine (not the latest version). | ||
masak | sorear: yes, eagerness was what I assumed as well. | ||
cognominal | sorear? I did not ping you. | ||
benabik | It seems to be eager outside the generator and lazy inside. Somehow. | 16:21 | |
niecza: my @x := 1, { @x[*-1] } ... *; say @x[1]; say @x[*-1] | |||
p6eval | niecza v11-24-gcdd4e66: OUTPUT«(timeout)1» | ||
sorear | cognominal: oh, hmm | 16:22 | |
colomon | Going off at a slight angle here: it seems to me what is really wanted is a way to find out how many elements currently exist in a lazy list/array. That would provide a potential solution here and enable other useful code, too. | ||
sorear | cognominal: I got an email from github with the From: line munged to Stéphane Payrard. github-- | ||
masak: having re-checked the code, eagerness looks like it's correctly implemented. WTF? | 16:23 | ||
Util | colomon: hmmm. interesting (re: -> *@h). Would that also require a special case, since a slurpy array would change the lazy list to eager? | ||
benabik | Util: I believe the generator isn't passed the full list. It's explicitly passed "the list so far". | 16:24 | |
colomon | Util: no, because in a generating function, -> *@h gets everything generated so far, by spec | ||
benabik | (Or rather, the last N elements of the list so far, which is all of them in the slurpy case) | ||
colomon | right, -> $a { } gets the last element, -> $a, $b { } gets the last two, -> *@a { } gets everything so far | 16:25 | |
sorear | gotta go now, sorry | ||
cognominal | sorear, I understand, I played with the note interface but I never confirmed anything. Strange because I have never looked the nieca sources. | 16:26 | |
*niecza | 16:27 | ||
colomon | I should add, that's not something special about the generating closure; rather, that's how ... calls it. | ||
benabik | It's odd that the list currently reacts differently to *-1 inside and outside the generators. I wonder what's causing it. | 16:28 | |
masak decommutes | 16:29 | ||
Util | colomon, benabik: aha! I missed that in the spec. Thanks! | ||
benabik | It's not just @x[*-1], it's also (perhaps unsurprisingly) +@x that changes. | 16:30 | |
niecza: my @x := 0, { +@x } ... *; say @x[1]; say +@x | |||
p6eval | niecza v11-24-gcdd4e66: OUTPUT«(timeout)1» | ||
benabik | Apologies to whatever machine that's running p6eval. | ||
[Coke] | I don't think *'s meaning changing depending on how far you happen to have gotten is useful. | 16:38 | |
I could see having some sort of "are you sure you meant to do that eagerly?" warning (similar to a stack depth error) | 16:40 | ||
benabik | [Coke]: The special case seems obnoxious to add to spec. I'm mostly curious about how it happened by accident in b and niecza. | ||
16:40
sftp left
|
|||
benabik | I do like that warning though. | 16:40 | |
16:41
sftp joined
|
|||
benabik | With lists that are explicitly infinite. Detecting it in the accidentally infinite case may be difficult. | 16:41 | |
16:41
mj41 left
16:50
jnthn joined
16:51
bluescreen10 left
16:54
vmspb joined
16:56
sftp left
|
|||
Util | [Coke]: Now that I know the spec allows for passing the array-so-far, I no longer need * to mean anything special within a sequence's code block. | 17:00 | |
17:01
Gothmog_ joined,
sftp_ joined
|
|||
colomon just noticed it has started to snow... | 17:01 | ||
jnthn | ooh | ||
none here yet | |||
17:02
donri left
|
|||
colomon | This is actually our second snowfall of the season. The first was very, very wet snow, and melted instantly on contact with the ground. :) | 17:02 | |
17:04
bluescreen10 joined
|
|||
colomon | jnthn: where should I add uniq in nom? List.pm? | 17:04 | |
[Coke] | we had 2 snowstorms before Halloween. | ||
arnsholt | jnthn: I think the first snow is rapidly approaching though | ||
At least here in Oslo | |||
[Coke] | Can we spell it unique? :P | ||
17:05
birdwindupbird left
|
|||
jnthn | arnsholt: Yeah, I'm a little south of that... ;) | 17:05 | |
arnsholt | Yeah, I remembered =) | ||
(The benefits of thinking after talking) | |||
colomon | [Coke]: if you want to change the spelling in roast and the spec, I don't mind changing it. ;) | 17:06 | |
jnthn | colomon: Yes, and probably a coercer in Any, as with the other list things | 17:09 | |
17:12
cognominal left
17:20
MayDaniel joined,
MayDaniel left,
MayDaniel joined
|
|||
dalek | p/nfa: 6395eaf | jnthn++ | tools/build/Makefile.in: Don't build nqpq by default for now. |
17:20 | |
p/nfa: 1a0cd9f | jnthn++ | t/nqp/50-regex.t: Revert changes to a test so it works with nqp, rather than nqpq. |
|||
17:23
mj41 joined
|
|||
dalek | p: 46e0f9e | jnthn++ | src/QRegex/Cursor.nqp: Fix an LTM tie-breaking bug; diakopter++ for spotting. |
17:29 | |
nqp: cecd970 | diakopter++ | src/QAST/ (2 files): | |||
nqp: move node() from QAST::Regex to QAST::Node; add $!node to QAST::Node | |||
17:29
dalek left
|
|||
jnthn | heuristic merge detekshun fail | 17:29 | |
17:29
dalek joined,
ChanServ sets mode: +v dalek
|
|||
dalek | kudo/nom: 88f6945 | jnthn++ | src/Perl6/Grammar.pm: Parse current protoregex syntax; keep older deprecated ones for now, though we'll put a warning in the next * release about them. |
17:33 | |
kudo/nom: 829f9d3 | jnthn++ | src/Perl6/Actions.pm: Update actions so we can, in theory, handle protoregexes, though the NFA construction explodes for some reason. |
|||
kudo/nom: a8b2873 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm: Add nqpattr cheat used for now by protoregexes implementation, so the NFA builder can get at NFAs for subrules. And with this, we seem to have workingish protoregexes - to the limit of the NFA engine (which still means more powerful than the literal only we had before). |
|||
kudo/nom: e41953a | jnthn++ | src/Perl6/Grammar.pm: Ensure that regex compiler sees the name of the regex. Fixes use of <sym> in protoregexes, and protoregex.t now passes all but one test (which seems to be unrelated to protoregexes themselves). |
|||
kudo/nom: 1f3e863 | jnthn++ | tools/build/NQP_REVISION: Bump to NQP revision with protoregex support. |
|||
17:33
sftp_ left
17:34
sftp_ joined
17:35
orafu left
17:37
orafu joined
|
|||
dalek | ast: 4418dc5 | jnthn++ | S05-grammar/protoregex.t: Todo one test in protoregex.t for Rakudo. |
17:40 | |
kudo/nom: 0fa6613 | jnthn++ | t/spectest.data: Turn on protoregex.t. |
17:41 | ||
kudo/nom: de79bac | jnthn++ | docs/ChangeLog: ChangeLog entry for protoregexes. |
|||
p: e8e4511 | jnthn++ | src/QRegex/ (2 files): Don't emit debug data when doing protoregexes. |
|||
colomon | dang, nom compiles slowly | 17:46 | |
17:51
dakkar left
|
|||
dalek | p: d2b7838 | jnthn++ | tools/build/PARROT_REVISION: Bump to Parrot 3.10 release. |
17:52 | |
kudo/nom: f50f538 | jnthn++ | tools/build/NQP_REVISION: Bump to NQP revision which targets the relesae Parrot. |
17:53 | ||
colomon | go jnthn! | 17:54 | |
17:54
Chillance joined
|
|||
jnthn | colomon: Relesae won't be for several hours yet. | 17:57 | |
dalek | kudo/nom: 9bc820b | jnthn++ | docs/ChangeLog: Case consistency fix in ChangeLog. |
||
kudo/nom: 98d8d9e | jnthn++ | docs/announce/2011.11: Start to sketch out the 2011.11 announce. |
|||
jnthn | I'm still open to offers to do it, but I've made a start on the process. :) | 17:58 | |
tadzik | so we have like, nfa and LTM now? | 17:59 | |
jnthn | tadzik: We have limited NFA/LTM support for protoregexes. | ||
tadzik: I have a patch from diakopter++ that adds quantifier support. | |||
colomon | tadzik: I'm working on uniq for you. | ||
tadzik | great! | ||
I'll have to do my sql homework first, but then I'm back on panda probably | 18:00 | ||
jnthn | tadzik: There's probably some weird bugs and certainly various missing declarative constructs. | ||
18:00
mberends joined
|
|||
jnthn | tadzik: Will get onto those post-release. | 18:00 | |
18:00
mantovani left
|
|||
jnthn | My plan for up to the release is | 18:00 | |
1) Fix bigint boolification bug that moritz++ found | |||
colomon | tadzik: IO.copy will be trickier, I think, as the old version calls into pir | ||
jnthn | 2) Some tests for the protoregex LTM stuff that works so far | 18:01 | |
tadzik | jnthn: is JSON working now? | ||
jnthn | 3) More protoregex LTM stuff all being well, probably diakopter++'s patch if I can | ||
tadzik: Not had chance to try it yet. | |||
tadzik | I'll try it after nom | ||
jnthn | tadzik: There are still other regex issues though | ||
I'd be surprised if it works right off. | |||
But I'm optimistic we can get it working in the near future. | 18:02 | ||
(I've got most of tomorrow and the weekend available for Perl 6 stuff :)) | |||
tadzik | o/ | ||
\o/ | |||
18:02
cognominal joined
|
|||
jnthn | colomon: Lemme know if you run into trouble with copy | 18:04 | |
colomon | jnthn: will do. not even sure if I'll get that far today, probably depends on how fast I can finish off uniq at this point. | ||
tadzik | most of the brokeness in panda is, suprisingly or not, $! not being inherited and not being set by the default .new | ||
I didn't test stuff that it breaks, I thought roast does :> | 18:05 | ||
jnthn | tadzik: er, both of those are Rakudo conforming to the current Perl 6 spec :) | ||
18:05
mantovani joined
|
|||
colomon | jnthn: what does proto pick(|$) { * } mean, anyway? | 18:05 | |
tadzik | jnthn: I know that :) | 18:06 | |
colomon | I mean, I think I understand the proto idea, but the |$ and { * } are unclear to me | ||
jnthn | colomon: * means "call into the multi-dispatcher" | ||
tadzik | I wouldn't mind .new doing callsame, tbh | ||
oh, that's not the case | |||
jnthn | colomon: |$ means "I take whatever arguments and don't care about binding them" | ||
colomon | ah | ||
jnthn | colomon: Outside of the setting, we auto-generate a proto | 18:07 | |
colomon: Within the setting we need to write them explicitly for now, iirc. | |||
colomon | auto-generation++ | ||
18:07
shinobicl left
18:08
sftp_ left
18:09
sftp_ joined
|
|||
tadzik | oh, I usually used *@a for that | 18:09 | |
jnthn | tadzik: That only eats positionals though, not names | 18:10 | |
And if you name it, it actually has to allocate an array. | |||
tadzik | I see | ||
I use it only for the EVIL 'BUILD-like-moose' hack anyway :) | |||
colomon | > my @array = <a b b c d e b b b b f b> | 18:12 | |
a b b c d e b b b b f b | |||
> @array.uniq | |||
a b c d e f | |||
> @array .= uniq | |||
splice() not implemented in class 'Mu' | |||
?????? | |||
jnthn | hm | 18:13 | |
colomon: does @array = @array.uniq work? | |||
colomon | no | ||
tadzik | oh, I've seen this bug | 18:14 | |
18:14
ethndbst left
|
|||
jnthn | colomon: OK. I doubt it's your .uniq method's fault | 18:14 | |
colomon | splice isn't called by .uniq | ||
tadzik | nom: my @a = 1, 2, 3; @a = @a.map: { $_ + 1 } | ||
p6eval | nom 8f1f5d: OUTPUT«splice() not implemented in class 'Mu' in method reify at src/gen/CORE.setting:3914 in method gimme at src/gen/CORE.setting:4276 in method eager at src/gen/CORE.setting:4251 in method STORE at src/gen/CORE.setting:4690 in block <anon> at /tmp/Rgchn2mGoe:1 … | ||
18:14
daniel-s left
|
|||
jnthn | tadzik: nqp::splice | 18:14 | |
tadzik: The Parrot level op | |||
dalek | ast: 500ac96 | (Solomon Foster)++ | S32-list/uniq.t: Fudge for nom. |
18:16 | |
tadzik | I suppose so | 18:17 | |
18:21
PlusYan left
18:29
sftp_ left
18:31
sftp_ joined
18:32
imarcusthis left
18:34
molaf joined
18:36
imarcusthis joined,
sftp joined
|
|||
tadzik | t/01-parse.t ...... Failed 1/85 subtests | 18:39 | |
not bad, json | |||
18:39
sftp_ left
|
|||
tadzik | it fails all the other tests though | 18:39 | |
jnthn | Only passes parse? | ||
But fails actions? | |||
OK, probably due to capturing bugs. | |||
tadzik | dunno | ||
yes, it seems so | 18:40 | ||
also, it seems to have parsed '{' :) | 18:41 | ||
18:41
localhost left
|
|||
dalek | kudo/nom: 813c6ae | (Solomon Foster)++ | src/core/ (2 files): Bring uniq over from b. |
18:41 | |
tadzik | colomon++ | ||
jnthn | tadzik: Just '{' ? | ||
Hm | |||
tadzik | jnthn: so say the tests | ||
jnthn | tadzik: Does it ever fail to parse when it should? :) | 18:42 | |
tadzik | jnthn: nope | ||
jnthn | As in, it's not just saying everything is ok? | ||
18:42
localhost joined
|
|||
dalek | kudo/nom: aa25165 | (Solomon Foster)++ | t/spectest.data: Turn uniq.t back on. |
18:42 | |
tadzik | out of 50 tests that ought to parse, 50 parse | 18:43 | |
dalek | p: 4ec1bdf | jnthn++ | / (3 files): Boolification support for bigints. |
||
kudo/nom: 21fcfa3 | jnthn++ | / (2 files): Switch Int to use bigint boolification, to fix bug found my moritz++. |
18:44 | ||
jnthn | er, by :) | ||
tadzik | :) | ||
dalek | kudo/nom: adb4caa | jnthn++ | docs/ChangeLog: Note uniq() in ChangeLog (colomon++). |
18:47 | |
masak | (my moritz)++ | ||
jnthn | OK, dinner time, then more regexy stuffs | 18:48 | |
colomon | jnthn: is there a nom/nqp equivalent to pir::new__PS('File').copy($.path, $dest) ? | 18:51 | |
18:51
risou is now known as risou_awy
|
|||
colomon | (Shoot, wish I'd seen he was going to dinner the second he posted that...) | 18:51 | |
jnthn | colomon: no | ||
colomon: You want something like | 18:52 | ||
18:52
ethndbst joined
|
|||
jnthn | pir::new__Ps('File').copy(nqp::unbox_s($.path), nqp::unbox_s($dest)) | 18:52 | |
colomon | jnthn++ | ||
jnthn | er, be sure that $.path and $dest are already Str before you do that | ||
If not, coerce them first | |||
~ | |||
colomon | yeah | ||
okay, I can probably make some sense of this, with those terrific clues. :) | 18:53 | ||
18:54
sftp left
18:55
sftp joined
|
|||
colomon | are there tests for copy somewhere? | 19:02 | |
tadzik: you're using copy something like "source-file".IO.copy("destination-filename"), right? | 19:03 | ||
tadzik | colomon: I think so, yes | 19:04 | |
colomon | Are you doing error checking on the results? I don't seem to have the return value working yet. :) | 19:05 | |
tadzik | doesn't matter :> | ||
(for me) | |||
it's non-specced anyway | |||
colomon | okay, I can commit what I've got, then. | ||
tadzik | wfm | 19:06 | |
jnthn | Maybe just try nqp::p6bool around the the thing I gave you for the return value for a start | ||
Though should probably fail | |||
colomon | it's doing a try right now, and then looking at $! | ||
same as in b | |||
jnthn | ah, that's probably ok too :) | 19:08 | |
19:08
MayDaniel left
|
|||
jnthn | er, right even. :) | 19:08 | |
(since Parrot probably throws) | |||
colomon | except I tried "not a file".IO.copy("hah!"), and it dutifully returned True. | 19:09 | |
benabik | Did it create hah!? | ||
colomon | so something in there isn't signaling an error properly. | ||
nope | |||
dalek | kudo/nom: c294ae6 | (Solomon Foster)++ | src/core/IO.pm: Add IO.copy. |
19:11 | |
19:13
eiro_ left,
sjn left,
geekosaur left,
Khisanth left,
Grrrr left,
Util left,
nsh_ left,
shachaf left,
breinbaas left,
Bucciarati left,
diakopter left,
charsbar__ left,
LoRe left,
kranius left,
chitragupt left,
Grrrr joined,
diakopter joined,
sjn joined,
breinbaas joined,
shachaf joined,
Bucciarati joined,
kranius joined,
nsh_ joined,
Khisanth joined,
Util joined,
LoRe joined,
charsbar__ joined,
chitragupt joined
19:14
geekosaur joined
|
|||
colomon | tadzik: okay, you have uniq and IO.copy. :) | 19:14 | |
tadzik | colomon: thanks you :) | ||
now panda/builder.t hangs :) | 19:15 | ||
colomon | progress! | 19:18 | |
[Coke] | we have a hanging spectest in t/spectest.data also (that's commented out and not normally run) | ||
[Coke] will find which one... | 19:19 | ||
19:19
molaf left
|
|||
[Coke] | .... whoops. no, just super slow. ;) | 19:19 | |
jnthn: t/spec/S05-grammar/protos.t is now running (but failing 3/4 tests.) | 19:20 | ||
[Coke] will hold off on fudging that one just yet. | 19:23 | ||
19:38
pyrimidine joined
19:54
mj41 left
|
|||
jnthn | [Coke]: Yeah, the underlying bug there really needs fixing | 19:54 | |
20:08
fsergot joined
|
|||
fsergot | hi o/ | 20:08 | |
:) | |||
jnthn | hi, fsergot | ||
20:09
Transformer joined
20:12
Transformer left
|
|||
masak | hi, fsergot | 20:12 | |
dalek | ast: 8917946 | jnthn++ | S05-grammar/protoregex.t: A few basic protoregex LTM tests. |
20:15 | |
p: 89ecefb | jnthn++ | src/QRegex/NFA.nqp: Apply patch from diakopter++ that adds support for ?, + and * quantifiers to LTM. |
20:23 | ||
tadzik | nom: try { die; CATCH {} } | ||
p6eval | nom c294ae: OUTPUT« in block <anon> at /tmp/yWJWrwcd6v:1 in block <anon> at /tmp/yWJWrwcd6v:1 in <anon> at /tmp/yWJWrwcd6v:1» | ||
dalek | ast: 31d0182 | jnthn++ | S05-grammar/protoregex.t: Some basic LTM plus quantifier tests. |
||
tadzik | huh? | ||
hangs locally | 20:24 | ||
20:24
ksi joined
|
|||
tadzik | also, eats CPU like crazy | 20:24 | |
jnthn | tadzik: You are running Parrot 3.10, not Parrot head, yes? | ||
tadzik | head | ||
jnthn | that's why | ||
tadzik | I shouldn't | ||
? | |||
jnthn | mls++ landed a branch related to exceptions | 20:25 | |
and Rakudo needs a patch for it | |||
But we can't apply it until post release. | |||
tadzik | I understand | ||
damn, I created the 'list' tag again | |||
jnthn | heh | ||
tadzik | I fall for that one all the time | 20:26 | |
jnthn has created the 'delete' branch at least twice by now ;) | |||
tadzik | I shouldn't drink and read IRC at the same time | ||
another words, I lol'd ;0 | 20:27 | ||
:) | |||
20:27
cooper joined
|
|||
colomon | as long as that doesn't involve beer coming out of your nose, no worries, I figure! | 20:28 | |
dalek | p: 1db768d | jnthn++ | src/QRegex/NFA.nqp: Add missing handling in NFA engine of CODEPOINT_NEG and CHARLIST_NEG. |
20:31 | |
20:38
snearch joined
20:40
eiro joined
|
|||
dalek | p: 131f8e7 | jnthn++ | src/QRegex/NFA.nqp: Handle CHARCLASS and CHARCLASS_NEG case in NFA engine, so things like \d and \W work with LTM. |
20:41 | |
kudo/nom: 6178be7 | jnthn++ | tools/build/NQP_REVISION: Bump to NQP revision with latest NFA bits. |
20:43 | ||
ast: e3a23f0 | jnthn++ | S05-grammar/protoregex.t: Couple more LTM tests. |
20:44 | ||
20:48
MayDaniel joined
|
|||
tadzik | t/panda/builder.t t/panda/fetcher.t and t/panda/tester.t all pass :) | 20:48 | |
colomon++ # picking up LHF | 20:49 | ||
jnthn | \o/ | ||
tadzik | some failungs in installer.t, plus the lack of Test::Mock | ||
masak | phenny: de "failung"? | 20:50 | |
phenny | masak: "failung" (de to en, translate.google.com) | ||
masak | :) | ||
tadzik | :) | ||
does that mean anything in german? | |||
jnthn | OK so...the release | ||
Anybody want it? :) | |||
masak | jnthn++ # volunteering | ||
jnthn | :P | 20:51 | |
tadzik | lol | ||
jnthn | I was asking if anybody wanted to do it :) | ||
masak | jnthn: it's great of you to just step up like that. | ||
jnthn | OK, I'll take that as a "no, jnthn, go ahead and find out how the release process doesn't work on Windows" | ||
er | |||
If somebody wants to help me | |||
Please could they run tools/contributors.pl | |||
masak | oh, it's your first release? nice! | 20:52 | |
PerlJam | When was the last time anyone did a release on windows? | ||
jnthn | Since that doesn't seem to work out here | ||
PerlJam: er, Inf ago I suspect ;) | |||
tadzik | jnthn: I can pick it up after I finish my sqls | ||
jnthn | tadzik: OK | ||
hmm...and we need a Pm group too :) | |||
er | |||
PM group | |||
:) | |||
PerlJam | That's always the hardest part about the release -- choosing the name | 20:53 | |
tadzik | make it Warsaw :) | ||
jnthn | oh | ||
London.pm hasn't had one named for it | |||
And the LPW was pretty good :) | |||
tadzik | oh, and someone could run the spectests for me, it'll take like 45 minutes here | 20:54 | |
jnthn | And there were Perl 6 talks | ||
tadzik | ...on linux too, if you could :) | ||
can be London | |||
jnthn | +1 | ||
tadzik | but first, oraclefun | ||
jnthn | will udpate stuffs | ||
tadzik: -Oenterprise ;) | |||
Or -Oevil ;) | |||
arnsholt | I can run the spectests on Linux if it's needed | ||
jnthn | arnsholt: the more the merrier :) | ||
arnsholt | I've some cores to spare, now I'm just writing stuff | ||
tadzik | jnthn: -Ohomework :) | 20:55 | |
PerlJam | Hmm. distributed release ... "construction" is interesting. | ||
arnsholt | Just test on HEAD, or some particular revision? | ||
ethndbst | Perl makes me laugh. </random> | ||
tadzik | arnsholt: HEAD I suppose | ||
jnthn | PerlJam: ? | ||
arnsholt | M'kay | ||
tadzik | as in, the release'd be on HEAD | ||
oh, and nqp release | 20:56 | ||
gah | |||
PerlJam | jnthn: doing the individual parts of a release on different machines. | ||
jnthn | tadzik: I can take care of the NQP one | ||
tadzik: well, maybe :) | |||
The tagging at least | |||
tadzik | (: | ||
would be great | |||
well, I'll start that in an hour at best | |||
depending on the bugability of my ENTERPRISE SQL QUERIES | 20:57 | ||
PerlJam | It would also be interesting if we had a "release machine". A box (virtual or otherwise) somewhere that you could issue a single command and it would run through the automatable parts of the release process, then submit a package for a human to okay. Once the human checks off, it automatically creates the release, updates wikipedia, rakudo.org, etc. | 20:59 | |
might make a good gsoc project :) | |||
moritz | \o | 21:00 | |
jnthn | o/ moritz | ||
tadzik | PerlJam: maybe the individual scripts would be a good gci projects | ||
dalek | kudo/nom: d0f6d27 | jnthn++ | docs/ (2 files): Update release guide and announce with choice of London.pm. |
||
PerlJam | tadzik: could be. | ||
moritz | quick note re JSON::Tiny: it relies on ~ in a few places, so protoregex suport alone won't make it run | ||
(though it's easy-ish to patch not to rely on it) | 21:01 | ||
moritz disappears again | 21:04 | ||
jnthn | tadzik: The ChangeLog and announce should be largely in shape-ish | 21:07 | |
Everyone: feel free to check the announce | |||
dalek | kudo/nom: 5390ac6 | jnthn++ | docs/ChangeLog: Note copy in the ChangeLog. |
||
jnthn | github.com/rakudo/rakudo/blob/nom/...ce/2011.11 | ||
tadzik | jnthn: thanks | ||
21:08
daxim_ left
|
|||
jnthn | NQP release tagged | 21:09 | |
dalek | kudo/nom: b9526c6 | jnthn++ | tools/build/NQP_REVISION: Set NQP_REVISION to 2011.11. |
21:10 | |
masak | "amongst the schedule" -- it's fine English, but I just want to point out how silly English is to allow "amongst" to mean "in" :P | ||
jnthn | :P | 21:11 | |
arnsholt | jnthn: Linux spectest is pass on HEAD | ||
masak | jnthn: you could also fill yourself in as the release manager for #46 in the release guide. | ||
jnthn | masak: er, I think tadzik++ intends to finish it up :) | 21:12 | |
masak | oh, ok. | ||
tadzik++ | |||
jnthn | Yeah, the remaining bits are...er...not so fun on Windows ;) | ||
evalbot rebuild nom | 21:13 | ||
p6eval | OK (started asynchronously) | ||
benabik | Rakudo passes basic tests on OS X 10.7. Starting spectest. | 21:14 | |
tadzik | oh, we pass basic test :) | ||
benabik: did that run podtest? | 21:15 | ||
benabik | tadzik: Whatever make test runs. | ||
I'll run podtest too, but it'll be a bit slow with the parallel spectest in the other Terminal. | |||
tadzik: It passes other than t/pod/why.t which failed to parse. | 21:17 | ||
tadzik | oh! | 21:20 | |
works locally | 21:21 | ||
benabik | The extra 4GiB of memory really help out running spectest in parallel. | ||
tadzik | benabik: can you paste the output? | ||
benabik | Hm. GC failure now... | 21:22 | |
tadzik | not this shit again | ||
jnthn | :/ | ||
jnthn thought we'd caught those | |||
benabik: Got a bt? | |||
benabik | gist.github.com/1374579 <-- failures under prove and directly. | 21:23 | |
21:23
buubot_backup left
|
|||
tadzik | the parsefails are new, I didn't see that yet :) | 21:25 | |
also, it seems to be running under Perl 5 | |||
benabik | That would probably do it. :-D | ||
tadzik | te errors are too readable :P | ||
jnthn | benabik: grr...it passes here | ||
Under the debugger too | 21:26 | ||
benabik | :-/ Spectest is clean so far. | 21:27 | |
colomon | benabik: prove -e ./perl6 -v t/pod/why.t works fine for me. | 21:28 | |
jnthn | benabik: Platform? bitness? | ||
er, I mean, wordsize :) | |||
benabik | OS X 10.7, x86_64 | ||
System libffi, icu4c 4.8.1 from perlbrew | 21:29 | ||
homebrew, not perlbrew | |||
tadzik | ok, sqls done | 21:31 | |
on to the release | |||
benabik | I compile parrot with --ccflags=-DPARROT_GC_VALIDATE, --optimize, and --debugging=0. Don't know if those make a difference. | ||
spectest passed. | 21:32 | ||
tadzik | I do just --optimize | ||
[Coke] | ISTR trying a release on windows and giving up. | ||
benabik rebuilds without PARROT_GC_VALIDATE. Probably doesn't help the point of "being faster" with optimize. | 21:33 | ||
21:35
MayDaniel left
|
|||
tadzik | Michael Schroeder is mls? | 21:38 | |
jnthn | tadzik: yes | ||
tadzik | I assume coto is cotto. Hrm | 21:39 | |
moritz: ping | |||
benabik | t/pod/why.t runs fine without PARROT_GC_VALIDATE | 21:40 | |
tadzik | odd | ||
benabik | Not unexpected. It failed at a GC assertion. | 21:41 | |
jnthn should try building with that at some point | |||
benabik | I like using it because it's caught some "interesting" _before_ segfaults. | 21:42 | |
*interesting behavior | |||
dalek | kudo/nom: 617fef9 | tadzik++ | docs/ (2 files): Add a new release announcement, update release_guide |
21:43 | |
tadzik | look through if interested | 21:44 | |
dalek | kudo/nom: 90347c1 | tadzik++ | VERSION: [release] bump VERSION |
21:45 | |
21:45
buubot_backup joined
|
|||
jnthn | nom: grammar yay { proto token TOP { * }; token TOP:sym<x> { proto }; token TOP:sym<y> { \w+ } }; say '\o/ ' ~ yay.parse('protoregexes'); | 21:48 | |
p6eval | nom b9526c: OUTPUT«\o/ protoregexes» | ||
diakopter | \o/ | ||
21:51
fsergot left
21:55
kaare_ left
|
|||
tadzik | release done | 22:04 | |
jnthn | yay! | 22:05 | |
tadzik++ | |||
tadzik | jnthn++ | 22:06 | |
oh, LHF: IO.chmod | |||
colomon: still looking for some? :) | |||
22:07
ksi left
22:13
fsergot joined
|
|||
colomon | tadzik: maybe tomorrow. got 4 hours of musical activities ahead of me at the moment. :) | 22:19 | |
tadzik++ | |||
\ | |||
tadzik | colomon: almost done here, np :) | ||
dalek | kudo/nom: ecc46f4 | tadzik++ | src/core/IO.pm: Copy non-specced IO.chmod from b |
22:21 | |
tadzik | aaand installer.t passes :) | 22:22 | |
jnthn | \o/ | ||
tadzik: Guess we're blocking on the JSON bits? | |||
tadzik: I'll see what I can do about that tomorrow. | |||
tadzik | jnthn: well, I plan on starting a branch using eval and use it for now :) | ||
jnthn: how many tadzik-hours is fixing Test::Mock? | |||
jnthn | tadzik: Well, the problem is mostly that $cap ~~ $sig isn't yet re-implemented in nom | 22:23 | |
tadzik: Once that's done, Test::Mock is probably only a tadzik hour or so | |||
:) | |||
tadzik | :) how is MAIN working around this? | ||
(or is it? :)) | |||
jnthn | It's relying on the sig being attached to a sub. Or something. :) | 22:24 | |
tadzik | (: | ||
jnthn | After a few more regex bits, I'll probably start looking at NCI too | 22:25 | |
tadzik | hmm, that blocker should only apply when using :$with | ||
which I don't | |||
jnthn | Oh. | ||
In that case | |||
You probably just have to change the meta-object stuff | 22:26 | ||
tadzik | I suppose so | ||
jnthn | A .new probably needs to become .new_type, for example | ||
tadzik | anything special about add_method? | 22:27 | |
as in, how should it cope with $!stuff? | 22:28 | ||
self.stuff maybe | |||
masak | $cap ~~ $sig stopped working? oh noes :/ | 22:29 | |
tadzik | err | ||
how is the sub in github.com/jnthn/test-mock/blob/ma...ock.pm#L76 supposed to have access to private methods? | |||
jnthn | my $mocker = ClassHOW.new; # Metamodel::ClassHOW.new_type; | 22:30 | |
tadzik: her, I guess we cheated back then ;) | |||
tadzik | :P | ||
jnthn | *er | ||
tadzik: Remove that for now | |||
tadzik | the privateness I guess? | 22:31 | |
jnthn | tadzik: yeah | ||
oh! | |||
Or remove the method entirely | |||
And use attribute introspection | |||
tadzik | sounds fun | ||
jnthn | $mock.^attributes(:local)[0].get_value($mock) | ||
You know it's [0] because you only added one :) | |||
That is, use that in place of $mock!mock_log | 22:32 | ||
You can do a similar trick for replacing the broken $!log access I suspect | |||
But s/$mock/self/ | |||
tadzik | ===SORRY!=== | 22:33 | |
Could not find sub 226_1321569184.58398 | |||
promising :) | |||
jnthn | masak: If you knew how it was implemented in ng, you'd be less "oh noes" :/ | ||
tadzik: whoa! | |||
tadzik | also, $!log needs to be $.log so we can initialize it in .new | 22:34 | |
but then, has_accessor => False looks odd ;) | |||
jnthn | you leave it as $!log | 22:35 | |
But just pass True instead | |||
Well, or initialize it differently :) | |||
If you're going to give it an accessor you needn't do all the .^attributes rigmarole | |||
But OTOH if the thing has a log method that you're trying to mock, it'll be a problem | 22:36 | ||
So I'd call it something a bit less likely ;) | |||
tadzik | :) | ||
well, we callsame in it anyway, don't we? | |||
jnthn | callsame? | 22:37 | |
22:37
kent\n left
|
|||
tadzik | or not | 22:37 | |
jnthn | No, we don't callsame :) | ||
tadzik | no, I mixed up | ||
nom: my $a = Metamodel::ClassHOW.new_type | |||
p6eval | nom b9526c: OUTPUT«Type check failed in assignment to '$a'; expected 'Mu' but got '<anon>' in block <anon> at /tmp/uiRioQjnYj:1 in <anon> at /tmp/uiRioQjnYj:1» | ||
jnthn | whee | ||
Use binding :) | |||
And file a Rakudo bug. :) | 22:38 | ||
tadzik | :) | ||
jnthn really needs to write a meta-programming test suite or something | |||
tadzik | then dispatch:<.^> fails on it | ||
just .? | |||
jnthn | Do | 22:39 | |
.HOW. | |||
e.g. $a.HOW.add_method($a, ...) | |||
Both of those are the same issue in a sense | |||
It doesn't know it's a Mu by default. | |||
well | |||
tadzik | I see | ||
jnthn | It's meant ot be an Any | ||
At the moment a newly created type is still "outside of the type system" | 22:40 | ||
Probably need to fine an elegant way to lie, in order to make meta-programming unpainful. | |||
tadzik | hmm, cannot dispatch Foo === Mu | 22:43 | |
nom: class Foo {}; say Foo === Mu | 22:44 | ||
p6eval | nom ecc46f: OUTPUT«No applicable candidates found to dispatch to for 'infix:<===>'. Available candidates are::(Any $a):(int $a, int $b):(num $a, num $b):(Int $a, Int $b):(Num $a, Num $b):(Str $a, Str $b):(Any $a, Any $b) in block <anon> at /tmp/nNNWxkheDY:1 in <anon> at /tmp… | ||
tadzik | b: class Foo {}; say Foo === Mu | ||
p6eval | b 1b7dd1: OUTPUT«Bool::False» | ||
jnthn | nom: class Foo {}; say Foo =:= Mu | ||
p6eval | nom ecc46f: OUTPUT«Bool::False» | ||
jnthn | nom: class Foo {}; say Mu =:= Mu | ||
p6eval | nom ecc46f: OUTPUT«Bool::True» | ||
tadzik | is that a regression, or was it wrong? | ||
jnthn | I suspect we'd want it to auto-thread, so we probably shouldn't define it for Mu. | 22:45 | |
jnthn vaguely recalls a discussion on this not so long ago | |||
Pretty sure the outcome was === should auto-thread. | |||
(and so it's defined up to Any === Any) | 22:46 | ||
22:46
envi_ left
22:54
ethndbst left
|
|||
masak | 'night, #perl6 | 23:01 | |
diakopter | o/ | 23:02 | |
tadzik | o/ | 23:03 | |
nom: my $a := Metamodel::ClassHOW.new_type(); $a.HOW.add_attribute($a, Attribute.new(name => '$!foo', has_accessor => True)); my $b = $a.HOW.compose($a); $b.new; | |||
p6eval | nom ecc46f: OUTPUT«(signal SEGV)» | ||
tadzik | in-field I get Cannot look up attributes in a type object in Attribute.compose | 23:04 | |
I suppose I'll leave it for jnthn++ :) | |||
jnthn | tadzik: Will give it a look. | ||
(though tomorrow) | 23:05 | ||
tadzik | great, thanks | 23:06 | |
felher | perl6: my $whatevercode = (*-1); say (1,2,3,4)[$whatevercode]; | 23:16 | |
p6eval | rakudo ecc46f, niecza v11-24-gcdd4e66: OUTPUT«4» | ||
..pugs b927740: OUTPUT«1» | |||
23:16
sivoais left
|
|||
felher | nom++, niecza++ | 23:16 | |
Thats nice :) | |||
23:21
icwiener left
|
|||
tadzik | g'night #perl6 | 23:25 | |
felher | o/ tadzik | ||
jnthn | 'night, tadzik++ | ||
colomon | tadzik++ indeed | 23:33 | |
diakopter | why is there no way to download parrot 3.10 | 23:37 | |
benabik: ^^ | 23:38 | ||
23:38
whiteknight joined
|
|||
diakopter | whiteknight: why is there no way to download parrot 3.10 | 23:38 | |
benabik | ftp://ftp.parrot.org/pub/parrot/releases/devel/3.10.0/ | ||
whiteknight | ...there isn't? | ||
23:38
whiteknight is now known as Guest5617
|
|||
diakopter | it's not linked from www.parrot.org/download | 23:38 | |
Guest5617 | hmmm...weird. 3.9.0 directory doesnt seem to be there either | 23:39 | |
benabik | It's linked to from the release announcement, but the download page still points at 3.8.0! | ||
3.9.0 is ftp://ftp.parrot.org/pub/parrot/releases/supported/3.9.0 | |||
diakopter | I need to 3.10.0 to work on nqpq | ||
diakopter ftps it | |||
Guest5617 | Okay, I verified the tarball is on the server. I'm going to re-trigger the sync | 23:40 | |
ftp://ftp.parrot.org/pub/parrot/releases/devel/3.10.0/ | |||
23:41
Guest5617 is now known as wknight8111
23:42
wknight8111 left,
wknight8111 joined
|
|||
benabik | I updated the link on /downloads. diakopter++ | 23:42 | |
dukeleto | what is nqpq ? | 23:45 | |
felher | is there a way to increase the maximum recursion depth in nom? | 23:46 | |
jnthn | dukeleto: A (temporary) version of nqp we build with the new regex engine. | ||
dukeleto: We can't build it as the actual nqp yet since it's not capable of building itself yet. | |||
dukeleto | also, is the London release cut from nom ? | ||
jnthn: good to know | |||
jnthn | dukeleto: It's all in the same repo as nqp, it's not some big nqp-rx => nqp style transition again. :) | 23:47 | |
dukeleto | diakopter: in case this happens in the future, there is always: github.com/parrot/parrot/tags | ||
jnthn | dukeleto: yes, tadzik++ did it a couple of hours ago :) | ||
dukeleto | tadzik++ # nom.London() | 23:48 | |
wknight8111 | actually, the only file there is the .bz2. I know I definitely uploaded the other archive too | ||
something strange is afoot | |||
benabik | I see a 3.10 .tar.gz as well. | 23:50 | |
23:50
tokuhirom joined
|
|||
wknight8111 | I just re-uploaded it | 23:50 | |
diakopter | jnthn: what blocks nqpq from building itself? | ||
jnthn | diakopter: regex engine incompleteness :) | 23:51 | |
diakopter: And then probably a few grammar updates to handle us having real LTM. | |||
diakopter waits patiently for broken tests from jnthn++ | 23:52 | ||
jnthn | diakopter: Didn't do them as actual tests, just a file of fail output with a bunch of comments. | 23:53 | |
diakopter: Here you go: gist.github.com/1375006 | 23:54 | ||
:) | |||
23:55
benabik_ joined
|
|||
diakopter | jnthn: one way to do ** would be to explode out all the states for each repetition from 0 to min as mandatory then from min+1 to max as optional | 23:56 | |
jnthn | diakopter: Yeah, explode is perhaps the operative word there ;) | ||
But it would indeed work :) | |||
diakopter: I didn't put that one in the file, fwiw. | |||
diakopter | I mean, who's going to do repetition ranges of 65536..1048576 | 23:57 | |
jnthn | I suspect that 1, 3, 4, 7 and 8 don't need to actually do anything in the NFA itself, but rather just cope with some extra stuff that can appear in the QAST tree for the regex and know not to bail out and say it's fate. | 23:58 | |
23:58
benabik left
|
|||
diakopter | QRegex is so fatalist | 23:59 | |
jnthn | (e.g. the NFA builder needs to be made aware that some consturcts shouldn't cause nodes to be put in the NFA, but can be safely ignored) | ||
diakopter | k |