»ö« 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:01
Trashlord left
00:04
replore joined
00:05
replore left
|
|||
jnthn | japhb_: gist.github.com/1233689 | 00:06 | |
Will push in a moment. | |||
japhb_: It gives you back a list of matches. If it's empty, you know that you need to show usage info. Otherwise, go ahead and do the dispatch for real. | |||
00:07
replore_ joined
|
|||
dalek | kudo/nom: 8453ed1 | jnthn++ | src/core/Routine.pm: Add a way to get a set of matching candidates for a multi. |
00:08 | |
jnthn | japhb_: With ^^, it should be relatively straightforward now. :) | 00:09 | |
00:11
uasi joined
00:17
maguro left
|
|||
jnthn | sleep; more Perl 6 hacking tomorrow :) | 00:24 | |
00:26
japhb_ left
00:35
wolfman2000 joined
00:39
thou left
|
|||
[Coke] was just going to give jnthn a hard time for still being awake! | 00:41 | ||
00:56
uasi left
00:57
uasi joined
00:58
benabik joined,
uasi left
01:00
woosley joined
01:01
woosley left
01:02
colomon left,
colomon joined
|
|||
sorear | good * #perl6 | 01:03 | |
01:03
woosley joined
|
|||
colomon | \o | 01:04 | |
01:06
uasi joined
01:07
REPLeffect left
|
|||
benabik | o/ | 01:11 | |
01:19
uasi left
01:20
REPLeffect joined
01:21
Chillance left
01:22
whiteknight left
01:23
cottoo joined
01:24
cotto left
01:27
risou_awy is now known as risou
01:35
cottoo is now known as cotto
|
|||
japhb | Can someone kick whatever updates perl6.org/compilers/features ? It doesn't appear to have picked up jnthn++'s changes, and it's been a couple hours | 01:38 | |
I guess for this channel s/kick/hug/ | |||
jnthn: Thank you, I'll take a look when I'm not chasing young'ns | 01:40 | ||
01:44
wolfman2000 left
01:46
risou is now known as risou_awy
01:57
frhodes left,
frhodes joined
02:01
mykhal left
02:07
REPLeffect left,
REPLeffect joined
02:11
REPLeffect left
02:16
shinobicl_ joined
02:21
mkramer joined
02:23
REPLeffect joined
02:24
mkramer1 left
02:32
Vlavv` joined
|
|||
benabik | HW assignment: "Read an e-mail file, print the From, To, Subject, and Cc headers" Bonus points for brevity. My answer: perl -ne 'exit if/^$/;print if/^(From|To|Subject|Cc):/' | 02:33 | |
I'd take suggestions on shortening it, but that would be cheating. :-D | |||
TimToady++ # Creating expressive languages | |||
02:35
REPLeffect left
02:36
Vlavv left,
REPLeffect joined
|
|||
sorear | benabik: egrep '^(From|To|Subject|Cc)' | 02:38 | |
benabik | sorear: Will print non-header lines that start with those. :-D | ||
sorear | egrep is officially deprecated in favor of grep -E, but, well, brevity | ||
benabik | I suppose I could use see first. | ||
*sed | |||
sorear | hmm | 02:39 | |
02:39
packetknife joined
|
|||
benabik | Although I don't need the : if I know I'm in headers. | 02:39 | |
sorear | something like sed '/^$/q;/^\(From\|To\|Subject\|Cc\)/p' then | ||
benabik | Bluh, but yes. | ||
sorear | or perl -ne 'print if 1../^$/&&/.../' | 02:40 | |
the flip-flop operator is under-appreciated | |||
02:40
REPLeffect left
|
|||
sorear | pity this is a text task, I'd love to show off a J solution but J is not strong with text :D | 02:40 | |
benabik | I don't quite get flipflop sadly. | 02:41 | |
02:42
packetknife left
02:45
uasi joined
02:57
jaldhar joined
02:59
Exodist left
03:00
REPLeffect joined
03:09
REPLeffect left
03:10
uasi left,
REPLeffect joined
|
|||
Tene | sorear: use sed -r instead of all those extra escapes | 03:13 | |
sorear: also, you need -n to surpress unwanted output | 03:14 | ||
felher | Is there a neat way to do function composition in perl6? Something neater than: sub compose($f, $g) { return anon sub ($x) { return $f($g($x)); } } # <---- is that the way one would write a compose function? | 03:15 | |
03:17
shinobicl_ left,
perlygatekeeper left
03:18
shinobicl_ joined
|
|||
sorear | felher: yes, although anon is redundant there | 03:18 | |
felher | sorear: k, thnx :) | 03:19 | |
sorear | felher: as for "something neater", I propose s/compose/infix:<o>/ | 03:20 | |
japhb | A real compose should be agnostic to the signature of $g, right? | ||
felher | sorear++: yeah, sounds good :). 'Neat' was the wrong word in the first place, i guess. I should have used 'builtin'. :) | 03:21 | |
japhb: yeah, i guess it should :) | 03:22 | ||
03:22
odoacre left
|
|||
Tene | yeah, you want to capture/flatten the arg list | 03:23 | |
.u ∘ | 03:24 | ||
phenny | U+2218 RING OPERATOR (∘) | ||
sorear | .u ⎄ | ||
phenny | U+2384 COMPOSITION SYMBOL (⎄) | ||
03:24
odoacre joined
|
|||
sorear | I wonder what that is | 03:24 | |
oh, Keyboard symbols | 03:25 | ||
03:26
uasi joined
|
|||
felher | sub compose($f, $g) { return anon sub (|$x) { return $f($g(|$x)); } } # <--- would one use |$x for that? | 03:28 | |
03:31
REPLeffect left
03:32
shinobicl_ left
03:36
shinobicl_ joined
|
|||
sorear | felher: yes | 03:40 | |
felher | sorear: nice :) | 03:49 | |
sorear: thnx a lot :) | |||
03:49
perlygatekeeper joined
|
|||
japhb | sorear: Would this be correct: | 03:51 | |
gah, unicode pasting hell | |||
03:52
japhb_ joined
|
|||
japhb_ | multi infix:<∘>(&f, &g) { -> |$args { f(|(g(|$args))) } }; sub f($a, $b) { "$a - $b" }; sub g($a, $b, $c) { return $a, $c }; my &h := &f ∘ &g; h(7, 8, 9); | 03:52 | |
japhb | That doesn't work in Rakudo ATM | 03:53 | |
sorear: ^^ | |||
03:57
shinobicl_ left
04:02
geekosaur left
04:03
geekosaur joined
|
|||
sorear | japhb: you shouldn't use | between f and g | 04:04 | |
japhb: what you're doing isn't quite valid, because of a fundamental asymmetry between arguments (plural) and return values (singular, but return makes a parcel) | 04:05 | ||
04:12
envi_laptop joined
04:16
envi_laptop left
|
|||
japhb_ | rakudo: sub compose(&f, &g) { -> |$args { f(|(g(|$args))) } }; sub f($a, $b) { "$a - $b" }; sub g($a, $b, $c) { return $a, $c }; my &h := compose(&f, &g); say h(7, 8, 9); | 04:18 | |
p6eval | rakudo 8453ed: OUTPUT«7 - 9» | ||
japhb_ | rakudo: sub compose(&f, &g) { -> |$args { f(g(|$args)) } }; sub f($a, $b) { "$a - $b" }; sub g($a, $b, $c) { return $a, $c }; my &h := compose(&f, &g); say h(7, 8, 9); | ||
p6eval | rakudo 8453ed: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in sub f at /tmp/92oZ812Xe_:1 in block <anon> at /tmp/92oZ812Xe_:1 in <anon> at /tmp/92oZ812Xe_:1 in <anon> at /tmp/92oZ812Xe_:1» | ||
04:19
araujo left
|
|||
japhb_ | sorear: that ^^ was from an earlier version, before I tried the operator form. Note that without the extra |() between f and g, it fails. | 04:19 | |
04:19
birdwindupbird joined
|
|||
japhb_ | rakudobug or pebcak? | 04:20 | |
04:29
soh_cah_toa left
04:32
envi_laptop joined
04:35
uasi left
|
|||
sorear | japhb_: latent pebcak maybe. |() will work in the simple case of a list of scalar variables, but in general the return ,,, / |() pair discards information | 04:44 | |
04:44
araujo joined,
araujo left,
araujo joined
04:45
mikemol joined,
frhodes left
|
|||
sorear | japhb_: in particular, return(1,2,3) and return((1,2,3)) are the same, but f(1,2,3) and f((1,2,3)) are not | 04:45 | |
04:47
am0c joined
04:48
uasi joined
04:51
araujo left
04:52
araujo joined
04:53
daniel-s joined
04:57
JimmyZ joined
05:03
mberends left
|
|||
moritz | good morning | 05:04 | |
masak | good morning | 05:09 | |
moritz | masak: any thoughts on gist.github.com/1233070 ? | 05:10 | |
masak looks | 05:12 | ||
05:12
bakedb__ joined
|
|||
masak | looks nice and clean. | 05:13 | |
I assume .set_codes is a temporary workaround for lack of .STORE or similar. | |||
sorear | o/ MASAK | 05:14 | |
masak | oh hai SOREAR | ||
masak commutes | 05:15 | ||
05:15
masak left
05:21
SHODAN joined,
araujo left
05:22
araujo joined,
zby_home left
05:25
MayDaniel joined
|
|||
moritz | nqp: nqp::say(pir::typeof__SP($*OUT)) | 05:30 | |
p6eval | nqp: OUTPUT«Contextual $*OUT not foundcurrent instr.: '_block1000' pc 43 ((file unknown):40) (/tmp/R0MGHzx5AX:1)» | ||
moritz | nom: nqp::say(pir::typeof__SP($*OUT)) | ||
p6eval | nom 8453ed: OUTPUT«IO» | ||
05:37
satyavvd joined
05:38
kaleem joined
05:40
MayDaniel left
|
|||
sorear | jnthn: ping | 05:44 | |
05:45
araujo left
05:46
araujo joined,
wtw joined
|
|||
japhb | sorear: so what's the solution for a third-party routine to transparently pass the return from one routine in as the arguments to another without any modification at all? In other words, how do you compose "properly"? | 05:48 | |
05:48
cougnut left
|
|||
sorear | japhb: you're trying to compose an octagonal peg with a round hole. | 05:50 | |
return values and argument lists are not quite the same thing in Perl 6; in general it doesn't make sense to "pass the return from one routine in as the argumentS to another without any modification at all" | |||
japhb | sorear, nevermind how I attempted to do it. Is it *possible* within the confines of spec'ed Perl 6? And if so, how do you do it? | ||
hmmm. That is too bad. | 05:51 | ||
A very subtle loss from the Perl 5 world that I would not have expected. | |||
sorear | japhb: in perl 6, functions return exactly one value | 05:52 | |
it makes total sense to write sub compose(&f,&g) { -> |$args { f(g(|$args)) } } | |||
passing the return value of g as the argument (note lack of s) to f | |||
you could argue that Perl 6 is actually working better here, because you can't write a wantarray-transparent composition in perl 5 | 05:53 | ||
try not to think of return $f, $g as returning two values, because it's not. it's sugar for list construction | |||
japhb | But if g() can only ever return one thing, but f() can take an arbitrary number of things, then the only general composition would be to always flatten the return of g(), I would think | 05:56 | |
And if f() wanted to not have that happen, then it would declare :(|$args) as its signature | |||
sorear | japhb: that fails to be a general composition, for reasons I have already tried to explain. | ||
05:57
cougnut joined
|
|||
sorear | flattenning is a lossy operation, because it tries to DWIM | 05:58 | |
japhb | sorear, then essentially there is no general composition, right? Because you cannot have an external composer that will arbitrarily compose any two Perl 6 subs that *do not know they might be composed*, and thus do not follow a special protocol to make it possible. | 05:59 | |
06:00
cougnut left,
cougnut joined
|
|||
sorear | japhb: how would you write a "general composer" in Pytoh? | 06:01 | |
japhb | Hmmm, come to think of it, you've actually said that it doesn't make sense to even ask, because if a routine can only ever return one thing, there is no sensical way in which one can losslessly pretend it returns an arbitrary number of things. | 06:02 | |
TimToady | that depends entirely on how g binds it | 06:05 | |
japhb | sorear, I wouldn't, since I don't speak Python (I only read it). In a stack language, however, it's trivial. | ||
TimToady | if g binds it as a slurpy, if flattens again | ||
06:05
orafu left,
orafu joined
|
|||
sorear | it's a fairly common pattern in expressionist languages like Perl that a function call is an expression, so a function needs to return values from the same semantic universe as single terms | 06:06 | |
japhb | TimToady, I'm confused. Did you mean g or f? | 06:07 | |
06:07
koban` joined
|
|||
TimToady | oh, f is on the outside, so f | 06:07 | |
sorear | there has been some speculation that Perl 6 should allow returning general Captures, with special binding support; but this would not count as "without any modification at all" | ||
japhb | TimToady, ah, OK, yes, I follow you there. | 06:08 | |
sorear | personally I lean towards forcing the user to explicitly return a Capture object if ey wants a Capture-style return | ||
japhb | sorear, as opposed to letting the caller specify "I want to get a capture back from you"? | 06:09 | |
sorear | japhb: wantarray is long dead. | ||
japhb | sorear, I spoke poorly. | 06:10 | |
sorear | (there has been some speculation about reviving wantarray to support sink contexts, but everything about sink context is currently well into speculation) | 06:11 | |
worr | sorear: what's the perl6 replacement for wantarray()? | ||
japhb | I meant, as opposed to letting the caller specify: "Perl, instead of handing me back whatever the callee thought it was going to send, I want you to build and return a raw Capture instead"? I was asking if that was the opposing position to the "lean towards forcing the user to explicitly return a Capture object if ey wants a Capture-style return". I wasn't sure what the opposing viewpoint to yours actually was. | 06:12 | |
sorear | japhb: oh! sorry, I'm half asleep. | ||
japhb | sorear, np! | ||
sorear | japhb: the opposing viewpoint was to consider &return as (notionally) creating a Capture object in all cases | 06:13 | |
japhb | ah, ok | ||
sorear starts to observe that most languages have the octagonal-returns circular-arguments problem in practice, even where the theory is symmetrical | 06:14 | ||
TimToady | b: sub infix:<∘> (&f, &g --> Block) { -> \$args { f g |$args } }; say ~(&reverse ∘ &ords)("abc") | 06:15 | |
p6eval | b 1b7dd1: OUTPUT«99 98 97» | ||
TimToady | note the passing of a list from ords to reverse | ||
sorear | Haskell culture dictates functions that accept multiple arguments curried but return tuples, so composing stuff often requires liberal application of uncurry and other combinators | ||
Scheme allows return lists with (values), but it isn't used all that much, and there is a strong bias towards designing functions to return exactly one value | 06:16 | ||
japhb | b: say (ords("abc")).WHAT | 06:17 | |
p6eval | b 1b7dd1: OUTPUT«List()» | ||
06:17
araujo left
|
|||
japhb | nom: say (ords("abc")).WHAT | 06:17 | |
p6eval | nom 8453ed: OUTPUT«List()» | ||
sorear | when I say "list" I mean something that can be put on the right side of my @foo = ... and have it DWIM | 06:18 | |
this is simultaneously more and less general than simply "object that ~~ List" | |||
japhb | b: say &reverse.signature.perl | ||
p6eval | b 1b7dd1: OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub' in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp» | ||
sorear | japhb: (*@items) | ||
japhb | heh, p6eval.sorear FTW | 06:19 | |
TimToady | context is applied lazily in Perl 6 at binding time | ||
06:19
araujo joined
|
|||
TimToady | so you can't know whether your return value will be in scalar or list context, because it would require time travel | 06:19 | |
well, in the general case; specific cases may be analyzable | 06:20 | ||
sorear | all contexts in P6 work approximately like string/numeric/boolean context does in Perl 5 | ||
dictated by the consumer, using type-sensitive overloadable methods | |||
although p6 doesn't have any of the syntactic boolean oddities that p5 does (yet?) | 06:21 | ||
japhb | TimToady: so your composition example is working because &reverse has a flattening single argument signature, rather than a more general multiple scalar signature, for example. | ||
TimToady | the slurpy signature doesn't care how many arguments there are | 06:22 | |
it has one formal parameter, if that's what you mean | |||
japhb | TimToady, yes, that's what I meant, and said badly (I'm pretty tired myself. :/) | ||
sorear | TimToady is on my time zone fwiw | 06:23 | |
though I guess he could still be on German Perl Workshop sleepphase, if he went | |||
japhb | As am I, IIRC. I just have had crappy sleep several days running, so I'm bleary. | ||
TimToady | with me, it's usually just brane damaje :) | 06:24 | |
japhb | And yet, the Pun Center of the brain seems to still work fine ... | ||
TimToady | -Opun | ||
sorear | japhb: f g ... works for f=reverse because (*@items) knows what to do with a single argument | 06:25 | |
japhb | sorear, right. | ||
sorear | japhb: a signature like ($f,$g,$h) would work well with f |g ... instead | ||
japhb | sorear, that makes me wonder if the general composer is actually just two forks that introspects f: if it has only one argument, pass it without flattening. Otherwise, flatten in passing. | 06:26 | |
sorry, only one *parameter | |||
wow, my English really is a mess right now | 06:27 | ||
TimToady | a general composer would probably do currying like Haskell, and require geniuses to program it | ||
sorear | japhb: that might be a useful approximation. I doubt it would DWIM in all cases, and I lack the creativity ATM to decide | ||
TimToady would like to make a withdrawal from the creativity ATM | 06:28 | ||
japhb | My mental block is that when I went off to "learn a language from another paradigm", I chose Forth. And if you asked a Forth guy how to do proper composition, he'd look at you as if you asked how you ensured that gravity was working tomorrow. | ||
TimToady | well, note that the reverser ords case would still work with a | composer | 06:29 | |
b: sub infix:<∘> (&f, &g --> Block) { -> \$args { f |g |$args } }; say ~(&reverse ∘ &ords)("abc") | 06:30 | ||
p6eval | b 1b7dd1: OUTPUT«99 98 97» | ||
TimToady | whew! :) | ||
that would be a more p5ish composer | 06:31 | ||
japhb | I guess I kinda came at it from a P5 angle, didn't I? | ||
TimToady | so did I, so did I... :) | 06:32 | |
but the angle has changed a few times since then... | |||
japhb | Not surprising I suppose, since I do it all day ... :-) | ||
heh | |||
sorear | japhb: you might think of forth as having a one-dimensional mindset here | 06:33 | |
in forth, it's not so easy to write something like f(g(x), h(x)), especially when x is a multi-cell object | 06:34 | ||
Perl is much more tree-concious | |||
(all user-level languages without built-in garbage collection need to be forgotten ASAP) | 06:35 | ||
japhb | .oO( : i dup h swap g f ; ) # Which of course only works if x is a single cell, as you point out |
06:37 | |
sorear | well, 2dup and 2swap exist. | ||
but the lack of type encapsulation makes that not extend very well | 06:38 | ||
japhb | sorear, sure, but the underlying assumption is a fixed size of x. | ||
right | |||
You pretty much have to assume x is an address to the thing you really want, and g and h both want addresses. | |||
Oh, hum, and I assumed that h *returns* only 1 cell. Heh, silly me. | 06:39 | ||
Oh dear, if I keep down this path, I'll end up porting my Perl 5 Forth interpreter to Perl 6 .... I'm not so sure that could be strictly classified as sane. | 06:40 | ||
sorear | it's funny, I can remember *writing* at least two forths but I can't remember actually using one | ||
japhb resembles that remark | 06:41 | ||
TimToady | .oO(go forth and multiply...) |
||
japhb | I will say that I understood a *LOT* more of what VM people discuss after writing a Forth. And also got somewhat depressed when reading about some VM or other finally moving forward to the Forth state of the art circa when I was born. | 06:42 | |
Anyway, thank you sorear++ and TimToady++ for a damn fine conversation. | 06:44 | ||
On that note, I think I shall retire for the night. | |||
sorear | if Forth were designed today, I would insist on it having strong(er) typing, garbage collection, and higher-order functions | 06:46 | |
sleep well | |||
06:48
araujo left,
bakedb__ left
06:49
araujo joined
06:50
bakedb__ joined
06:51
ZapZ_ left
06:55
bakedb__ left
07:00
mj41 joined
07:01
araujo left
07:02
envi_laptop left
07:06
araujo joined
07:07
bakedb__ joined
07:16
araujo left
07:17
araujo joined
|
|||
sorear out | 07:24 | ||
07:31
uasi left
07:35
woosley left
07:47
araujo left
07:48
araujo joined
07:56
toebu joined
08:02
stu joined
08:06
stu left,
uasi joined,
bakedb__ left
08:07
ountscu joined
|
|||
ountscu | o/;\o | 08:07 | |
hi monks!a problems~~ how to fix this when compile nqp,I got an error :get_pointer() not implemented in class 'GLOBALish' | 08:10 | ||
08:13
araujo left
08:14
araujo joined
08:15
birdwindupbird left
08:16
birdwindupbird joined
|
|||
moritz | ountscu: hi. Which parrot revision are you using? | 08:17 | |
ountscu | Parrot version 3.8.0-devel built for amd64-linux | 08:19 | |
moritz | ountscu: nqp currently requires 3.8.0 (released version). For newer parrots you need to use the kill-useless-defaults branch of nqp | 08:20 | |
ountscu | a new nqp branch? I never notice it before. thanks!! | 08:23 | |
moritz | it's only a day or two old | ||
and will be merged into master after the rakudo release | |||
ountscu | looks like a newborn baby? when will release the new rakudo? | 08:26 | |
moritz | tomorrow, probably | ||
ountscu | what's new about the new release? | 08:27 | |
moritz | lots of things :-) | ||
a new meta object model | |||
improved speed | |||
better enums, better parameterized roles, ... | |||
see the top of github.com/rakudo/rakudo/blob/nom/.../ChangeLog | 08:28 | ||
ountscu | excellent!I can't wait to try it.thanks !moritz! | 08:32 | |
08:36
araujo left
08:37
ountscu left
|
|||
jnthn | morning, #perl6 | 08:42 | |
moritz | morning jnthn | 08:43 | |
08:44
dakkar joined
08:48
daxim joined
|
|||
jnthn | pir::find_encoding__is(nqp::unbox_s(pir::perl6_decontainerize__PP($encoding))) | 08:48 | |
hmm...I thought nqp::unbox_s would already decontainerize...maybe not | 08:49 | ||
moritz | if it does, I can simplify some of my code quite a bit :-) | ||
jnthn | inline op repr_unbox_str(out STR, in PMC) :base_core { PMC *var = decontainerize(interp, $2); | ||
Yes, looks like it does. | |||
moritz | \o/ | ||
jnthn | getattr does not. | ||
moritz | ah right, you sometimes want to access the attribute of a container, but you never want to unbox it :-) | 08:50 | |
jnthn | Aye | ||
08:52
araujo joined
|
|||
mls_ | morning perl6! | 09:01 | |
Woodi | moritz: :) help | 09:03 | |
moritz | Woodi: what can I do you for? | 09:04 | |
Woodi | i just tried test why IO::Socket::INET hangs for me and stuck on .new... | ||
moritz | waitwaitwait | ||
start from the beginning | |||
which version of rakudo are you using? | |||
Woodi | k | ||
how to write: my $s = IO::Socket::INET.new( $host, $port); | 09:05 | ||
moritz | my $s = IO::Socket::INET.new( :$host, :$port); | ||
Woodi | :$host, :$port was working yesterday for me :) Star here | ||
mls_ | (strace is your friend ;) ) | 09:06 | |
moritz | which star? | ||
perl6 --version | |||
Woodi | This is Rakudo Perl 6, version built on parrot 3.6.0 0 | 09:07 | |
problem is i have module where it works but new file test-recv.pl do not :) | 09:08 | ||
pastebin.com/D3aUM9q0 | 09:10 | ||
moritz | I think somebody reported that recv hangs | ||
09:12
araujo left
|
|||
Woodi | i have problem before recv and send... .new fails. and something listens on the port | 09:12 | |
i use 'get' line by line for now | |||
moritz | how does it fail? | 09:13 | |
09:13
araujo joined
|
|||
Woodi | .send not def on Failure | 09:13 | |
possible I::S::I need to be instantiated in class ? | 09:14 | ||
moritz | my $s = IO::Socket::INET.new( :$h, :$p ) or die(); | ||
that's wrong | |||
the names of parameters are 'host' and 'port', not 'h' and 'p' | 09:15 | ||
so use | |||
.new(host => $h, port => $p) or so | |||
tadzik | jnthn: why in candidates-matching checker() is a sub, and not just inlined there? | ||
good morning channel | |||
Woodi | damn | 09:16 | |
ok, recv (without buf) hangs... | 09:17 | ||
09:17
robinsmidsrod left
|
|||
Woodi | thanx, cannot grasp params for %args... | 09:18 | |
moritz | $ echo "foo"| ./perl6 -e 'say $*IN.read(2).list.perl' | 09:20 | |
Array.new(102, 111) | |||
Woodi | btw. in perl5 using hash as param was much slower (if i understund correct), and thats AnyEvent autor wroted additional API without %. how in perl6 ? | ||
moritz | \o/ | ||
tadzik | \o/ | 09:21 | |
moritz | Woodi: the problem in perl 5 was that hashes were flattened into argument lists, and later needed to be reconstructed | ||
Woodi: that problem doesn't exist in Perl 6 anymore | |||
Woodi | ah, k :) | ||
moritz | if you declare a hash, and pass in a hash, it's pass-by-reference | 09:22 | |
(but write protected) | |||
Woodi | just by-pointer-access | ||
in C terms | |||
moritz | yes | ||
jnthn | tadzik: To want a context without the invocant. | 09:23 | |
s/want/get/ | |||
09:24
uasi left
|
|||
dalek | kudo/nom: 5a5f068 | moritz++ | / (4 files): implement basic, cheating Buf The "cheat" part is that it is actually a Buf8, not something that can store arbitrary integers |
09:24 | |
kudo/nom: f516563 | moritz++ | src/core/IO.pm: IO.read |
|||
kudo/nom: 1186484 | moritz++ | src/core/Buf.pm: simplify some Buf code, jnthn++ |
|||
09:33
replore_ left
09:34
cotto left
|
|||
moritz | $ ./perl6 -e '$*OUT.write(Buf.new(1, 2))'|hexdump -C | 09:36 | |
00000000 01 02 |..| | |||
09:36
replore_ joined
|
|||
jnthn | nice :) | 09:36 | |
moritz++ | |||
moritz | hacking on Buf is fun! | 09:37 | |
I know the tools for interfacing with parrot PMCs well enough these days | |||
dalek | kudo/nom: be999e7 | moritz++ | src/core/IO.pm: IO.write(Buf) |
||
moritz | and I get good encapsulation between rakudo and parrot | ||
evalbot rebuild nom | 09:38 | ||
p6eval | OK (started asynchronously) | ||
09:38
uasi joined
|
|||
moritz | nom: say (23, 56, 8).fmt('%02x', ' '( | 09:38 | |
p6eval | nom 8453ed: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 1» | ||
moritz | nom: say (23, 56, 8).fmt('%02x', ' ') | ||
p6eval | nom 8453ed: OUTPUT«17 38 08» | 09:39 | |
jnthn | For the nom version of Zavolaj, I'm thinking about switching over to the lowercase types. | ||
So that we can do sized types also. | |||
moritz wonders how to best .gist a Buf | 09:40 | ||
I though of Buf:0x<a0 f3 08> | |||
or maybe something more like hexdump output | |||
Buf:<Stra.e> and then some form of hex representation afterwards | 09:41 | ||
09:41
araujo left
09:43
araujo joined,
araujo left,
araujo joined
|
|||
jnthn | Some kind of hex dump is perhaps most useful. | 09:43 | |
moritz | I'll go with hex only for now, and think about cleverer solutions later | 09:44 | |
09:47
jferrero left
|
|||
dalek | kudo/nom: 56df3d9 | moritz++ | src/core/Buf.pm: Buf.gist, eqv for Buf |
09:54 | |
kudo/nom: 5a7752c | moritz++ | NOMMAP.markdown: update NOMMAP Buf is now "good enough" (I hope) to be removed from the punch list, and the segfault in mandelbrot-color is long gone |
09:56 | ||
moritz | jnthn: are WhateverCode closures cheaper than ordinary blocks in any way? | ||
(I suspect they might not need $_) | |||
nom: say (1, 1, 2) <<+>> (1, 2) | 09:59 | ||
p6eval | nom be999e: OUTPUT«2 3 3» | ||
moritz | nom: say (1, 1, 0, 0) <<+>> (1, 2) | ||
p6eval | nom be999e: OUTPUT«2 3 1 2» | ||
10:00
SHODAN left
|
|||
moritz | nom: say (1 xx -2).perl | 10:05 | |
p6eval | nom be999e: OUTPUT«().list» | ||
10:05
araujo left
10:06
araujo joined
|
|||
jnthn | moritz: Yes, they are a bit cheaper. | 10:09 | |
moritz: They don't get the $_. | |||
moritz | rakudo: say ~^5 | 10:11 | |
p6eval | rakudo be999e: OUTPUT«0 1 2 3 4» | ||
moritz | uhm, what's bitwise negation? | ||
flussence | +~ ? | ||
moritz | I meant stringy bitwise negation, sorry | ||
flussence | rakudo: say ~^ 5 | 10:12 | |
p6eval | rakudo be999e: OUTPUT«0 1 2 3 4» | ||
flussence | hm, it's not that... | ||
moritz | S03:687 says it should be ~^ | 10:13 | |
flussence | rakudo: say ~^ "5" | ||
p6eval | rakudo be999e: OUTPUT«0 1 2 3 4» | ||
flussence | argh | ||
Woodi | which nom branch i need for 'rakudo-dev' atm ? | ||
moritz | ah, but the grammar knows only of infix:<~^>, not of prefix | ||
Woodi: nom | |||
Woodi | thanx | 10:14 | |
moritz | b: say ~^'foo' | 10:17 | |
p6eval | b 1b7dd1: OUTPUT«No applicable candidates found to dispatch to for 'prefix:<~^>'. Available candidates are::(Buf $a) in main program body at line 22:/tmp/dNcMTW4qAg» | ||
snarkyboojum | how does stringy bitwise negation work? | ||
moritz | 1) assume a bit width 2) negate | 10:18 | |
snarkyboojum | doesn't seem like a very clear concept, considering we don't know the bits which constitute a string | 10:19 | |
assume a bit width? | |||
moritz | well, if you only have Latin-1, you can just subtract each codepoint from 255 | ||
that would be 8 bit width | |||
snarkyboojum | so depends on the current char encoding eh? | ||
moritz | S03:687 has a bit on that | 10:20 | |
"The use of coercion probably indicates a design error" :-) | 10:21 | ||
snarkyboojum | seems dodgy to me ;) | ||
moritz | also note that it returns a Buf, not a Str | 10:22 | |
so it doesn't round-trip | |||
moritz proposes an alternative algorithm | |||
chose a random number at least as high as the highest assigned codepoint | 10:23 | ||
subtract the codepoints from that | |||
and... have fun! | |||
moritz -> lunch, or so | |||
10:24
cotto joined,
koban` left
|
|||
Woodi | but how actualy to get nom branch of github.com/perl6/nqp.git ? only match-nom and it seems to be old. or other repo ? | 10:28 | |
dalek | kudo/nom: 909cc3c | moritz++ | src/ (2 files): parse prefix:<~^>, and implement it for Buf also add Buf.elems |
||
bbkr | Buf and Str.encode in NOM! santa clause has come early this year :) | ||
moritz | Woodi: use master | ||
(my fellow lunch nommers aren't ready yet...) | 10:29 | ||
Woodi | oki | ||
10:30
espadrine joined
|
|||
Woodi | compilation fails with called from Sub '_block1000' pc 196 (src/stage0/NQP-s0.pir:102) (src\stage2\gen\NQP.pm:1) in src/stage1/nqpmo.pbc | 10:30 | |
moritz | Woodi: which parrot do you have?] | 10:31 | |
Woodi: and what's the error before the one you just pasted? | |||
Woodi | i use perl Configure.pl --with-parrot=/opt/perl6/bin/parrot (just compiled parrot 3.8.0)... | 10:32 | |
moritz | the best way to build rakudo/nom is to 'git checkout 'nom' in the parrot branch, and then do perl Configure --gen-parrot && make | ||
hm, 3.8.0 should be fine | |||
Woodi | i hate --gen-*... | ||
moritz | (later development versions are not good) | ||
Woodi | so i need 'nom' branch in parrot not github-nqp-master ? | 10:33 | |
10:34
im2ee joined
|
|||
Woodi | lunch is good idea... | 10:34 | |
im2ee | Hello! :) | ||
tadzik | hello | 10:40 | |
10:41
araujo left
10:42
araujo joined,
araujo left,
araujo joined
10:45
envi joined
|
|||
bbkr | rt.perl.org/rt3/Ticket/Display.html?id=96430 (worth quick-implementing if Buf is already today's topic) | 10:49 | |
dalek | kudo/nom: 9a2f7fc | jnthn++ | src/Perl6/Metamodel/NativeHOW.pm: Make Int ~~ int and various other things on native type objects not explode. |
10:52 | |
kudo/nom: 1e27868 | jnthn++ | src/Perl6/Metamodel/NativeHOW.pm: NativeHOW should just compose MROBasedTypeChecking, not do its own thing. |
|||
kudo/nom: 6a20116 | jnthn++ | src/Perl6/Actions.pm: Basic support for an argument with trait_mod:<is>. |
|||
kudo/nom: 6eee0ca | jnthn++ | src/ (3 files): Stub in a few sized natives. No associated functionality yet. |
|||
10:54
benabik left
|
|||
JimmyZ | does num32 is Int right ? | 11:02 | |
11:04
uasi left
11:05
araujo left,
araujo joined
|
|||
snarkyboojum | JimmyZ: does that depend on the machine word size | 11:06 | |
11:06
masak joined
|
|||
Woodi | is it possible to 'tie' scalar like in p5 to increment on access ? eg: my $i=0; v6tie( $i) {...}; say "0: $i"; say "1: $i"; | 11:06 | |
masak | im2ee: I have an even shorter solution to the problem from yesterday :) | ||
flussence | I'm at a complete loss what's wrong here... the method on line 7 never gets called: github.com/flussence/Pod-Tree-Walk.../Walker.pm | 11:07 | |
(and no error) | |||
masak | im2ee: namely, just generate all possible strings from the regex /<[abc]> ** 1..4/ -- a kind of "reverse regex matching", as it were. | ||
im2ee: there's no mechanism to do that in Perl 6 itself, but it can easily be provided through a module. | 11:08 | ||
JimmyZ | jnthn: there may be some typo in 6eee0ca | ||
im2ee | masak, could You show me this? | 11:09 | |
dalek | kudo/nom: 60e9ad7 | jnthn++ | src/core/natives.pm: Fix copy-paste fail noticed by JimmyZ++. |
11:11 | |
Woodi | flussence: you try without declare recurse-node without Pod::Block type ? | 11:13 | |
s/wihout// | |||
whatever :) | |||
tadzik | flussence: I get a PASS | 11:14 | |
flussence | tadzik: does it at least print out that "In recurse" bit? | 11:15 | |
tadzik | flussence: nah, doesn't seem so :/ | 11:16 | |
flussence | I think I figured it out... | ||
yep, it's that multi bug from yesterday... | 11:17 | ||
jnthn | flussence: Got a link to the nopaste handy? | ||
flussence | the one from yesterday? | 11:18 | |
jnthn | yes | ||
flussence | gist.github.com/1232212 | ||
11:21
uasi joined,
replore_ left
|
|||
masak | im2ee: only an earlier example of the same that I made a few months back: gist.github.com/908829 | 11:22 | |
but the principle is the same. | |||
that script prints 36 different strings on the form 'henning', 'manall', 'menkell', etc. | 11:23 | ||
jnthn | flussence: Did you file an RT ticket? | 11:25 | |
im2ee | ok :) | 11:26 | |
masak | im2ee: so a solution could be as simple as `use GGE; .say for generate GGE::Perl6Regex.new('<[abc]> ** 1..4').exp` | 11:29 | |
flussence | I've been trying to avoid making Yet Another Website Account, but if you really want me to... :) | ||
jnthn | flussence: You don't have to | ||
You just send an email. | |||
flussence: I have a patch, I just want a ticket to make sure it gets tests. | |||
flussence | whoa, didn't know that | ||
im2ee | masak++, thanks. :) | ||
flussence | will do | ||
jnthn | masak++ probably knows the address off by heart too :P | 11:30 | |
flussence | ooh, will this "perlbug" program work for perl6 bugs? | 11:32 | |
jnthn | not afaik | ||
flussence | aww | ||
dalek | kudo/nom: e5fab7f | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm: Fix generic instantiation bug that led to over-sharing of dispatchee lists. |
||
jnthn | flussence: e5fab7f should fix your issue | 11:33 | |
flussence | \o/ | ||
moritz comes back from lunch and sees patches. o/ | |||
flussence | (hm, I *could* add the test myself... | ||
jnthn | flussence: That also works :) | 11:34 | |
JimmyZ | nom: say int | ||
p6eval | nom 909cc3: OUTPUT«No method cache and no find_method method in meta-object in sub say at src/gen/CORE.setting:4811 in <anon> at /tmp/uGMdrkqv8l:1 in <anon> at /tmp/uGMdrkqv8l:1» | ||
jnthn | JimmyZ: Fixed that one earlier today, but p6eval didn't rebuild yet. :) | 11:35 | |
JimmyZ | loop { jnthn++; sleep 1; } | ||
11:36
Psyche^ joined
|
|||
jnthn | flussence: Long story short, it was a bug in proto auto-generation, but the underlying issue was actually in the mechanism I built the auto-gen on. | 11:36 | |
flussence | looks a bit more involved than I'd imagined it... I thought it was just forgetting to check the multi name :) | 11:38 | |
jnthn | No, it was quite deep. | 11:39 | |
11:40
Patterner left,
Psyche^ is now known as Patterner
11:45
JimmyZ left
|
|||
masak | jnthn: what [email@hidden.address] ? :) | 11:45 | |
jnthn | :) | ||
masak | I do, but I usually rely on tab completion. | ||
jnthn | see! :) | 11:46 | |
masak | 'r' <Tab> | ||
perl6: try { die "OH NOES"; CATCH { say $! } } | 11:51 | ||
p6eval | pugs: ( no output ) | ||
..rakudo 909cc3, niecza v9-32-g380d891: OUTPUT«Any()» | |||
masak | b: try { die "OH NOES"; CATCH { say $! } } | ||
flussence | t/spec/S12-methods/multi.rakudo dies at test 5 for me, anyone else seeing that? | ||
p6eval | b 1b7dd1: OUTPUT«OH NOES» | ||
masak | sorear: I think b is correct here. | ||
sorear: want me to submit a nieczabug? | 11:52 | ||
moritz | the spec on exceptions is still very vague | ||
jnthn | masak: TimToady said the other day that $! doesn't contain the current exception in CATCH | ||
masak: At lesat, afaik | |||
masak: So, nom and niecza are probably right. | 11:53 | ||
masak: Look in $_ | |||
11:53
pernatiy left
|
|||
jnthn | masak: Rationale is that the body of CATCH is implicitly a loop, iiuc. | 11:53 | |
masak | ok. | 11:54 | |
makes some sense, yes. | |||
perl6: try { die "OH NOES"; CATCH { .say } } | |||
p6eval | niecza v9-32-g380d891: OUTPUT«OH NOES» | 11:55 | |
..pugs: ( no output ) | |||
..rakudo 909cc3: OUTPUT«Any()» | |||
masak | niecza++ | ||
jnthn | Hopefully the in-development mls++ patch will help nom there. | ||
masak | though if we're talking about Least Surprise, $! is definitely where it should be. I don't think it's just me. | ||
tadzik | I'd expect $! too | ||
why wouldn't it be there? | 11:56 | ||
jnthn | Note that | ||
11:56
donri joined
|
|||
jnthn | try { die "OH NOES" }; say $! # should be OH NOES | 11:56 | |
tadzik | yes | ||
moritz | flussence: multi.rakudo dies after test 16 here, and has a few failures before | ||
11:57
woosley joined
|
|||
jnthn | huh, I got a clean spectest run... | 11:57 | |
oh, no wonder, it's commented out in spectest.data. | 11:58 | ||
moritz | ah :-) | ||
jnthn | It's correct that it does | 11:59 | |
*dies | |||
The test file is wrong with regard to the new proto spec. | |||
masak | perl6: say sprintf "<%10s>", "foo" | ||
p6eval | niecza v9-32-g380d891: OUTPUT«<foo>» | ||
..pugs, rakudo e5fab7: OUTPUT«< foo>» | |||
masak submits nieczabug | |||
jnthn | hmm...this test file is kinda crufty. | 12:03 | |
moritz | bbkr: this commit should make you happy.... | ||
dalek | kudo/nom: 2466044 | moritz++ | src/core/IO/Socket.pm: IO::Socket.read (returns Buf) |
12:04 | |
bbkr | moritz++ ! | 12:05 | |
moritz | bbkr: it would be nice if you could test it with non-ASCII chars | ||
masak | moritz++ | 12:06 | |
jnthn | moritz++ | ||
12:07
satyavvd left
12:08
bakedb joined,
am0c left
|
|||
dalek | ast: a28816d | jnthn++ | S12-methods/multi.t: Fix one of the many issues in S12-methods/multi.t; needs a good going over due to new dispatch semantics. |
12:09 | |
12:11
robinsmidsrod joined
|
|||
bbkr | moritz: building patched rakudo right now... | 12:11 | |
12:11
araujo left
|
|||
moritz | bbkr: no hurry (but of course I don't object to quick feedback :-) ) | 12:11 | |
12:12
araujo joined
|
|||
dalek | ast: e17926a | jnthn++ | S12-methods/multi.t: Toss some incorrect deferral tests; we test that properly in more appropriate test files. |
12:13 | |
flussence | I've golfed down the paste to a pretty small test file - is there a good place to stick that or should I hold off until the rest of multi.t works? | ||
dalek | ast: 42b0117 | jnthn++ | S12-methods/multi.t: Fudge a few tests; now this runs on nom. |
12:15 | |
flussence | there's my answer :) | ||
jnthn | :) | ||
Woodi | my $resp = $!sock.get(); my $len = substr( $resp, 1, $resp.bytes - 2 ); $resp = $!sock.recv( $len ); # expected Int but got Str instead | 12:17 | |
no Str -> Int conversion ? | 12:18 | ||
automagic one... | |||
moritz | Woodi: we probably should have. Use $len.Int for now | ||
Woodi | oki | ||
jnthn | not Cool | 12:19 | |
:P | |||
[Coke] stares at you over his coffee. | 12:20 | ||
dalek | kudo/nom: 42abf87 | jnthn++ | t/spectest.data: Run S12-methods/multi.t. |
||
moritz | nom: sub f(Cool $x as Int = 3) { say $x }; f | 12:21 | |
p6eval | nom e5fab7: OUTPUT«3» | ||
dalek | ast: d7c5956 | jnthn++ | S12-methods/multi.t: Unfudge 3 tests that nom passes that master did not. |
12:22 | |
moritz | bbkr: would you be fine with changing $.liste in IO::Socket::INET from Int to Bool? | ||
dalek | ast: d218bab | flussence++ | S12-methods/multi.t: Add a test for the fix in rakudo e5fab7f |
12:23 | |
flussence | ooh, I just figured out a neat trick - "git rebase origin/master" gets rid of noise from trivial merge commits | 12:24 | |
moritz | flussence: that's what git pull --rebase does | 12:25 | |
jnthn | I use...what moritz said :) | ||
moritz | you can even alias pr = pull --rebase or so | ||
flussence goes and does that right away since I'll probably forget it later :) | |||
bbkr | moritz: Bool $.listen seems more correct | 12:26 | |
12:26
JimmyZ joined
12:28
benabik joined
12:31
koban` joined
|
|||
moritz | bbkr: I've made it a Bool, but the constructor coerces to Bool, so that old code with :listen(1) will continue to work | 12:33 | |
dalek | kudo/nom: 8ba1a33 | moritz++ | src/core/IO/Socket (2 files): [IO] accept Cool args; $.listen is now Bool |
||
moritz | Woodi: there you have the automagic Str -> Int conversion :-) | ||
12:35
araujo left
|
|||
JimmyZ | rakudo: multi trait_mod:<is>($t, :$ne!) { say $ne; } ; my native f is ne { } | 12:36 | |
p6eval | rakudo e5fab7: OUTPUT«===SORRY!===No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are::(Mu $type, Any $size, Any $nativesize):(Attribute $attr, Any $rw):(Attribute $attr, Any $readonly):(Routine $r, Any $rw):(Routine $r, Any $default):(Par… | ||
jnthn | JimmyZ: Need a Mu on that $t | 12:37 | |
12:37
araujo joined
|
|||
JimmyZ | oh yes, thanks | 12:37 | |
JimmyZ wonders how to use multi trait_mod:<is>(Mu $t, $b, $d, :$ne!) { say $b; } ; | 12:39 | ||
jnthn | You don't. | ||
Different trait mods need you to write the appropraite signature. | |||
12:41
bluescreen10 joined
|
|||
JimmyZ | I can't pass a value to :$ne ? | 12:41 | |
jnthn | Yes, one | ||
is my_trait(42) | 12:42 | ||
moritz | what about my_trait(1, 2, :foo) ? | ||
JimmyZ | rakudo: multi trait_mod:<is>(Mu $t, :$ne!) { say $ne; } ; my native f is ne(45) { } | ||
p6eval | rakudo e5fab7: OUTPUT«===SORRY!===No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are::(Mu $type, Any $size, Any $nativesize):(Attribute $attr, Any $rw):(Attribute $attr, Any $readonly):(Routine $r, Any $rw):(Routine $r, Any $default):(Par… | ||
moritz | is that supposed to work? | ||
jnthn | Probably passes a parcel | 12:43 | |
moritz | makes sense | ||
jnthn | JimmyZ: No, you need an argument | ||
Mu $t, $arg, :$ne! | |||
jnthn tries to figure out how NativeCall should look in nom. | 12:44 | ||
JimmyZ | so I can't pass a vlue to ne directly? | ||
*value | |||
jnthn | no | 12:45 | |
It's only role is to disambiguate the dispatch. | 12:46 | ||
*its | |||
Note that originally we used to require you to declare a type with the role name. | |||
grr | |||
with the trait name | |||
dalek | kudo/nom: 4152d21 | moritz++ | LHF.markdown: update NOMMAP |
12:51 | |
12:51
espadrine left
|
|||
JimmyZ | rakudo: multi trait_mod:<is>(Mu $t, $size, Mu $r) { say $ne; } ; Role A { ... }; my native f is A(45) { } | 12:51 | |
p6eval | rakudo e5fab7: OUTPUT«===SORRY!===No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are::(Mu $type, Any $size, Any $nativesize):(Attribute $attr, Any $rw):(Attribute $attr, Any $readonly):(Routine $r, Any $rw):(Routine $r, Any $default):(Par… | ||
Woodi | thank you moritz++ :) | 12:52 | |
JimmyZ | rakudo: multi trait_mod:<does>(Mu $t, $size, Mu $r) { say $ne; } ; Role A { ... }; my native f does A(45) { } | ||
p6eval | rakudo e5fab7: OUTPUT«===SORRY!===Unable to parse $*PKGDECL definition at line 1, near "does A(45)"» | ||
jnthn | role, not Role | 12:53 | |
moritz | rakudo: multi trait_mod:<is>(Mu $t, $size, :$r!) { say $size }; my $x is r(42); | ||
p6eval | rakudo e5fab7: ( no output ) | ||
jnthn | And we don't do variable traits just yet. | ||
JimmyZ | rakudo: multi trait_mod:<does>(Mu $t, $size, Mu $r) { say $ne; } ; role A { ... }; my native f does A(45) { } | ||
p6eval | rakudo e5fab7: OUTPUT«===SORRY!===Method 'add_role' not found for invocant of class 'Perl6::Metamodel::NativeHOW'» | ||
moritz | and adventurous soul could backport Buf.unpack from b | 12:54 | |
masak | sounds like fun :) | 12:56 | |
I might have a look at it after $dayjob | |||
12:58
ggoebel left
13:00
araujo left,
araujo joined
|
|||
moritz wonders if IO::Socket.recv makes sense in its current form | 13:09 | ||
13:09
sayu joined
|
|||
flussence | "Looks like you failed 164 tests of 47598" # whee, database-driven tests! | 13:15 | |
13:17
Holy_Cow joined,
Holy_Cow left
|
|||
colomon | woah, nom is actually faster than niecza at running sin.t now! jnthn++ mls++ | 13:19 | |
bbkr | moritz: I've checked read on non-ascii. works superfine. except one issue - if you chop multibyte char in half you cannot extend received Buf like in previous release ($buf.contents.push(next_chunk)) as current $buf.list is a copy. This is not read() issue itself, and proper Buf ~ and ~= operators hopefully will resolve the issue in the future. | 13:20 | |
Woodi | moritz: do better thing, atm +- hour or two every network module is broken anyway, imo :) | ||
jnthn | colomon: whoa. | ||
JimmyZ | nom: say int.HOW | ||
p6eval | nom 8ba1a3: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::NativeHOW' in sub say at src/gen/CORE.setting:4824 in <anon> at /tmp/ngVV9ELux6:1 in <anon> at /tmp/ngVV9ELux6:1» | ||
moritz | bbkr: Buf.new($b1.list, $b2.list) should work for concatenation | 13:21 | |
"work" | |||
as in, work around | |||
moritz wonders how much list-ish and how much str-ish interface Buf should have | |||
colomon | jnthn: to be far, that's including niezca's pig-like startup speed. but still, sin.t working in 2.5 seconds on nom is pretty darned great! seems like it was about 50 seconds last time I tried timing it... | ||
jnthn | colomon: That's...quite a speed up! | ||
colomon: And yes, we probably win just on startup speed. | 13:22 | ||
But still, progress in right direction... | |||
moritz | 4.9s here for sin.t | ||
bbkr | moritz: I use this hack. but it is painfully slow. if you read data in 100 chunks without ~= operator you have to rewrite 5049 x sizeof(chunk) amount of data to new bufs. | 13:24 | |
JimmyZ | nom: say int.^methods().perl.say; | ||
p6eval | nom 8ba1a3: OUTPUT«Method 'methods' not found for invocant of class 'Perl6::Metamodel::NativeHOW' in method dispatch:<.^> at src/gen/CORE.setting:702 in <anon> at /tmp/OehE3UPDFv:1 in <anon> at /tmp/OehE3UPDFv:1» | ||
colomon | running all the trig tests just took me 30.6 seconds. \o/ | ||
moritz | bbkr: hm, will think about it | 13:25 | |
jnthn | JimmyZ: I'm not sure if you can (or should be able to) put methods on a native. | ||
bbkr | moritz++ | ||
jnthn | JimmyZ: It doesn't really make sense. You'd never be able to call them, other than on the type object. | 13:26 | |
mls_ | perl6: succeed; | ||
p6eval | pugs: OUTPUT«*** No such subroutine: "&succeed" at /tmp/Gthfd3q_tZ line 1, column 1-8» | ||
..niecza v9-32-g380d891: ( no output ) | |||
..rakudo 8ba1a3: OUTPUT«Warning» | |||
[Coke] | jnthn++ | 13:28 | |
mls_ | hmm, I think the last test in S04-statements/try.t is wrong | 13:29 | |
JimmyZ | nom: int.say | ||
p6eval | nom 8ba1a3: OUTPUT«int()» | ||
mls_ | at the end of the CATCH block the exception will be rethrown | 13:30 | |
masak | if it wasn't handled. | ||
mls_ | how do you define "handled"? | 13:31 | |
moritz | set the .handled bit | ||
mls_ | 1) the code doesn't do that, 2) the catch lambda in S04 sets it back to false | 13:32 | |
jnthn | If any of the when clauses match (including default) then we never make it to setting it back to false, however. | 13:33 | |
mls_ | yes, but the code in the try.t test doesn't have when/default. | ||
That's why I think it's wrong | |||
moritz | might very well be the case | 13:34 | |
most of the tests are from a time before automatic rethrowing | |||
mls_ | niecza: { die("foo") ; CATCH {} } | ||
p6eval | niecza v9-32-g380d891: OUTPUT«Unhandled exception: foo at /home/p6eval/niecza/lib/CORE.setting line 742 (CORE die @ 2)  at /tmp/M8adcVE3Sf line 1 (MAIN C1_ANON @ 2)  at /tmp/M8adcVE3Sf line 1 (MAIN mainline @ 1)  at /home/p6eval/niecza/lib/CORE.setting line 2060 (CORE C968_ANON … | ||
mls_ | niecza: { die("foo") ; CATCH {say 'hello'} } | ||
p6eval | niecza v9-32-g380d891: OUTPUT«helloUnhandled exception: foo at /home/p6eval/niecza/lib/CORE.setting line 742 (CORE die @ 2)  at /tmp/YOJHGj35br line 1 (MAIN C1_ANON @ 2)  at /tmp/YOJHGj35br line 1 (MAIN mainline @ 1)  at /home/p6eval/niecza/lib/CORE.setting line 2060 (CORE C968… | ||
13:35
araujo left
13:36
araujo joined,
araujo left,
araujo joined
|
|||
mls_ | jnthn: I now to "perl6" semantics, i.e. the call chain in the exception handler includes the ones where the exception was thrown | 13:36 | |
(looks interesting in the sub profiler ;) ) | 13:37 | ||
(the "die/throw" op calls the catch block) | |||
13:38
bluescreen10 left
|
|||
JimmyZ | nom: use MONKEY_TYPING; augment class Int { method foo() { 'hi'; } }; say int.foo(); | 13:40 | |
p6eval | nom 8ba1a3: OUTPUT«hi» | ||
JimmyZ doesn't know whether if it's right or not :( | 13:41 | ||
jnthn | JimmyZ: Well, tbh, most of "right" vs "wrong" in the native types implementation is "what jnthn says is right or wrong" :) | ||
JimmyZ: If you do $some_natively_typed_think.method_call() it will always box it before making the method call, because you can't make a call on a native value | 13:42 | ||
JimmyZ | jnthn: so is it right above code? | 13:43 | |
jnthn | JimmyZ: Native types "inherit" (for some value of) from a class. | ||
13:43
shinobicl joined
|
|||
jnthn | Generally, it's the class they'll end up boxing to. | 13:43 | |
JimmyZ: Yeah, it's doing what I expect it to. | |||
JimmyZ | jnthn: thanks | ||
13:45
mkramer1 joined
|
|||
JimmyZ | anyway, perl6 is so powerful, nom++, and jnthn++ | 13:45 | |
masak | it's doing what I expect it to too, fwiw. | 13:46 | |
i.e. ints behave a lot like Ints. | |||
jnthn | Mostly, I'm just feeling my way forward, because I'm the first to try and put the native type stuff into an otherwise quite rich Perl 6 implementation. | ||
masak | the only time they don't is when you try to do something outright impossible, like rebind an int. | ||
shinobicl | hi... does anyonw know how much RAM do i need to "make" the new rakudo? All I know is that 470MB are not enough and 2GB is enough | 13:47 | |
masak | but calling methods is no problem; just need to box it. | ||
jnthn | The reason I added the sized ones is because I want to use them in NativeCall. | ||
13:47
mkramer left
|
|||
masak | shinobicl: that sounds about right. | 13:47 | |
moritz | shinobicl: a bit more than 1G is necessary | ||
shinobicl | thanks moritz! | ||
13:47
flatwhatson joined
|
|||
jnthn | .oO( Too much... ) |
13:48 | |
moritz | jnthn: now that we have exporting into lexical scopes, wouldn't it be much easier to split the setting? | 13:49 | |
JimmyZ | I thoght native types is some types likes C | ||
*thought | |||
moritz | (or nested settings, like SAFE) | ||
JimmyZ: C doesn't have a bigint type :-) | |||
jnthn | moritz: nested could work | 13:50 | |
JimmyZ | moritz: yes, rakudo augment C | ||
masak | JimmyZ: they are very much like that, but they box when you try to use them like objects. | ||
jnthn | moritz: PRIMITIVE -> CORE -> SAFE | ||
moritz | jnthn: does that make lookups slower? | ||
jnthn | moritz: Marginally. | ||
moritz builds and benchmarks | 13:51 | ||
dalek | kudo/nom: 393309c | moritz++ | src/core/Buf.pm: non-spec Buf.append_inplace hack for bbkr++ |
||
jnthn | moritz: As in, almost certainly not worth worrying about. | ||
moritz | I could well imagine a "FAT" setting where all the things like Date, DateTime, IO::Socket etc. live in | ||
jnthn | moritz: I'd guesstimate <1% | ||
moritz: Yeah, same. | |||
Of course, we should be using less memory to build the setting too :) | 13:52 | ||
Even at the size it's at. | |||
13:53
bluescreen10 joined
|
|||
moritz | I wonder how hard it would be find a clear cutting point between a small inner and a big outer setting | 13:55 | |
one with nearly no forward references | |||
jnthn | Well, things like the temporal stuff easily slip out into the outer one. | 13:56 | |
Sockets probably do also. | |||
And maybe Set etc | |||
moritz | a quick counting showed about 8 files that clearly belonged to the outer | ||
and yes, Set, KeyMap etc. too, which are NYI | 13:57 | ||
benabik | jnthn: PRIMITIVE? | ||
13:57
uasi left
|
|||
bbkr | moritz: spec already defines buf concatenate behavior, so why not make it official infix:<~=> and have another part of spec implemented? | 13:57 | |
flussence | benabik: I guess that's everything that can't be implemented in terms of other functions :) | ||
jnthn | benabik: There's probably better names. | ||
benabik | jnthn: Just wondering if you mean the existing bootstrapping bit for the setting, or something else | 13:58 | |
jnthn | benabik: Yes, it'd be where various bootstrappy bits happened. | 13:59 | |
benabik | Bare minimum for the complier to make sense, so if you want your own setting, it's inside PRIM. Fair enough. Sounds neat. | ||
moritz | bbkr: will do as a next step, yes. But it's more convenient for the implementation to live inside a method | 14:00 | |
nom: class A { }; multi infix:<~=>(A $, A $) { }; my $x = 'foo'; $x ~= 'bar'; say $x | 14:01 | ||
p6eval | nom 4152d2: OUTPUT«foobar» | 14:02 | |
14:03
araujo left,
replore_ joined,
koban` left
14:04
araujo joined
14:10
wtw left
14:13
nightlord joined
14:24
bluescreen10 left
14:25
aindilis left
|
|||
dalek | p: 7595e8b | jnthn++ | src/PAST/NQP.pir: Add some NQP ops. |
14:30 | |
p: ca60d32 | jnthn++ | src/NCI/CallBuilder.nqp: Start to sketch out NQP/6model level NCI handling. Rather than do everything itself, the Perl 6 NativeCall library can be built on top of this. |
|||
14:33
araujo left
14:36
mkramer joined,
drbean left
14:37
nightlord left
14:38
mkramer1 left
|
|||
mls_ | Argh, a caught exception in a default/when block kills the special "succeed" semantics, as Actions.pm just adds a succeed call to the end of the block.Sigh. | 14:38 | |
14:39
bluescreen10 joined
|
|||
masak | moritz, jnthn: I'm confused by your usage "small inner" and "big outer" in terms of settings. wouldn't the big one, the one with temporal stuff etc, need the small one as a dependency? i.e. the small one must be the outer one. | 14:39 | |
jnthn | masak: Well, it depends if you're looking from the inside or the outside :P | 14:40 | |
masak 's brain asplode | 14:41 | ||
jnthn | masak: I think we're all intending the same thing. :) | ||
masak: Yes, the one with temporal etc in would have the primitive one as its outer. | |||
TimToady | I don't suppose we have to require CORE::OUTER to be undefined | 14:42 | |
14:43
thou joined
|
|||
TimToady | funny that CORE is an "inner" metaphor though, now that you mention it | 14:43 | |
jnthn | :) | ||
TimToady | metaphors we live by... | ||
mls_ | Hi TimToady! | ||
I've got some questions about exceptions for you | 14:44 | ||
TimToady | oh oh :) | ||
benabik | We could rename OUTER to INNER, but I think that would just cause more confusion. :-D | 14:45 | |
masak | aaaugh | ||
mls_ | S04-exception-handlers/catch.t construct exceptions with Exception("message") | ||
masak | benabik: I know you're joking, but... OUTER is *physically* outer in most code :) so yes, it would cause more confusion. | ||
mls_ | S02 contains that syntax | 14:46 | |
TimToady | it's probably better to use an explicit constructor when you know construction has to happen, but really common constructors can use coercion syntax; it's not prohibited; see S13:198 | 14:47 | |
mls_ | ah, thanks. NYI in Rakudo/Niecza, though | 14:48 | |
14:49
araujo joined
|
|||
benabik | Is it possible for a type to define how other types coerce to it? | 14:49 | |
Or does Exception("message") rely on String knowing how to be an Exception? | |||
TimToady | that's what S13 is talking about | ||
14:50
benabik_ joined
|
|||
TimToady | you can presumably multi the &.() to handle different incoming types | 14:51 | |
but basically, type objects are specced to respond to .() | |||
that's how MyType() coercions are handled | 14:52 | ||
14:52
benabik left,
benabik_ is now known as benabik
|
|||
mls_ | Second question: S04-exception-handlers/catch.t contains a test that does die(3) and then checks $_ in the catch block | 14:53 | |
benabik | Not sure I'm a fan of S13's method of disambiguating that… I'd prefer $obj.Type to always have preference over Type($obj). | ||
jnthn | TimToady: multi postcircumfix:<( )>(Mu:U $self: $target) { $target."$self.^name()" } # something like this? | ||
bbkr | moritz: I've benchmarked both Buf approaches, '€' x 100 (300 bytes) in 100 chunks. Buf copying took 147 seconds, Buf.append_inplace took 1 second :) | ||
jnthn | TimToady: er, multi method...and in Mu. | ||
benabik | (I'll just have all my own Types call $obj.Type first.) | 14:54 | |
jnthn | benabik: I'd understood that to be the default. | ||
mls_ | hmm, that multi... does that default to .new like it should? | 14:55 | |
14:55
mkramer left
|
|||
TimToady | jnthn: yes, it's best if the type knows how to convert itself to other types, but newly defined types tend to know more about the old types rather than old types knowing about new types, so we need both ways | 14:56 | |
jnthn | mls_: Well, what I just showed is the fallback. | ||
TimToady | whyu should it default to .new? | ||
mls_ | S13 says something like taht | ||
jnthn | mls_: Exception can override it | ||
benabik | jnthn: It says one falls back to the other, but say there's an Exception(Stringy $msg). If I do: class Foo does Stringy { method Exception {} }, I'd like my Foo $foo; Exception($foo) to call $foo.Exception. | 14:57 | |
14:57
Trashlord joined
|
|||
benabik | So new types can create more specialized versions. | 14:57 | |
jnthn | benabik: I *think* that's what I just described implenting. | ||
14:58
kaleem left
|
|||
TimToady | this is all still somewhat negotiable, but I need to afk for a bit & | 14:58 | |
feel free to queue questions for later though | |||
mls_ | ok, I'll bother you with the second question when you're back ;) | ||
benabik | jnthn: You just described there being a fallback, but wouldn't `class Exception { method postcircumfix<( )> (Stringy:D $msg)` (which there probably will be for re-dispatching to Exception.new) take precedence over it? | 14:59 | |
*multi method | |||
jnthn | benabik: Yes. | ||
benabik: Oh, I see what you're trying to do...hm. | 15:00 | ||
benabik | :-D | ||
jnthn: If my Foo should become a specific _type_ of Exception, say. $foo.Exception would return MyPackage::Exception, but Exception($foo) would return Exception. | 15:01 | ||
I'd like coercion to happen one way. | |||
the same way, I mean | 15:02 | ||
jnthn | benabik: Well, TimToady seems to want it both ways ;) | ||
...but that's nothing new :P | |||
I see the concern though. | |||
benabik | \o/ I communicated successfully! | ||
Types could check for a .Type method on the object they're coercing, but then you'll have someone forget and bleck. | 15:03 | ||
15:03
birdwindupbird left
|
|||
jnthn | At some points I've wondered if coercion is recognized syntactically and re-written to something in meta-space. | 15:03 | |
.^coerce(...) | |||
benabik | Deep. | ||
dalek | p: 4c6d236 | jnthn++ | / (3 files): Install NCI::CallBuilder. |
15:04 | |
TimToady | the original intent was to recognize types syntactically | ||
that's one of the reasons types are predeclared | 15:05 | ||
jnthn | TimToady: Well, we already do that really. :) | ||
TimToady | the current S13 spec doesn't really take advantage though | ||
jnthn | TimToady: It's just that if all we're doing is invocation, then the "oh it's a type!" case boils down to the same thing as a call. | ||
masak | TimToady: not a question per se; just noting that I don't think Exception("message") qualifies as a coercion. the string is not so much converted into an exception as subsumed by it. | 15:06 | |
jnthn takes a break from native call stuff for a bit to work on something else | |||
benabik | ClassHOW.coerce could check $obj for a .Type method and then fall back on Type(). Although you get to interesting questions of $obj.SuperClass being more important than SuperClass() and how to detect that... | ||
15:07
araujo left
|
|||
benabik | Being able to define coercions both ways is important though. New types need to know how to convert to old and convert old to them. | 15:07 | |
TimToady | masak: you could say the same about int to float conversion :) | ||
15:07
araujo joined
|
|||
masak | sure, but a float is immutable, so the subsuming doesn't feel as "physical" there. | 15:09 | |
mostly I'm just questioning providing two syntaxes for creating an Exception where one would do fine. | |||
15:10
kaleem joined
|
|||
moritz | masak: yes, I was confusing inner and outer there | 15:12 | |
benabik somewhat likes Scala's implicit methods for coercion. | |||
moritz | jnthn: btw I've benchmarked mandelbrot, once normal, once with --setting=SAFE | 15:13 | |
jnthn | moritz: OK...and? :) | ||
moritz | jnthn: the difference is about 0.3s on 50s, but that is roughly the same amount as the timing noise | ||
jnthn | moritz: Yeah. | ||
ooh, we're at 50s now? :) | 15:14 | ||
masak | also, maybe I'm seeing a slippery slope there in over-applying coercions where they make little sense. "want to create a process? just coerce the string containing the executable name using .Process!" | ||
tadzik | I don't like Exception(Str) either :) | ||
I imagine it as something that in 10 years people will talk of as they now do of indirect method calls in Perl 5 | |||
benabik | I like coercions up front, sometimes… The .perl output of ().list takes too long for me to find out it's a list. | 15:15 | |
I'd much prefer List() | |||
tadzik | nom: ().list.perl.say | ||
p6eval | nom 393309: OUTPUT«().list» | ||
tadzik | meh | ||
nom: List.new.perl.say | |||
moritz | :-) | ||
p6eval | nom 393309: OUTPUT«().list» | ||
benabik | Although I guess an empty list would be hard to distinguish from a type object. Hm. | ||
moritz | benabik: note that .perl is meant for, well, perl. Not for humans | ||
tadzik | I semi-like it as it is | 15:16 | |
benabik | moritz: But shouldn't perl be for humans? ;-) | ||
moritz | writing that as List.new(...) would fix that problem | ||
benabik: .gist is for humans | |||
masak | benabik: what makes you think an empty list isn't a type object? :P | ||
rakudo: say ().defined; say List.defined | |||
tadzik | it's meant for perl, not humans, but it doesn't break encapsulation because no, but it's meant to produce the same object, but it doesn't... | ||
p6eval | rakudo 393309: OUTPUT«Bool::TrueBool::False» | ||
masak | maybe that... :) | ||
benabik | masak: Yes, that. | ||
tadzik | rakudo: say ().defined; say List.new.defined | ||
p6eval | rakudo 393309: OUTPUT«Bool::TrueBool::True» | ||
15:18
alester joined
15:28
kaare_ joined
|
|||
shinobicl | nom: sub prefix:<Ask> (Str $what) { "whats up " ~ $what }; say Ask "Joe"; | 15:29 | |
p6eval | nom 393309: OUTPUT«Could not find sub &Ask in <anon> at /tmp/1CSt_AEv5p:1 in <anon> at /tmp/1CSt_AEv5p:1» | ||
moritz | nom doesn't do custom operators yet | 15:30 | |
shinobicl | perl6: sub prefix:<Ask> (Str $what) { "whats up " ~ $what }; say Ask "Joe"; | ||
benabik | nom: sub ask { "What's up " ~ $^doc ~ "?" }; say ask "Joe" | ||
p6eval | rakudo 393309: OUTPUT«Could not find sub &Ask in <anon> at /tmp/nAKdnrMC56:1 in <anon> at /tmp/nAKdnrMC56:1» | ||
..pugs, niecza v9-32-g380d891: OUTPUT«whats up Joe» | |||
nom 393309: OUTPUT«What's up Joe?» | |||
masak | nom: sub Ask(Str $who) { "what's up, $who?" }; say Ask "Joe" | 15:31 | |
p6eval | nom 393309: OUTPUT«what's up, Joe?» | ||
15:31
woosley left
|
|||
benabik | nom: sub ask { "What's up $^doc?" } ; say ask "benabik" | 15:31 | |
p6eval | nom 393309: OUTPUT«What's up benabik?» | ||
benabik | It finds ^params in strings. Neat. | ||
moritz | bbkr: fwiw I've tried to implement infix:<~=>(Buf, Buf), but it's not picked up in the dispatch, likely because it collides with the = meta operator on infix:<~> for Str | 15:32 | |
tadzik | I think it finds everything which looks like an expression | ||
15:32
kaleem left
|
|||
jnthn | moritz: The meta will win, I think. | 15:33 | |
masak | jnthn: I don't. | ||
jnthn | masak: Tough. | ||
:P | |||
masak | then how could you override your metaoperators? | ||
moritz | jnthn wins :/ | ||
shinobicl | moritz: that remembers me a thread i saw in a BBS some time ago... "perl6 craziness" was called... | ||
jnthn | masak: I don't think you're meant to write your own derived forms. | ||
masak | because in some cases, you have to. | ||
jnthn: I thought the spec even talked about that. | 15:34 | ||
jnthn | I thought it said you shouldn't...I may be misremembering. | ||
moritz | jnthn: I'm pretty sure you should be able to | ||
shinobicl | pastebin.com/1GTw45J9 | ||
jnthn | moritz: OK, I may be misremembering... | ||
masak | jnthn: S13:143 | 15:35 | |
"...(unless you define it yourself)" | |||
I win! :) | |||
jnthn | huh, what's with all the S13 references today... | ||
Fair enough. Patches welcome. :) | 15:36 | ||
masak | jnthn: clearly you need to be reminded of it :P | ||
jnthn | Probably means patching the meta-operator generating code to not generate things that already exist. | ||
moritz | one thing I've always wanted to do is to add a prefix:<[+]>(Range) multi which optimizes summing over ranges of integers | 15:37 | |
15:38
mberends joined
|
|||
masak | moritz: ooh! | 15:38 | |
jnthn | moritz: oh ouch | ||
dalek | kudo/nom: aa5e9b6 | jnthn++ | src/Perl6/Actions.pm: Generate lexicals of the correct primitive type for holding arguments. |
||
kudo/nom: bd4af3e | jnthn++ | src/ (2 files): Start passing nativeness info down towards the binder. |
|||
jnthn | moritz: If you want to do that, you're going to have to manually write out the candidate that falls back to the meta-op internals too. | ||
moritz | jnthn: yes, that was the problem in b | ||
jnthn | Well, it's not really a problem, just more effort. :) | 15:39 | |
15:39
araujo left
|
|||
jnthn | Oh, maybe we can get away with it somehow. | 15:39 | |
By just generating the extra multi | |||
15:39
araujo joined
|
|||
moritz | maybe the autogenerate can kick in if the dispatch fails, not just when lookup fails | 15:40 | |
jnthn | no | ||
The auto-generation is compile time. | |||
moritz | right | ||
jnthn | Oh, you're thinking of type-inferring it? | ||
moritz | no | ||
jnthn | And doing a compile time recognition of the case? | ||
OK, then I'm not sure I follow. | 15:41 | ||
moritz | I just didn't think of the auto-gen taking place at compile time | ||
jnthn | Ah, OK | ||
moritz | so I was working with RONG assumptions | ||
jnthn | We could feasibly recognize the case in the optimizer. | ||
Provided we knew we had a range as the argument, of coure. | |||
*course | 15:42 | ||
masak | could we get away with only generating those metaops that are actually used in the code? | ||
are there still an infinite amount of them? | 15:43 | ||
jnthn | masak: We do. | ||
masak | oh, good. | ||
jnthn | masak: We've only generated the used ones since ng. | ||
masak | but &eval and metaops still works? | ||
jnthn | masak: There's infinitely many of them, and setting compilation already takes long enough, so I don't want to re-generate all of them... :) | ||
*pre-generate | |||
moritz | masak: eval has its own compile time | ||
jnthn | What moritz++ said. | ||
masak | what about define-your-own, then &eval with that metaop in it? :) | 15:44 | |
moritz | it has its own compile time. | ||
masak | I heard that bit. | ||
moritz -> decommute | |||
masak | I'm just wondering if that case works. | ||
moritz | dunno, but it can be made to work :-) | ||
jnthn | masak: The mechanism eval uses to see outer (at compile time and runtime) is *exactly* the same one we use for the setting. | ||
moritz expects a new masak bug after the commute | |||
masak | :) | 15:45 | |
jnthn: yes, but I mean, since eval has its own compile time, and if compile time is when new metaops are autogenerated, isn't there a risk that a thus-far unused metaop will be generated and hide a user-defined one in the OUTER? | 15:46 | ||
15:46
packetknife joined
|
|||
jnthn | masak: Sure, but it'd also mean that any that we defined in the setting were being ignored too. | 15:47 | |
15:47
packetknife left
|
|||
jnthn | masak: That is, if we fix it for the setting case, it probably fixes the eval case too. | 15:47 | |
masak | oh. true. | ||
sanity++ | |||
jnthn | In eval, the compiler really does just treat the scope you call eval in as a kind of setting. | ||
It actually goes a bit too far now, which is why we have the globals bug :) | 15:48 | ||
(it thinks you deserve a fresh GLOBAL too in eval...) | |||
(it shouldn't.) | |||
oh gee, this natives stuff is tricky... | 15:49 | ||
mberends | jnthn: I'm very happy that you are busy with NativeCall :) | 15:53 | |
jnthn | mberends: Wanna help? ;) | ||
mberends: I've decided to split things up a little. | |||
mberends: Going to have an NQP level bit | 15:54 | ||
mberends: Then do NativeCall on top of that. | |||
mberends: The hope/dream being that we just have to re-implement the NQP level bit on other VMs...and that NativeCall gets saner. :) | |||
mberends: Thing is, I really want to use native types (int, int8, int16) etc this time | 15:55 | ||
mberends: Not Int, etc like we have before. | |||
mberends: So, it'll take a little migration, I suspect. But may as well do it now rather than put it off... | 15:56 | ||
Can also do structs. | |||
mberends | jnthn: ok. I'll help wherever you think I can :) | 15:57 | |
jnthn: that's a Good Improvement. | |||
er, good improvement ;) | |||
jnthn | :) | ||
Well, some way to go yet. | |||
But started on it at least. | 15:58 | ||
masak decommutes | |||
15:58
masak left
|
|||
mberends | yay, SQLite will be reachable with structs :) | 15:59 | |
16:04
araujo left,
araujo joined,
araujo left,
araujo joined
|
|||
dalek | ast: 9b7e843 | Coke++ | S03-operators/buf.t: rakudo nom fudging |
16:05 | |
bbkr | moritz: confirmed, infix:<~=> does not dispatch. "multi infix:<~> (Buf:D $a, Buf:D \$b)" however dispatches properly $buf1~$buf2 and $buf1~=$buf2, but it's useless if ~ operator does not know that it is called with '=' to decide if to do new buffer or appending | ||
16:06
MayDaniel joined
16:07
yves_ left
|
|||
dalek | kudo/nom: a1032e0 | Coke++ | t/spectest.data: run fudged test, track failures |
16:07 | |
16:07
pyrimidine joined
16:10
mj41 left
|
|||
[Coke] | phenny, b? | 16:10 | |
TimToady | b or not b, that is the question... | 16:11 | |
[Coke] | the answer to that is yes, of course. | 16:12 | |
TimToady | phenny doesn't agree :) | ||
16:13
xinming joined
16:14
yves_ joined
16:22
mberends left
16:23
xinming left
|
|||
sjohnson | phenny, advice | 16:34 | |
16:36
xinming joined
|
|||
sjohnson | :( | 16:36 | |
16:39
araujo left
16:41
araujo joined,
packetknife joined
16:44
mj41 joined
16:45
wamba joined
16:47
envi left
16:54
mberends joined
16:55
dakkar left
|
|||
Woodi | should i define sub a( Str $b!, $c?, $d? ); or multi sub for each case ? or multi is only for same param count with other types ? | 16:58 | |
16:59
japhb_ left
|
|||
jnthn | Woodi: Both are possible. Which is best depends, and not everyone will call it the same way. Generally, I use optionals if the behavior is mostly the same for all the cases, and multis if I want to do something quite different for each arity. | 17:00 | |
17:01
frhodes joined
|
|||
mls_ | TimToady: my second question | 17:01 | |
Woodi | thanx jnthn | ||
mls_ | catch.t contains die(3) and checks $_ in CATCH to match 3 | ||
mberends | fractal Sierpinski triangles for Niecza Perl 6: gist.github.com/1235342 | ||
17:01
masak joined
|
|||
japhb | Is there anyone around who can hug perl6.org/compilers/features so that it updates with jnthn++'s changes from yesterday? | 17:01 | |
17:01
bbkr left
|
|||
masak | japhb: don't you have a commit bit yourself? | 17:02 | |
and if not, why not? | |||
you've already asked twice. soon it'll have been less work to JFDI. :P | |||
17:02
daxim left
|
|||
japhb | masak, it's not updating the data that's the problem: jnthn did that. The page is not re-rendering. I don't know where that is, or if I have / ever had access. | 17:03 | |
masak | oh! | 17:04 | |
jnthn | Did I screw up the json somehow, I wonder... | 17:05 | |
mls_ | jnthn: current state of exception patch: gist.github.com/1235351 | ||
jnthn: notice the new invoke_catchhandler op that does some evil call chain hackery | 17:06 | ||
masak | jnthn: yes, I think you did. first change at github.com/perl6/features/commit/6...cdb269e7d3 looks like it's not quoted enough. | ||
jnthn | oh, wtf. | 17:07 | |
masak | also, that addition should probably have been on "status", not "code". | ||
jnthn | yeah | ||
:/ | |||
masak | feature request: when someone screws up the JSON in that file, this channel is notified. | 17:08 | |
japhb | I was thinking something similar. :-) | ||
dalek | atures: bde748c | jnthn++ | features.json: JSON is hard, it turns out... |
||
masak | preferably each time the pagegen fails. | ||
japhb | masak, where is that page hosted? | 17:09 | |
Some feather*? | |||
17:10
JimmyZ left,
mj41 left
|
|||
mls_ | afk -> home | 17:12 | |
japhb | commuting & | 17:13 | |
TimToady | mls_: not sure there was a question in that, but an exception should stringify/numify in a dwimmy way such that a when can match an errno or a message, as well as the exception type | ||
note also that an exception may not be rethrown with die, I think, since exceptions within the CATCH are considered new exceptions | 17:14 | ||
we'll need a different verb to put things into the unhandled list instead of the undead list | 17:15 | ||
maybe undead is misnamed, since it's really the old exception that is undead when it comes back :) | 17:16 | ||
17:16
araujo left
|
|||
mls_ | Btw, are exceptions Cool? | 17:16 | |
17:17
araujo joined
|
|||
TimToady | well, they can convert to numeric or string for matching, but I don't know if that makes them Cool | 17:18 | |
17:18
kaleem joined
|
|||
TimToady | seems they used to be Cool, and that caused problems | 17:18 | |
they end up getting multi-dispatched more generally than they ought, but maybe separating the notion of Failure from the notion of Exception will clear that up | 17:19 | ||
a Failure contains an unthrown exception, I think, but isn't one | |||
17:20
mberends left
|
|||
mls_ | ok, thanks TimToady++ | 17:20 | |
afk -> home (this time for real ;) ) | |||
17:20
risou_awy is now known as risou
17:23
packetknife left
17:30
espadrine joined
17:34
japhb_ joined
|
|||
japhb_ | masak, BTW: sorry if I sounded incorrectly lazy before. I should have asked "How can I fix this?" rather than "Can anyone fix this?" | 17:36 | |
17:37
pmurias joined
17:39
araujo left
|
|||
pmurias | hello | 17:40 | |
17:40
araujo joined,
araujo left,
araujo joined
17:41
mberends joined
|
|||
tadzik | hello pmurias | 17:42 | |
17:46
packetknife joined
17:47
packetknife left
17:52
packetknife joined
17:53
molaf__ left
17:55
packetknife left
|
|||
Woodi | hmm, perlisophycally asking - do in Perl6 is/will be better (performance) to use recursive function in HOP style or just while loop ? functional languages defaults to recursion, what in v6 ? | 18:00 | |
whithout memoisation :) | 18:01 | ||
jnthn | Woodi: That may well be implementation dependent. | ||
Woodi: And then probably situation dependent too ;) | |||
Woodi: In Rakudo, probably while loops are cheaper, and also probably easier on the optimizer. | 18:02 | ||
18:02
bakedb left
|
|||
Woodi | ok, just asking "mayve usually while is better ?" :) | 18:02 | |
jnthn | If it's speed you want over all else, then yes, probably. :) | ||
18:03
packetknife joined,
araujo left
18:04
araujo joined
18:05
bluescreen10 left
|
|||
Woodi | and do function calls will be expensive ? asking: do for performance prefer middle-size IFs over calls ? | 18:05 | |
18:06
bluescreen10 joined
18:07
cougnut left
|
|||
Woodi | probably calls will not be unnoticable... | 18:07 | |
18:07
espadrine left
18:09
cyfi left
|
|||
[Coke] chuckles that trunk@r1337 might be the revision of his project that goes to prod today. | 18:13 | ||
18:13
cyfi joined
18:16
cougnut joined
|
|||
[Coke] now has to explain LEET to the analyst. Sigh. | 18:16 | ||
Woodi | is in perl6 something like: sub f( $a!, $b?, $b?, $d? ) { while params() { ... } } # or $p = shift $params(); ? | 18:17 | |
masak | Woodi: you have to slurp the variables to be able to iterate them. | 18:19 | |
maybe you can access the siggie and iterate that, though. I dunno. | |||
Woodi | i need params, not @... | ||
pls give me info, i will go read :) | 18:21 | ||
TimToady | Woodi: note also that lazy lists are already HOP in disguise | 18:23 | |
the language itself is designed to be relatively optimizable, but it will take a while for implementations to get there | |||
the most important thing is that we try to make as most external functional information available lexically, so you can know what you're dealing with at compile time most of the time | 18:25 | ||
ss/ as / / | |||
you can get the raw capture if you like and pull the positionals out of it | 18:26 | ||
Woodi | i do not ask about performance now, but general hints how features will behave relative to each other. not to grainy but some things ar known to devs. i can only gues hinking about C/v5. | 18:28 | |
captures, so i will study it a little | |||
thank you | 18:29 | ||
18:33
Chillance joined
18:37
kaleem left
|
|||
masak | can Rakudo do that already? | 18:38 | |
18:38
araujo left
|
|||
masak | hm, I guess the siggie is no good for pulling positionals out, since it's never populated with values -- only the lexpad is. | 18:38 | |
18:38
araujo joined,
miso2217 left
|
|||
masak | the siggie only guides the capture to the lexpad :) | 18:38 | |
18:39
miso2217 joined,
Exodist joined,
miso2217 left,
risou is now known as risou_awy,
miso2217 joined
|
|||
jnthn | masak: (raw capture) that's just |$c in the sig. | 18:44 | |
TimToady | we need to see a use case | 18:45 | |
18:45
araujo left
|
|||
jnthn | TimToady: Delegaty things? | 18:46 | |
18:46
kcwu left,
araujo joined,
kcwu joined
|
|||
jnthn is deep in a bunch of binder changes at the moment. | 18:46 | ||
18:50
Holy_Cow joined
18:51
Holy_Cow left
|
|||
TimToady | I mean a use case for what Woodi is trying to do, which looked more like XY and/or premature optimization to me | 18:52 | |
jnthn | TimToady: oh, ok :) | 18:54 | |
18:54
pyrimidine left
|
|||
masak | aye. | 18:55 | |
if iterating through the parameters is that important, then maybe the parameters should consist of something iterable. | |||
rakudo: sub foo(*@params) { .say for @params }; foo "OH", "HAI", "WORLD" | 18:56 | ||
p6eval | rakudo a1032e: OUTPUT«OHHAIWORLD» | ||
Woodi | hmm, do not read yet about captures but use case: | 19:04 | |
for example some db with api of very similiar functions (or protocol with similiar request/response construction for each command) | 19:06 | ||
so, few functions have zero params, few one param, few more, ..., few is varg... | 19:08 | ||
so if function are similiar in functionality can be internal function called by all function. that internal function can use IFs for 0, 1, 2, ..., varg cases or slurp parameter list :) | 19:09 | ||
method !__cmd_zeroonetwothree( Str $command!, $p1?, $p2?, $p3 ) { ... } | 19:11 | ||
and: for <c1 c2 c3> -> name { A::B.HOW.add_method( A::B, $name, method () { return self!__zeroonetwothree( $name ) } ); } | 19:14 | ||
and: for <c1 c2 c3> -> name { A::B.HOW.add_method( A::B, $name, method ( $param ) { return self!__zeroonetwothree( $name, $param ) } ); } | |||
and so on :) | |||
and then IFs for each param number... so manipulation of parameters would be nice :) | 19:16 | ||
and that for's can be at BEGIN | 19:17 | ||
jnthn++ help :) | 19:18 | ||
TimToady | sounds like zeroonetwothree wants to be a macro-ish kind of thing, really, but we don't have those yet | ||
as for your binding | |||
19:21
wamba left
19:23
birdwindupbird joined,
birdwindupbird left
|
|||
Woodi | for protocol construction must be macro language which can call perl6 code :) | 19:24 | |
19:24
araujo left
|
|||
dalek | kudo/nom: 4c67ac6 | jnthn++ | src/binder/bind. (2 files): Tentatively start to refactor the binder so it can work with natively typed arguments and parameters. This doesn't do much besides change the API used by a couple of low-level bits. |
19:26 | |
kudo/nom: 78198e7 | jnthn++ | src/binder/bind.c: Extensive refactor of parameter binding to work towards supporting natively typed parameters/arguments. |
|||
kudo/nom: e089c70 | jnthn++ | src/binder/bind.c: Get binder to handle being passed natively typed values and binding them to natively typed lexical registers. Note that the code-gen isn't really up to scratch for using this yet, but the binder part now seems to work. |
|||
kudo/nom: ff86674 | jnthn++ | src/Perl6/Actions.pm: Ensure we generate correct code for natively typed parameter lookups when they're used. |
|||
tadzik | ho | ||
mberends | exciting! | 19:27 | |
TimToady | sorry, got called away briefly | ||
19:28
sayu left
|
|||
TimToady | as for your binding, you can have a signature that binds the remaining capture in the middle, so you could do something like ($name, |$rest ($p1?, $p2?, $p3?, *@more)) | 19:29 | |
and it would always bind name, then $rest would be the capture of the rest of the arguments, of which the first three are also given names of p1, p2, p3 | |||
at least, that's specced behavior | |||
jnthn | Pretty sure that's how I implemented it too. | 19:30 | |
nom: sub foo($name, |$rest ($p1?, $p2?, $p3?, *@more)) { say $name; say $p1 }; foo('bar', 1, 2) | 19:31 | ||
p6eval | nom a1032e: OUTPUT«bar1» | ||
jnthn | nom: sub foo($name, |$rest ($p1?, $p2?, $p3?, *@more)) { say $name; say $rest }; foo('bar', 1, 2) | ||
p6eval | nom a1032e: OUTPUT«bar1 2» | ||
TimToady | sugoi! | ||
Woodi | that i need i think :) | 19:32 | |
any other language have such features ? :) | |||
but ppls will complain about line noise :) | 19:35 | ||
jnthn | nom: sub foo(:$bar, |$c, :$baz) { say $c.hash }; foo(:baz(42), :bar(69)) | 19:36 | |
p6eval | nom a1032e: OUTPUT«baz 42» | ||
19:39
replore_ left
|
|||
Woodi | but about macro language maybe rich string functionality can be enough... | 19:39 | |
jnthn | Woodi: Perl 6 includes hygenic macros. | 19:41 | |
Woodi: Rakudo doesn't implement them yet, but masak++ is working on it :) | |||
19:42
daniel-s left
|
|||
masak | heh! good luck. :) wait, that's me o.O | 19:42 | |
19:43
daniel-s joined
|
|||
Woodi | so perl6 programs will have document-form for heavy pre-parse in the future :) | 19:45 | |
dalek | kudo/nom: 8943be1 | moritz++ | src/core/Buf.pm: infix:<~>(Buf, Buf) |
19:48 | |
p: c4f9df4 | jnthn++ | src/pmc/stable.pmc: Give us a bit more space in the type cache IDs. |
19:50 | ||
p: 732b4f3 | jnthn++ | src/6model/ (8 files): Extend storage spec support so a REPR can describe the things it can/canny box. |
|||
p: ce48590 | jnthn++ | src/6model/reprs/P6opaque.c: Eliminate an unused variable, and the warning that goes with it. |
|||
kudo/nom: 943dcd1 | moritz++ | src/core/Buf.pm: [Buf] remove append_inplace hack; ordinary concatenation performs nearly equally well, so this was a case of premature optimization. Go figure. |
19:52 | ||
jnthn | Commits! Lots of them! | 19:53 | |
masak | jnthn++ | ||
moritz++ | |||
Woodi | here are bindings teoretically discused erlier :) github.com/slunski/perl6-simple-redis | 19:57 | |
realy not much funcionality as for db but get/set keys work :) | |||
Redis is rather something like Memcache but with permament storage | 19:58 | ||
tadzik | oh, that'd be your child? | 19:59 | |
masak | Woodi++ | ||
Woodi: um, if you recommend the use of ufo, why is there also a Makefile in the repository? | 20:00 | ||
it's either one or the other... | |||
tadzik | it's ufo generated | 20:01 | |
Woodi | ufo just work on std perl distributions :) | 20:02 | |
masak | well, you don't need the 'ufo' step if there's already a Makefile. | 20:03 | |
Woodi | s/Makedile// | ||
i forget remove it | |||
anyway it's terrible coded except function autogeneration... | 20:04 | ||
and $socket.get line by line isn't probably good for performance | 20:05 | ||
and protocol is realy simple, can by used by hand over telnet | 20:06 | ||
masak | 'night, #perl6 | 20:12 | |
20:12
masak left
|
|||
tadzik | 'night | 20:12 | |
...damnit, missed it | |||
colomon | he's sneaky that way | ||
20:14
gfldex left
|
|||
tadzik | I bet he leaves, then enters irclog.perlgeek.de and looks how people missed him by seconds | 20:15 | |
20:15
gfldex joined
|
|||
dalek | kudo/nom: 57dc7ad | jnthn++ | / (2 files): Bump to latest nqp/6model. |
20:17 | |
kudo/nom: 5af26ae | jnthn++ | src/binder/bind.c: Handle case where natively typed parameters are passed boxed arguments. Binding works if the thing passed knows how to unbox itself to the correct native type. |
|||
20:26
MayDaniel left
20:32
mkramer1 joined
20:34
mj41 joined
20:37
soh_cah_toa joined
20:39
araujo joined
20:51
mkramer1 left,
im2ee left
20:53
bbkr joined
|
|||
bbkr | moritz++ # Buf concat & append | 20:54 | |
jnthn | How are we on Buf compared to b now? | 20:58 | |
21:01
mj41 left
|
|||
bbkr | hmm, I get "make: nqp: Command not found" in Configure.pl of current nom. has anything changed in build commands? | 21:10 | |
21:10
dorlamm joined
|
|||
jnthn | Don't think so | 21:12 | |
Odd | |||
21:13
simcop2387 left
|
|||
jnthn | oh | 21:13 | |
it's a stupid *nix thing. | |||
bbkr | ? | 21:14 | |
dalek | p: 0751cd8 | jnthn++ | tools/build/Makefile.in: Fix build for various platforms. |
21:15 | |
bbkr | happens on line "nqp --target=pir --output=src/gen/CallBuilder.pir src/NCI/CallBuilder.pm", should it be something like "./nqp" | ||
? | |||
21:15
pmichaud left,
hugme left,
jrockway_ left
|
|||
bbkr | \o/ | 21:16 | |
jnthn | bbkr: Yeah...it worked on Windows. :) | ||
dalek | kudo/nom: 33e65ba | jnthn++ | tools/build/NQP_REVISION: Use a build of NQP that isn't broken on some platforms. |
||
bbkr | jnthn++ | 21:17 | |
21:18
kaare_ left
21:19
pmichaud joined,
hugme joined,
jrockway_ joined,
zelazny.freenode.net sets mode: +v hugme
|
|||
tadzik | -j2 is broken for me, still | 21:20 | |
jnthn | tadzik: on? | 21:22 | |
nqp? | |||
Or Rakudo? | |||
tadzik | nqp | 21:23 | |
jnthn | tadzik: As of today? | ||
pmurias | sorear: hi | ||
tadzik | jnthn: yep | ||
jnthn | tadzik: Or for a while? | ||
tadzik: ah, maybe missing dependencies | 21:24 | ||
tadzik | jnthn: it tries to build CallBuilder before building nqp | ||
jnthn | oh | ||
ok, feel free to fix now | |||
or I take it later | |||
Probably just wants a dependency on $(NQP_EXE) | |||
jnthn imagines parallel make is mostly useless for a bootstrapping compiler... :) | 21:25 | ||
pmurias | jnthn: why? | 21:26 | |
dalek | p: 76afaff | tadzik++ | tools/build/Makefile.in: [Makefile.in] Fix dependencies |
||
jnthn | pmurias: Because it has the build the stages in order | ||
pmurias: And the stages have ordering requirements within them. | |||
pmurias | make itself doesn't seem very usefull for building p5 programs | 21:27 | |
21:28
wamba joined
|
|||
benabik | jnthn: Depends on how complex each stage is. Each stage must finish before moving to the next, but within a stage you may be able to compile sections freely. | 21:28 | |
pmurias | sorear: if i want to start working on niecza-p5 interop (my exams are over) how should i hook the interop code in? | 21:29 | |
in needs to be pluggable so the embedding code will be only used when needed/avalible? | |||
jnthn | benabik: It *may*. But in the case of NQP there's little freedom. | 21:30 | |
benabik | jnthn: Also, parallel make can point out missing dependencies, which might cause make to not rebuild something. ;-D | 21:31 | |
jnthn | Yes, true ;) | 21:32 | |
21:39
franek joined
|
|||
jnthn starts fiddling with getting the multi-dispatcher to know what to do with native types. | 21:39 | ||
diakopter | ! | 21:40 | |
21:42
dorlamm left
21:44
bluescreen10 left
21:46
REPLeffect joined
21:51
shinobicl left
21:53
franek left
|
|||
Woodi | perl6: sub foo($name, |$rest ($p1?, $p2?, $p3?, *@more)) { say $name; say $rest }; foo('bar', 1, 2) | 21:54 | |
p6eval | rakudo 8943be: OUTPUT«bar1 2» | ||
..pugs: OUTPUT«***  Unexpected "($" expecting "?", "!", trait, "=", default value, "-->" or ")" at /tmp/kWf1MP6CaH line 1, column 23» | |||
..niecza v9-32-g380d891: OUTPUT«===SORRY!===Action method post_constraint not yet implemented at /tmp/rslF53ahOI line 1:------> $name, |$rest ($p1?, $p2?, $p3?, *@more)⏏) { say $name; say $rest }; foo('bar', 1Unhandled exception: Unable to resolve… | |||
Woodi | b: sub foo($name, |$rest ($p1?, $p2?, $p3?, *@more)) { say $name; say $rest }; foo('bar', 1, 2) | ||
p6eval | b 1b7dd1: OUTPUT«barCapture()<0x4d97e38>» | ||
jnthn | Woodi: Seems b was a bit less useful about stringifying captures. | 21:55 | |
Woodi | which Rakudo b is ? | 21:56 | |
jnthn | Woodi: The "Beijing" release. | ||
Woodi: Which is the compiler that shipped with the current Star distribution. | 21:57 | ||
"rakudo:" here is the current development branch | |||
21:58
wooden left
|
|||
Woodi | my perl --version says "This is Rakudo Perl 6, version built on parrot 3.6.0 0" only and dpkg 2011.07-1 | 21:58 | |
21:58
simcop2387 joined
|
|||
Woodi | not good | 21:59 | |
next Star tomorow ? | 22:01 | ||
jnthn | Woodi: No, that'll take us a little longer. | 22:02 | |
Woodi: Don't want to cause too many regressions. | |||
22:03
dorlamm joined
|
|||
Woodi | nqp for nom branch is in rakudo source tree ? | 22:03 | |
jnthn | no | 22:04 | |
github.com/perl6/nqp | |||
Woodi | not compiled earlier today... will try again | ||
22:06
daniel-s left
22:07
daniel-s joined,
stepnem left
|
|||
Woodi | but bad parrot :) | 22:08 | |
dalek | ast: 28d220d | jnthn++ | S12-methods/multi.t: Oops, 2 instances of class A { ... } in the same test file. |
22:09 | |
jnthn | Woodi: Yeah, it has quite specific requirement. | ||
dalek | kudo/nom: 952b7bb | jnthn++ | src/binder/multidispatch. (2 files): Note presence of native types in the multi-dispatcher candidate graph; not doing anything with them yet. |
22:10 | |
benabik | Parrot master currently won't compile NQP master, but it will compile NQP's kill-useless-defaults branch. | ||
Woodi | should i use parrot branch named kill-useless-defaults too ? or how to get what rakudo needs ? | 22:11 | |
jnthn | Woodi: The easiest way to get bleeding edge Rakudo with compatible versions of everything is to just git clone Rakudo, then perl Configure.pl --gen-parrot --gen-nqp | 22:12 | |
tadzik | depends on what parrot do you have | ||
jnthn | Woodi: It'll make a completely isolated build of an appropriate Parrot and NQP for you. | ||
Woodi | no eay, i refuse to use --gen-* | ||
jnthn | (e.g. won't break any installed version you have) | ||
Well, then you're going to have to go through the pain of doing what they do by hand :) | |||
benabik | Woodi: Then Parrot master, NQP kill-useless-defaults, and Rakudo master _should_ work. | ||
jnthn | No, they won't. | 22:13 | |
benabik | No? | ||
jnthn | Not as of a few hours ago. | ||
Rakudo now depends on stuff in NQP master that didn't get merged into kill-useless-defaults. | |||
benabik | Ahhhh.... | ||
Woodi | i write scripts and eg: sh go.parrot ; cd ../nqp ; sh go.nqp ; cd ../rakudo ; sh go.rakudo :) | ||
benabik | Hm. We merged sub-profiler after kill-useless-defaults. Bad us. | 22:14 | |
jnthn | How so? | 22:15 | |
benabik | It'd be nice to use sub-profiler on Rakudo master, mostly. :-D | ||
jnthn | ah, ok | ||
you can always catch the kill-useless-defaults branch up with nqp master. | |||
benabik | I'll get on that, but as of right now... | ||
Parrot RELEASE_3_8_0, NQP master, Rakudo master. | 22:16 | ||
Technically Parrot fb6470c will work, but it doesn't really have much more than the release. | |||
jnthn | Yes, that combination really should work. | ||
benabik | s/will/should/ | ||
Woodi | k, will try | 22:17 | |
22:17
stepnem joined
|
|||
jnthn | Hm. Enough natives hacking for today. Will continue playing with the multi stuff tomorrow. :) | 22:19 | |
benabik | Hm. I hadn't built the new parrot yet. Sadface. | 22:20 | |
22:20
packetknife left
22:23
alester left
|
|||
benabik | So I merged master into kill-useless-defaults, but since I don't have a new enough parrot I can't test it. *sigh* Maybe someone else will beat me to it. | 22:24 | |
22:35
wamba left
|
|||
dalek | p/kill-useless-defaults: 7595e8b | jnthn++ | src/PAST/NQP.pir: Add some NQP ops. |
22:37 | |
nqp/kill-useless-defaults: ca60d32 | jnthn++ | src/NCI/CallBuilder.nqp: | |||
nqp/kill-useless-defaults: Start to sketch out NQP/6model level NCI handling. Rather than do everything itself, the Perl 6 NativeCall library can be built on top of this. | |||
22:37
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
benabik | I didn't actually test it with Rakudo, but there it is. | 22:37 | |
22:37
benabik left
|
|||
diakopter | poor dalek | 22:37 | |
22:43
ZapZ joined
|
|||
Woodi | parrot RELEASE_3_8_0-9-g0bf02d9 needed for nqp-kill* now | 22:48 | |
is this parrot god for rakudo nom ? | 22:49 | ||
22:50
dorlamm left
|
|||
Woodi | hmm, new House :) | 22:50 | |
i will test it tomorow, to many parrot compitations today... | 22:53 | ||
gn #perl6 & | |||
jnthn | Woodi: It should be OK | ||
Woodi: night o/ | 22:54 | ||
22:59
whiteknight joined
23:04
Maddingue left
23:08
ZapZ left,
ZapZ joined
|
|||
jnthn | sleep & | 23:12 | |
23:22
frhodes left
23:26
frhodes joined
23:29
pmurias left
23:46
shinobicl_ joined
23:50
benabik joined
23:54
maguro joined
23:55
thou left
|