»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:01
zwut00 left
00:02
SmokeMac_ left,
SmokeMachine joined
00:04
ssutch left
00:05
rjbs joined
|
|||
rjbs | jnthn++ # just downloaded the nqp course | 00:06 | |
00:12
Psyche^_ joined
00:15
Psyche^ left
00:34
ssutch joined
00:41
leontopod left
00:43
xinming left
00:45
xinming joined,
diakopter left
00:50
xinming left
00:52
xinming joined
00:54
raiph left
00:58
FROGGS_ joined
01:00
xinming left
01:01
xinming joined
01:02
FROGGS left
01:03
[Sno] left,
[Sno] joined
01:16
SmokeMac_ joined
01:17
SmokeMachine left
01:32
btyler left
01:33
daniel-s joined
01:43
raiph joined
01:57
ribasushi left,
ribasushi joined
01:58
FROGGS__ joined
02:02
FROGGS_ left
02:04
jnap left
02:14
diakopter joined
02:19
raiph left
02:37
odoacre left
02:42
hoelzro left
02:52
btyler joined
03:09
odoacre joined
03:12
preflex left,
preflex_ joined,
ChanServ sets mode: +v preflex_
03:13
preflex_ is now known as preflex,
odoacre left
|
|||
colomon | jnthn: about the rounding test … I'm not convinced the test is right. or rather, I'm not convinced that jakudo's answer is wrong. it's a tricky question. | 03:30 | |
yoleaux | 25 Sep 2013 20:26Z <jnthn> colomon: If you're interested in a mathy one on JVM, see the rakudo.jvm fudge in rounders.t :) | ||
TimToady | why is it using floating point to round rats? | 03:51 | |
oh, because that's what it's being passed...hmm | 03:53 | ||
using 1/10**5 works fine on JVM, so I agree it's probably a pebcakish issue | 03:57 | ||
.1**5 works too :) | 03:58 | ||
arguably we could make .round refuse to work with a Num | 03:59 | ||
04:00
xinming left
|
|||
TimToady | s/c/sh/ | 04:00 | |
04:02
xinming joined
04:05
araujo left
04:11
cognominal left,
cognominal joined
04:15
krokite joined
04:18
daniel-s left
04:19
araujo joined
04:21
shuckle joined
04:22
shuckle left
04:23
xenoterracide left
04:24
araujo left
04:25
araujo joined
04:47
daniel-s joined
05:03
btyler left
05:28
woosley left
05:36
SamuraiJack joined
05:42
aindilis joined
05:43
BenGoldberg left
05:45
PacoAir joined
|
|||
TimToady | r: say ord $*IN.getc | 05:45 | |
camelia | rakudo 6ff75a: OUTPUT«76» | ||
TimToady | this fails in rakujo | ||
Method 'read' not found for invocant of class 'BOOTIO' | |||
nr: say <a b c>.map: *.[0] | 05:49 | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«a b c» | ||
..rakudo 6ff75a: OUTPUT«No such method 'count' for invocant of type 'Whatever' in method reify at src/gen/CORE.setting:7085 in method reify at src/gen/CORE.setting:7002 in method reify at src/gen/CORE.setting:7002 in method reify at src/gen/CORE.setting:7002 in method reify …» | |||
TimToady | things of the form *.[], *.<>, and *.{} now fail since they aren't methods, but postfixes | 05:50 | |
my getc error is in a line that is following a set of cascaded if/elsif/else, but it reports the error number at the beginning of the if | 05:52 | ||
(dunno if that's just on jvm) | |||
(trying to get my quiz editor to run on rakudo/jvm...) | 05:53 | ||
05:53
PacoAir left
|
|||
TimToady | hmm, can't seem to reproduce the line number issue in a small test case, will have to cut down the big program to isolate that one | 06:02 | |
so far the getc is the only showstopper, can work around the other by changing *.<foo> to {.<foo>} for now | 06:04 | ||
hard to write an editor without single char input though... | |||
06:13
ksh left
06:14
thou left,
20WAC7D55 left,
rom1504 left,
rom1504 joined,
gabriel joined
06:15
m00se_ joined
06:16
ksh joined
06:17
m00se_ left
06:29
FROGGS__ left
06:36
krokite left,
krokite joined
06:37
darutoko joined
06:44
iSlug joined
06:45
raiph joined
06:46
skids joined
06:47
sqirrel joined
06:55
denysonique left
06:56
dalek left
06:57
dalek joined,
ChanServ sets mode: +v dalek
07:09
iSlug left
07:13
kaleem joined
07:14
araujo left
07:17
FROGGS joined
|
|||
FROGGS | o/ | 07:22 | |
07:26
fhelmberger joined
07:27
xinming left
|
|||
nwc10 | jnthn++ # JVM progess | 07:28 | |
07:29
xinming joined
|
|||
masak | morn'n, #perl6. | 07:30 | |
FROGGS | morning | 07:32 | |
lizmat | good *, #perl6! | ||
moritz | \o | 07:37 | |
FROGGS .oO( everybody stand tight, it's getting full ) | 07:38 | ||
07:38
xinming left
|
|||
moritz | everybody stand back, I know regular expressions! | 07:39 | |
FROGGS | /o\ | 07:40 | |
07:40
xinming joined
|
|||
lizmat ducks | 07:40 | ||
masak throws himself under a carpet | 07:41 | ||
FROGGS | I have some nice ones on my whiteboard here at work (p5 and p6), and the ppl that see that are like: O.o What the hell is that? | ||
n00bs, lol | |||
:P | |||
tadzik | FROGGS: some nice... carpets? | ||
FROGGS | (moritz) <-- ha, captured! | ||
hehe | 07:42 | ||
tadzik: no :P | |||
07:43
araujo joined
07:45
dmol joined
07:48
araujo left
|
|||
masak | on second thought, carpets don't provide much protection against... anything, really. | 07:49 | |
07:49
araujo joined
|
|||
FROGGS | .tell jnthn S06-other/main-usage still fails on rakudo@parrot on my linux box using TEST_JOBS=4, and an earlier test killed my windows7 running in a virtualbox vm | 07:50 | |
yoleaux | FROGGS: I'll pass your message to jnthn. | ||
FROGGS | .tell jnthn when this murderer-test runs, I almost can't move the mouse (I can move it physically, yes (haha!) but the cursor, well, you know) | 07:51 | |
yoleaux | FROGGS: I'll pass your message to jnthn. | ||
masak | now that would be something -- a test so heavy it makes the *mouse* itself unable to move! | 07:52 | |
FROGGS | *g* | ||
yeah | |||
moritz | masak: yesterday I had that condition, but not because of the tests, but because thunderbird decided it needed 7.5GB memory | 07:53 | |
FROGGS | nice | 07:54 | |
lizmat | fwiw, I've had that the other day when an expanding [1..*] at all of my RAM and all of my swap (about 90G in total) | 07:55 | |
*ate | |||
07:57
araujo left
08:01
araujo joined,
gtodd left
08:02
hoelzro joined,
gtodd joined
08:06
araujo left
08:08
ssutch left,
araujo joined
|
|||
moritz usually configures his systems without swap, so that such things fail faster | 08:09 | ||
hoelzro | morning #perl6 | ||
moritz | or all shells with a ulimit of 4GB virtual memory | ||
\o hoelzro | 08:10 | ||
hoelzro returns from a six hour absence | |||
08:10
araujo left
|
|||
hoelzro | Freenode said I was spamming =( | 08:10 | |
not true! | |||
08:11
araujo joined,
araujo left,
araujo joined
|
|||
nwc10 | that's dalek's job | 08:11 | |
moritz has only three failing JVM spectests | |||
t/spec/S29-os/system.rakudo.jvm test 5, t/spec/S32-list/roll.t test 40 | |||
nwc10 | moritz: "quick, write more tests", to paraphrase purl | ||
moritz | not ok 5 - run() is affected by chdir() | 08:13 | |
I thought that was fixed weeks ago? :( | |||
masak | wasn't it fixed on Parrot? | ||
lizmat | fails for me for at least a week already | 08:15 | |
08:15
araujo left
|
|||
moritz | I thought the whole point of the chdir emulation was to fix the chdir/run combination on the JVM | 08:15 | |
but maybe I was wrong in assuming that it was actually *fixed* on the JVM :-) | |||
FROGGS | moritz: I believe the test was a wrong positive | 08:16 | |
err, false positive | |||
arnsholt | tadzik: Anyways (to move this to a slightly more relevant channel), commitbits are available if you wanna hack =) | 08:17 | |
08:17
araujo joined
|
|||
tadzik | arnsholt: I'll ask for it when I have something to push, thanks :) | 08:18 | |
arnsholt | Cool =) | 08:20 | |
masak | FROGGS: if a test can be a false positive, then there is something wrong with the way the test was written. | 08:23 | |
moritz | erm, yes | 08:24 | |
the problem is that run() doesn't return anything except whether the command was launched successfully | |||
FROGGS | masak: true | ||
moritz | ok((run("dir", "t") != BEGIN { run("dir", "t") } ), 'run() is affected by chdir()'); | ||
08:24
raiph left
|
|||
FROGGS | yeah, and we do a chdir at runtime before that test | 08:24 | |
moritz | uh, oh | 08:25 | |
does run() even do anything | 08:26 | ||
FROGGS | what do you mean? | ||
08:26
cognominal left
|
|||
moritz | ~/p6/jvm-rakudo$ ./perl6 -e 'say run("echo", "README")' | 08:26 | |
1 | |||
08:26
cognominal joined
|
|||
moritz | it doesn't look to me like it does *anything* at all | 08:26 | |
except returning 1 | 08:27 | ||
FROGGS | it should return 0 when it does something | ||
weird | 08:29 | ||
that is not how I remember it | |||
so yes, it seems like run() is sort of a noop | |||
okay, so run() is broken on all backends basically | 08:31 | ||
I will re-implement run() for rakudo@parrot@windows later, using this: github.com/mirrors/perl/blob/blead...32.c#L3739 | 08:33 | ||
then try to get it to work for linux, and maybe then try find the jvm problems :/ | |||
somebody with more java knowledge is invited to join the fight :o) | 08:34 | ||
masak | ++FROGGS | ||
moritz | but | 08:35 | |
argl | |||
it seems that shell() is what works | 08:36 | ||
dalek | ast: a299b31 | moritz++ | S29-os/system.t: fudge run() tests for now run seems to be broken on all backends |
08:37 | |
08:37
xinming_ joined
08:39
xinming left
08:41
xinming_ left
|
|||
FROGGS | moritz: why is that test questionable? | 08:41 | |
I don't know a better way to test run() that only returns the exit code | 08:42 | ||
08:42
dakkar joined,
xinming joined
|
|||
moritz | FROGGS: because it presumes the non-existence of a t/t/ directory without testing it first | 08:43 | |
FROGGS | damn, looks like the jvm-spectest run aborted all tests after S16 :o( | ||
moritz: ahh, okay | |||
moritz | FROGGS: and it also assumes that dir() on all platforms returns a non-zero exit status with a non-existing dir name | ||
FROGGS: and finally producing output to STDOUT that is not in TAP format is a great way to confuse the TAP harness | 08:44 | ||
FROGGS | hmpf | ||
suggestions welcome ó.ò | |||
moritz | if you wannt to test it reliably, write a Perl 6 program that writes its CWD into a temp file | ||
and invoke it with an absolute path and the name of the temp file | 08:45 | ||
08:52
denysonique joined
|
|||
jnthn | hi, #perl6 | 09:07 | |
yoleaux | 07:26Z <JimmyZ> jnthn: are you fine to github.com/MoarVM/MoarVM/commit/c531595dd7 ? | ||
07:50Z <FROGGS> jnthn: S06-other/main-usage still fails on rakudo@parrot on my linux box using TEST_JOBS=4, and an earlier test killed my windows7 running in a virtualbox vm | |||
07:51Z <FROGGS> jnthn: when this murderer-test runs, I almost can't move the mouse (I can move it physically, yes (haha!) but the cursor, well, you know) | |||
JimmyZ | hi | 09:08 | |
jnthn | FROGGS: I don't think I changed any Parrot fudging yesterday though? Just JVM? | ||
FROGGS | hi jnthn | ||
jnthn: no, that has nothing to do with recent changes | |||
I just wanted to mention the curious thing going on | 09:09 | ||
nwc10 | seems that jnthn scared his alarm clock | ||
jnthn | JimmyZ: yeah, I suspect that doesn't make the error messages any worse, or not meaningfully worse | ||
JimmyZ | jnthn: ok, I will push it to master :P | 09:10 | |
09:12
odoacre joined
|
|||
jnthn | .tell TimToady the .getc is just a NYI yet; it's in my list of failing tests to triage already | 09:35 | |
yoleaux | jnthn: I'll pass your message to TimToady. | ||
09:52
iSlug joined
09:59
donaldh joined
10:01
donaldh left
10:03
atroxaper joined
10:05
hypolin left
|
|||
atroxaper | Hello #perl6 ! | 10:13 | |
dalek | kudo/nom: c549b65 | (Elizabeth Mattijsen)++ | src/core/traits.pm: Fix mention of DEPRECATED in list of possible routine traits |
||
10:14
darutoko left
|
|||
lizmat | hello atroxaper! | 10:19 | |
atroxaper | Does anybody know wich method of generation random number uses in perl6? And is it cryptographically? | ||
Hello lizmat! | |||
lizmat | check nqp for rand_I and rand_N | ||
rand_n rather | |||
jnthn | It probably varies by backend. On JVM we delegate to what's provided there. rand is not promised to be cryptographically strong afaik. | 10:20 | |
atroxaper | Ok. I should use someting my stuff then. Thnaks. | 10:22 | |
10:26
lichtkind joined
10:29
odoacre left
10:40
rindolf joined
10:41
iSlug left
10:54
darutoko joined
11:02
atroxaper left,
xinming left,
daxim joined
11:04
sqirrel left,
darutoko left,
xinming joined
|
|||
lizmat | jnthn: wrt to adding phasers, I think we have a chicken and egg problem | 11:12 | |
some traits need a finished code object (e.g. is SYMBOL) | |||
whereas is DEPRECATED needs to be run before the code object is finished | |||
to be able to register the phaser | 11:13 | ||
jnthn | lizmat: What does "is SYMBOL" specifically need? | ||
lizmat | I'm now thinking about looping over the traits twice | ||
jnthn | No, that's wrong :) | ||
But finish_code_object does a lot of things. | |||
Maybe too many. | |||
lizmat | hold on: | 11:14 | |
the first time, it would just look for "is DEPRECATED" and makes sure the ENTER phaser will be primed | |||
jnthn | No, that's a fragile special case. | ||
lizmat | the is SYMBOL case is where this dies: | 11:15 | |
./perl6 --ll-exception --target=pir --output=lib/Test.pir lib/Test.pm | |||
Null PMC access in get_string() | |||
jnthn | hm, but is SYMBOL is used on constants, iiuc? | 11:16 | |
lizmat | yes, looks like that | ||
jnthn | Plus I can't find an is SYMBOL use in the setting...nor in Test.pm...hmm. | 11:17 | |
lizmat | gist.github.com/lizmat/6712800 | 11:18 | |
maybe "is export" is triggering this? | 11:19 | ||
jnthn | I think so, looking at the line number... | ||
lizmat | $ ./perl6 -e 'sub a is export { }' | 11:20 | |
===SORRY!=== Error while compiling -e | |||
Null PMC access in get_string() | |||
jnthn | yeah...hmm | ||
jnthn can kinda guess... | |||
I think $!do is not populated early enough. | |||
That needs to happen before the trait application | 11:21 | ||
lizmat looks | |||
jnthn | Maybe we pull add_phasers_handling_code out of finish_code_object and call it separately after trait application... | 11:22 | |
lizmat | ok, I'll try that | 11:23 | |
jnthn | Will need to update a few places (including World's general create_code_object, and anything else that calls finish_code_object) | ||
lizmat | yup | ||
jnthn | It's already a separate method so it shouldn't be too hard to refactor. | ||
lizmat | ok, I'll try that | ||
jnthn | lizmat++ | ||
11:26
darutoko joined
11:44
pmurias joined
|
|||
lizmat | running spectest now | 11:45 | |
next thing: to make warn show the position a few callframes up | 11:46 | ||
11:48
iSlug joined
11:52
rindolf left
|
|||
moritz | if we can sneak in another attribute into the exception object (or at least some of them), we can give the backtrace printer some hints where to start searching | 11:53 | |
11:53
xinming left
11:54
xinming joined
|
|||
dalek | kudo/nom: 95dabd9 | (Elizabeth Mattijsen)++ | src/Perl6/ (2 files): Move add_phaser_handler_code out of finish_code_object This to allow trait_mods to add phasers |
11:55 | |
lizmat | warn "foo", :skip 4 ? | ||
warn "foo", :skip(4) ? | |||
moritz | maybe | 11:56 | |
jnthn | warn "foo", :from(CALLER::CALLER) # another way | ||
dalek | kudo/nom: 50a57df | (Elizabeth Mattijsen)++ | src/core/traits.pm: Mostly code esthetics to is DEPRECATED We don't seem to be able to use $r.package in any way to show the class of the method. At least not at compile time :-( |
11:58 | |
11:59
sqirrel joined
12:08
jnap joined
12:09
sqirrel left
|
|||
masak | may I recommend for people interested in the OOP/FP hybridization, Martin Odersky (creator of Scala)'s slides www.slideshare.net/Typesafe/scaladays-keynote | 12:11 | |
talk here: www.youtube.com/watch?v=iPitDNUNyR0 | |||
12:12
alester joined,
sqirrel joined
|
|||
masak | tl;dr (so far): FP will absorb OOP just like OOP absorbed procedural. | 12:13 | |
moritz | and i like it that some (semi) FP-folks publicly state that local state *can* make things easier, and isn't all bad | 12:22 | |
masak | he just did that in the talk. | 12:23 | |
moritz | it's something that I've thought for a while, and I found it a bit weird that Haskell doesn't offer some sane way to handle local, mutable state | ||
12:23
pmurias left
|
|||
moritz | masak: yes, that's what I'm talking about :-) | 12:23 | |
masak | moritz: Haskell has a monad called State :0 | ||
:) | |||
maybe that's what you're looking for. | |||
anyway, aggregates went a long way in showing me how to handle (and contain) local state. | 12:24 | ||
12:25
kaare_ joined
|
|||
moritz | masak: no, not what I'm looking for, afaict | 12:25 | |
masak: I want to write pure functions whose signatures don't involve any monads | |||
jnthn | .oO( "You have to use a Monad", stated Simon... ) |
||
moritz | and use mutable, local state that doesn't escape | ||
masak | ah. "you can modify this container, if you promise not to let it escape the function". | 12:26 | |
moritz | aye | 12:27 | |
masak | what about returning a function that closes over the container? | ||
I fear there are some problems of intractability inherent in this. | |||
though I did read a very interesting paper on this not long ago. | |||
it's all tied to "linear logic", which is also connected to quantum computing and the unitarity restriction. | 12:28 | ||
12:30
pmurias joined
|
|||
masak | moritz: ah, found it. www.infoq.com/news/2012/12/Immutable-CSharp | 12:30 | |
"reference immutability". the idea doesn't seem 100% all there in terms of ease, but certainly interesting. | |||
jnthn kinda wishes they'd allow the "let" declarator occur outside of Linq too | 12:33 | ||
*to occur | |||
12:35
risou_awy is now known as risou
12:37
aaryabhatt joined
|
|||
moritz | masak: and it seems that's what people expect from 'has %.h' # look, I didn't mark it as 'is rw' | 12:38 | |
unrelated | 12:39 | ||
r: sub a() returns Hash { return {} }; a() | 12:40 | ||
camelia | ( no output ) | ||
moritz | r: sub a() returns Hash { return my %h }; a() | ||
camelia | ( no output ) | ||
moritz | I find it kinda annoying that we have no way to express the list-vs-item-ness in the type system | ||
or really any concise way to document and test/introspect that | 12:41 | ||
masak | moritz: yes, the readonly-ness of containers has grabbed my interest in the past years. I have become convinced that Perl 6 (as a spec) does not have the appropriate abstractions to make elements of a container readonly. | 12:44 | |
mind you, I do not know what those abstractions could be, or need to be. I'm just not seeing that we have them. | |||
there are two axes of confusion, actually: (x) readonlyness of a variable vs a container vs a value; (y) readonlyness of an object, array, or hash vs its attributes/elements. | 12:45 | ||
I guess the axes are not completely orthogonal, because arrays and hashes have "containers" in the (a) sense. | 12:50 | ||
hm, objects too, I guess. | |||
er (x)* | |||
the (x) one strikes when Rakudo implementors start mumbling about "decontainerization". | |||
moritz | (x) is also related to the flattens/doesn't flatten axis | 12:52 | |
jnthn | There are few places that the scalar container model pops its head up into userland. .VAR is one of them. | 12:53 | |
And := vs = is, of course, another. | |||
12:54
donaldh joined
|
|||
jnthn | Those aside, people largely expect to be able to talk about $x, or @a[1], as l-values and r-values without thinking too much about containers. | 12:54 | |
The fun really being that we have first-class l-values. | |||
Rather than things such as assignment being a special form. | 12:55 | ||
Decontainerization is really saying, "I don't want this thing to be usable as an l-value from this point on". | |||
masak | *nod* | 12:56 | |
it's interesting to look at how Python solves this, for example. | |||
they say things like "we don't have variables. those are *labels*, existing in a hash table somewhere, pointing to an object". | 12:57 | ||
12:58
notjack joined
|
|||
moritz | (and that's why their scoping is so weird / they have no mandatory declarations, right?) | 12:58 | |
jercos | rn: :4294967296[1, 0].say | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: :16[...] syntax NYI at /home/p6eval/niecza/lib/CORE.setting line 1536 (die @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3803 (unbase @ 8)  at /tmp/khNkM8VLxx line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.sett…» | ||
..rakudo 50a57d: OUTPUT«-2147483648» | |||
moritz | looks like rakudo doesn't use big numbers for the base | 12:59 | |
Template::Mojo also has warnings about bless.* | |||
masak | moritz: the scoping is really an orthogonal decision to that, but yeah. | ||
local variables are not explicitly declared in the common case. | 13:00 | ||
moritz adds "explicit declarations" to his list of "things we know how to get right in programming languages" | 13:01 | ||
masak | the lookup rules can be summarized as "LEGB": Local (function, not block), Enclosing (outer functions, innermost-first), Global (module), Built-in. | ||
13:02
zakharyas joined
|
|||
masak | moritz: add "block scope, not function scope" to the list, too :) | 13:02 | |
JavaScript and Python both suffer from that one. JavaScript is doing something about it. | |||
moritz releases R* | |||
there, tag push, tarball uploaded | 13:03 | ||
colomon | \o/ | 13:05 | |
moritz++ | |||
nwc10 fails to get the significance of the "not block" in "function, not block" | |||
moritz++ | |||
moritz | nwc10: function() { if (42) { var x = 42 }; alert(x) } | ||
nwc10: the inner block (from the if) isn't a scope boundary | |||
(in js) | 13:06 | ||
13:06
zakharyas1 joined
|
|||
moritz | which is a "feature" you avoid if you create a new language | 13:06 | |
jercos | r: blob32(0xFFFFFFFF).bytes.say;blob32.new(0xFFFFFFFF).unpack("H").say | ||
camelia | rakudo 50a57d: OUTPUT«invoke() not implemented in class 'Blob' in block at /tmp/l1zg_x0MU9:1» | ||
jercos | erm. heh. | ||
r: blob32.new(0xFFFFFFFF).bytes.say;blob32.new(0xFFFFFFFF).unpack("H").say | |||
camelia | rakudo 50a57d: OUTPUT«1-1f» | ||
pmurias | does spliting the nqpjs js runtime into nqp-runtime-core (the platform intependend part) / nqp-runtime-node / nqp-runtime-browser seem sane/good idea? | ||
nwc10 | moritz: ah, in JS | 13:07 | |
nwc10 doesn't know JS. Is this on x or two? | |||
masak | moritz++ | 13:08 | |
moritz | nwc10: there's just one x, because the inner {} don't introduce a new scope | ||
nwc10 | function() { var x = "Bother"; if (42) { var x = 42 }; alert(x) } | ||
moritz | that'll show 42 | ||
13:08
zakharyas left
|
|||
masak | nwc10: that's one x. | 13:08 | |
nwc10 | OK. thanks. Mmm. That's not, um, C-like :-( | ||
masak | nwc10: JavaScript's 'var' doesn't have block scope, only global/function scope. | ||
nwc10: JavaScript was developed in 11 days :P | 13:09 | ||
nwc10 | does it even warn that you've repeated var twice? | ||
masak | nope. | ||
13:09
ajr joined
|
|||
masak | well, that's implementation-dependent, I guess. | 13:09 | |
13:09
ajr is now known as Guest74092
|
|||
masak | nwc10: the good news is that ES6 introduces 'let', which *is* block-scoped. | 13:09 | |
pmurias really hates the function scoped var in javascript | |||
nwc10 | so it's better designed than PHP? :-) | ||
moritz | nwc10: maybe jslint (3rd party tool) warns about that one | 13:10 | |
nwc10 | and the design is sort of improving? | ||
masak | I wonder if *any* other language has both kinds of scoping in the same language. | ||
nwc10: the design is definitely improving. | |||
nwc10 | mmm, not thought of that. Awesome | ||
masak | nwc10: partly thanks to wrapper langs like CoffeeScript, it seems. | ||
that are leading the way and trying out new things in a kind of sandbox. | |||
13:10
PacoAir joined,
raiph joined
|
|||
nwc10 | and NQP soon? :-) | 13:10 | |
13:11
cognominal left
|
|||
masak | heh. | 13:11 | |
pmurias | it will propably take a while before NQP/Perl 6 to JavaScript becomes production quality | 13:12 | |
13:12
cognominal joined
|
|||
FROGGS | Christmas I suppose | 13:13 | |
13:13
ajr_ joined,
Guest74092 left
13:15
xenoterracide joined
13:25
grondilu joined
|
|||
grondilu | Hello #perl6 | 13:25 | |
FROGGS | hi grondilu | ||
13:26
cognominal left,
lowpro30 joined
|
|||
jnthn | moritz++ # star release | 13:26 | |
grondilu | any good news about MoarVM? I mean, the team still hopes to release a rakudo port soon, right? | ||
hoelzro | moritz++ | 13:27 | |
hoelzro builds a package | |||
jnthn | grondilu: The plan is to have NQP bootstrapped on MoarVM and have support in the October NQP release for MoarVM. The Rakudo proting work will then begin. | 13:28 | |
grondilu | ok | ||
masak | jnthn: does that mean that whoever releases NQP/Rakudo in October should pay special attention to Moar when doing the NQP release? | ||
FROGGS | masak: I guess enough ppl will pay special attention | 13:29 | |
jnthn | masak: I don't think there was any special attention given to the first release with JVM in :) | ||
masak | hm, point. | ||
FROGGS | and this nqp release will maybe state that moarvm support is there, but it won't be that useful at that moment I guess | ||
grondilu already noticed that nqp on moarvm is quite fast (he ran 'my $n := 1; while $n < 100000 { say($n); $n := $n + 1 }'), so he's having big expectations. | 13:30 | ||
pmurias | when is the October NQP release? | 13:31 | |
masak | pmurias: generally two days after the Parrot release is schedules. | ||
pmurias: (same as Rakudo) | |||
scheduled* | |||
FROGGS | 2013-10-17 Rakudo #69 Coke | 13:32 | |
just one day after my special day :o) | |||
13:34
zakharyas1 left
13:35
zakharyas joined
13:38
risou is now known as risou_awy
13:40
grondilu left,
stevan_ left
13:51
zakharyas left
|
|||
dalek | ar: d41ce21 | moritz++ | tools/star/release-guide.pod: note 2013.09 release in release-guide.pod |
13:51 | |
13:54
lowpro30_ joined
13:56
bluescreen10 joined
13:57
ksh left,
lowpro30 left
13:58
ksh joined,
thou joined
14:05
atroxaper joined
|
|||
atroxaper | Congratzzz all with R* ! | 14:05 | |
GlitchMr | <moritz> nwc10: function() { if (42) { var x = 42 }; alert(x) } | 14:11 | |
<moritz> nwc10: the inner block (from the if) isn't a scope boundary | |||
heh, it's actually worse in other programming languages. | |||
codepad.org/z7tVhXsi | 14:12 | ||
codepad.org/qda1gS1J | |||
In Python, it's fine when 'if' is true. If it's not, than it fails. | 14:13 | ||
moritz | I guess in js it's roughly the same, no? | ||
I mean, it'll just be null | |||
GlitchMr | In JavaScript, x is undefined in this case. | ||
null !== undefined | |||
nwc10 | GlitchMr: it fails, as in, run time exception? | ||
GlitchMr | Yes | ||
moritz can never remember which of those is used for what | |||
nwc10 | "that's nice, dear" | ||
masak | GlitchMr: in Python, basically everything is late-bound. | ||
GlitchMr: even function/class declarations. | 14:14 | ||
GlitchMr: you can put a *class declaration* in an if statement! | |||
nwc10 | so to be confident you haven't made typos, in python you need at (at a minimum) 100% code coverage? | ||
GlitchMr | Yeah, null and undefined are confusing in JavaScript, and probably nobody understands when null is used, and when undefined. | ||
masak | GlitchMr: I understand it :) | ||
(and I practically never use null, even though I acknowledge that it's distinct from undefined) | 14:15 | ||
14:15
btyler joined
|
|||
masak | in my opinion, the chief contribution of null in JavaScript is to be a security vulnerability. | 14:15 | |
GlitchMr | Well, I do to. | ||
But there are places where you have to use null. | 14:16 | ||
Most notably, Object.create(null) | |||
masak | GlitchMr: then "probably" was a bit of a weird usage. maybe you meant "virtually" or "practically". | ||
GlitchMr | ok, practically | ||
Generally, null is defined value that doesn't exist, and undefined is well, undefined. | 14:17 | ||
But seriously, why JS needs two similar types. | |||
FROGGS | right, why only two? | 14:18 | |
jnthn | masak: Maybe you meant you literally never use null? :P | ||
FROGGS is looking at you, Any, Mu, Nil and Whatever | |||
GlitchMr | You forgot Int, Str, and actually any type. | ||
PerlJam | masak: surely you only use null practically ;) | ||
GlitchMr | I never type undefined. | 14:19 | |
It lets you more easily detect when value that should be defined isn't. | |||
14:21
xenoterracide_ joined,
xenoterracide left
|
|||
GlitchMr | null is intentionally set nothing. | 14:21 | |
masak | jnthn: I "literally" "never" "use" null :) | 14:24 | |
FROGGS .oO( "I" ... ) | |||
FROGGS .oO( ":o)" ) | 14:25 | ||
masak .oO( ".oO( ... )" ) | |||
FROGGS | hehe | ||
GlitchMr .oO '.oO( ".oO( ... )" )' | |||
FROGGS | I love that | ||
O.o | |||
PerlJam | GlitchMr++ I saw that coming :) | ||
FROGGS q{ .oO '.oO( ".oO( ... )" )' } | |||
masak | ...and so on, ad recursitum. | 14:26 | |
GlitchMr | Except I made syntax error. | ||
GlitchMr .oO ('.oO( ".oO( ... )" )') | |||
FROGGS | true | ||
GlitchMr | masak: Until quotes end, but in Perl 6 you can do q[[]], so not. | ||
Even with Unicode there is finite number of character. | 14:27 | ||
characters* | |||
FROGGS | Perl 6 is really a multi-purpose quoting language | ||
GlitchMr | In C, there are only "" quotes ('' is for single character), so such recursion would have lots of backslashes. | 14:28 | |
FROGGS | NFG ftw! <̈ | 14:29 | |
14:29
cognominal joined
|
|||
FROGGS | meh, it swallows the ̈ | 14:29 | |
the dots -> ö | |||
GlitchMr | .oO ( ".oO ( \".oO ( \\\".oO ( \\\\\\\".oO ( \\\\\\\\\\\\\\\".oO ( \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\".oO( ... )\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" )\\\\\\\\\\\\\\\" )\\\\\\\" )\\\" )\" )" ) | 14:30 | |
Who would want to read something like that. | |||
coffeescript.org/#try:str%20%3D%20%...lert%20str | 14:31 | ||
code | |||
14:45
ssutch joined
|
|||
pmurias | masak: how is null a security vulenrablity in JavaScript? | 14:51 | |
GlitchMr | I've no idea, considering it mostly uses the same code as undefined. | 14:54 | |
in many JS implementations | |||
14:55
kaleem left
14:57
lowpro30_ left
14:58
kaleem joined
|
|||
masak | pmurias: people tend to remember to check for undefinedness, but seldom to check for null. | 14:59 | |
pmurias: null is another possible input to functions that may unpleasantly surprise the original programmer. | 15:00 | ||
pmurias | don't people usally check for null undefined with ==? | 15:03 | |
15:03
stevan_ joined
15:04
sqirrel left,
jnap left
15:05
iSlug left,
jnap joined,
skids left
|
|||
masak | pmurias: yes :( | 15:07 | |
pmurias: which, despite the fact that it actually *works*, is really two errors compounded. | |||
pmurias | heh | ||
TimToady | well, can still run my program on niecza, so no hurry on the getc from this end | 15:08 | |
yoleaux | 09:35Z <jnthn> TimToady: the .getc is just a NYI yet; it's in my list of failing tests to triage already | ||
masak | (for those who are curious, JavaScript has infix:<==> which does a failed form of smartmatching, and infix:<===>, which does exact matching.) | ||
15:09
xinming left,
ajr_ left,
ajr joined
15:10
ajr is now known as Guest61877,
xinming joined
|
|||
GlitchMr | masak, personally, I'm fine with == null. | 15:12 | |
15:12
Guest61877 is now known as ajr_
|
|||
masak | GlitchMr: I hope you would reconsider on that. | 15:12 | |
GlitchMr | If you read the specification, you can notice that null is only equal to null or undefined. | 15:13 | |
TimToady | do we need an e-ish notation scaled Rats?, so we could write 123.456789.round(1r-5) or some such? | ||
GlitchMr | This is surprisingly a case where == actually works. | ||
masak | GlitchMr: there just isn't any good reason in JavaScript to keep using infix:<==>, or to encourage its use. | 15:14 | |
GlitchMr | I find code like variable === undefined || variable === null ugly. | 15:15 | |
Why do that, when you can write variable == null, and it means the same thing. | |||
FROGGS | GlitchMr: I fear that doesn't work on Internet Explorer Mobile 5.0 :P | 15:16 | |
GlitchMr | Actually, it does. | ||
It was like that even in first JavaScript version. | |||
I don't know about IE Mobile 5.0, but I know it works in Netscape 2 and IE 3. | 15:17 | ||
FROGGS | I am pretty sure it doesnt on IEM5, I have to support it at $work | ||
15:17
kaleem left
|
|||
GlitchMr | ... now if IE Mobile 5.0 would exist. | 15:17 | |
Wikipedia skips it. | |||
TimToady | assuming we need a Rat exponential form, what color should the bikeshed be painted: 1d-5 1r-5 1f-5 1t-5 | 15:21 | |
1t looks too much like lt | |||
1d and 1f look too much like hexadecimal | |||
and f has floater associations | |||
so far I like 1r-5 best | |||
15:21
iSlug joined
|
|||
TimToady | 1R-5 doesn't look so bad either, since Rat starts with R | 15:22 | |
GlitchMr | I'm not sure what does 1R-5 do by looking at it. | ||
TimToady | 1r9 is a lot easier to write than 1_000_000_000 | 15:23 | |
jnthn | 1R-5 is ambig with 1 R- 5 | ||
TimToady | not really | ||
std: 1R-5 | |||
GlitchMr | 1e5.Rat | ||
camelia | std 7c17586: OUTPUT«===SORRY!===Whitespace is required between alphanumeric tokens at /tmp/jBpxMwih4l line 1:------> 1⏏R-5Check failedFAILED 00:00 42m» | ||
jnthn | Ah...yeah. | ||
!ww | |||
GlitchMr | rn: 1e5.Rat.perl.say | ||
camelia | rakudo 50a57d, niecza v24-95-ga6d4c5f: OUTPUT«100000.0» | ||
GlitchMr | Except it probably won't work with huge numbers. | 15:24 | |
TimToady | GlitchMr: that's fine for positives, but 1e-5 is not exact | ||
which we discovered trying to use it to round | |||
GlitchMr | hm, yeah. | ||
TimToady | 1r5 has the same "eye shape" as 1e5, from an ascender/descender point of view | 15:25 | |
GlitchMr | rn: (1.0*10.0**-5.0).perl.say | ||
camelia | rakudo 50a57d: OUTPUT«1e-05» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«1.0000000000000006E-05» | |||
GlitchMr | hm, no | ||
TimToady | 1ə5 :) | 15:26 | |
GlitchMr | My suggestion would be to make e fractional, and move floating point numbers to some other syntax, like 44.23d. | ||
TimToady | huh | 15:27 | |
GlitchMr | 1e-5 would return Rat, and if you want 1e-5 to be Num, use something like 1e-5d | ||
FROGGS | GlitchMr: part of the HTTP_UA_OS is "Windows CE (Pocket PC) - Version 5.1" | 15:28 | |
TimToady | well, d is bad because it looks like hex | ||
GlitchMr | hm, yeah | ||
TimToady | likewise f | ||
15:28
sqirrel joined
|
|||
TimToady | n would be it, I guess | 15:28 | |
GlitchMr | 1e-5.Num | ||
Self documenting | |||
TimToady | but not a literal | 15:29 | |
and tiresome if you want a bunch of 'em | |||
GlitchMr | Why somebody would want Num, and not Rat. | ||
Or Int. | |||
TimToady | really drive everyone nuts, 1e-5 is Rat, 1E-5 is Num :) | ||
GlitchMr | I would think that 1e6 is actually Int, but nope. | ||
1e6 is way nicer than 1_000_000. | 15:30 | ||
TimToady | 1r6 ain't bad, if we can educate people, r for "move the radix point" maybe | ||
1s6, s for "scale" | 15:31 | ||
then it could be Int or Rat | |||
GlitchMr | 2d4 to make things very confusing? | ||
TimToady | 2d6 would be even worse | 15:32 | |
5d20.roll | |||
GlitchMr | 2d6 should be syntax sugar for roll 2, 1..6 | ||
TimToady | well, we settled on a postfix:<d6> the other day for that :) | ||
GlitchMr | But I guess that if somebody would port some tabletop game using dices, he could declare infix:<d>, in order to make rolls less cryptic. | 15:34 | |
TimToady | doesn't work well, for same reason 1R-5 didn't parse | 15:35 | |
masak | moritz: I can't find the ∅ symbol anywhere in the spec -- do you have a reference? | ||
GlitchMr | if 5 < [+] 2d6 { } | ||
It looks great. Too bad I cannot declare infix:<d> without spaces inbetween. | |||
nwc10 | didn't we solve that with U+2063 ? | 15:36 | |
GlitchMr | .u 2063 | ||
yoleaux | U+2063 INVISIBLE SEPARATOR [Cf] (<control>) | ||
GlitchMr | Yeah, I'm going to add invisible separator to my code in order to make it more confusing. | 15:37 | |
nwc10 | :-) | ||
GlitchMr | Seriously, what? | ||
TimToady | don't need that if you just use a zero-width space | ||
GlitchMr | I want 4d6 to just work, without invisible nonsense. | 15:38 | |
masak | GlitchMr: then put it in quotes, like this: "4d6". | 15:39 | |
GlitchMr | <4d6> would be nicer. | 15:40 | |
But the problem is, it's just a string. | |||
15:40
iSlug left
|
|||
moritz | masak: I don't; lizmat++ added the changelog entry in question | 15:40 | |
GlitchMr | I want 4d6 to make instance of class other than Str. | ||
masak | lizmat: same question. where is ∅ defined? I'm postulating you dreamed it. :P | ||
lizmat: I've always had the empty set as 'set' | 15:41 | ||
rn: say set.elems | |||
camelia | rakudo 50a57d, niecza v24-95-ga6d4c5f: OUTPUT«0» | ||
colomon | masak: TimToady++ defined it in the original version of the Set code. ;) | ||
masak | I see. | ||
GlitchMr | And please, don't suggest BEGIN { for ^100 { eval "sub postfix:<$_> \{ ... \}" } }. | ||
TimToady | GlitchMr: you have that many kinds of dice? | ||
masak | GlitchMr: well, it seems to me you are in slang territory. | ||
moritz | that won't even work, because subs are lexically scoped | ||
FROGGS | put everything in that BEGIN block then | 15:42 | |
GlitchMr | And please, don't suggest BEGIN { for ^100 { eval "our sub postfix:<d$_> \{ ... \}" } }. | ||
FROGGS | no runtime at all so it would even be faster | ||
15:43
FROGGS[mobile] joined,
FROGGS left
|
|||
GlitchMr | Besides, eval is very slow in Rakudo, so code using this hack would be slow. | 15:43 | |
masak | you mean besides the fact that it wouldn't work because of what moritz++ said? :) | 15:44 | |
GlitchMr | That too. | ||
masak | minor detail. | ||
you'd be better off dynamically building a class. | 15:45 | ||
nwc10 | what does 2d6 currently parse as? | ||
masak | std: 2d6 | ||
camelia | std 7c17586: OUTPUT«===SORRY!===Whitespace is required between alphanumeric tokens at /tmp/gG_mPRCvH7 line 1:------> 2⏏d6Two terms in a row at /tmp/gG_mPRCvH7 line 1:------> 2⏏d6 expecting any of: POST feed_separator…» | ||
nwc10 | std: 2e6 | ||
masak | TTIAR. | ||
camelia | std 7c17586: OUTPUT«ok 00:00 41m» | ||
TimToady | you really want a macro postfix:<d>($x) with an 'is parsed' somewhere | ||
15:45
araujo left
15:46
araujo joined,
araujo left,
araujo joined
|
|||
GlitchMr | hax | 15:46 | |
I probably would be better using Perl 5, source filters, and /\b\d+d\d+\b/. | |||
15:47
raiph left
|
|||
GlitchMr | s/\b(\d+)d(\d+)\b/do { map { 1 + int rand $2 } 1..$1 }/g | 15:49 | |
do { } is used in order to avoid parsing problems. | 15:50 | ||
I mean | |||
s/\b(\d+)d(\d+)\b/do { map { 1 + int rand $1 } 1..$2 }/g | |||
Except that doesn't work in scalar context, so... | 15:51 | ||
s/\b(\d+)d(\d+)\b/do { wantarray ? map { 1 + int rand $1 } 1..$2 : $2 == 1 ? 1 + int rand $1 : die "Cannot throw more than one dice in scalar context" }/g | 15:52 | ||
masak | GlitchMr: this is #perl6. | ||
GlitchMr | hm, yeah. | ||
Does Perl 6 have source filters? | |||
TimToady | um, no | ||
by design | |||
daxim | what do you want to achieve? | ||
TimToady | daxim: see backlog | 15:54 | |
dice notation, specifically | |||
he wants to be able to roll 19-sided dice and such, for some reason... | |||
GlitchMr | Why hardcode d2, d4, d6, d8, d10, d12, d20, d100, and so on. | 15:55 | |
What if somebody wants d337 | |||
TimToady | then they can write a postfix | ||
it's a one-liner | |||
and we won't need even that when we finish up macros | 15:56 | ||
masak | something like 4d337 will be terribly inflexible, throwing away all the usual advantages of, say d(4, 337) | ||
TimToady | or slangs | ||
masak | GlitchMr: you're on a rather quixotic march here. | ||
GlitchMr | 4d337 is DSL. | 15:57 | |
TimToady | a rather impoverished DSL, masak is point out | ||
15:57
stevan_ left
|
|||
masak | GlitchMr: usually, nice designs/APIs are found by compromising between the exact user expectations and the limitations of the syntax. | 15:57 | |
GlitchMr: banging your head against the syntax rarely solves anything. | |||
TimToady | if we were designing a gaming DSL, then yes, I'd have both the low-wattage and high-wattage forms | 15:58 | |
but I'm not :) | |||
masak | TimToady++ # principled in the right places | ||
TimToady is trying to design a DSLGL | 15:59 | ||
or would that be a DSLSL? | |||
GlitchMr | DSL Generation Language? | ||
masak | I guess what Perl 6 is all about is giving you the *option* to cleanly shoot yourself in the foot in (for example) the way GlitchMr desires. | ||
GlitchMr: "generic" | |||
15:59
donaldh left
|
|||
TimToady | Perl 6 is a DGL | 15:59 | |
TimToady is much more interested in 2r6 than 2d6 | 16:00 | ||
GlitchMr | Perl 6 already has dangerous things like variable variables. So why I shouldn't be allowed to add infix:<d> so I can write 1284.592d204.41329 | 16:01 | |
TimToady | you can, except you can't put a d next to a 2 like that | ||
masak | GlitchMr: in the fullness of time, you will be able to do that. | ||
TimToady | not without a macro | ||
masak | right. | ||
GlitchMr: it's not about "allowed", it's about NYI. | |||
GlitchMr | oh, ok | ||
masak | r: macro postfix:<d>($term) { say "and you'll be able to put things after the d!"; return }; say 4d # \d+ NYI | 16:02 | |
camelia | rakudo 50a57d: OUTPUT«and you'll be able to put things after the d!Nil» | ||
16:03
fhelmberger_ joined
|
|||
TimToady | just needs an 'is parsed' on $term or so | 16:03 | |
16:04
fhelmberger_ left,
daxim left
|
|||
TimToady | alternately, prefix:<d> that takes a number in front of the d | 16:05 | |
then you can write 5d $sides | |||
instead of $count\d6 | 16:06 | ||
masak | still sucks either way, compared to d(5, $sides) | ||
16:06
fhelmberger left
|
|||
TimToady | roll(5, $sides) could almost be made to work, but I'd have to be argued into it | 16:07 | |
GlitchMr | Even (4)d(5) looks better. | ||
16:07
raiph joined
|
|||
masak | TimToady: nah, better not. | 16:07 | |
GlitchMr | Or alternatively 4[d]5. Hm | ||
infix:<[d]> could work. | 16:08 | ||
masak | TimToady: (^$sides).roll(5) already does that. | ||
TimToady | masak: no, 0-based | ||
masak | TimToady: >>+>> 1 | ||
TimToady | GlitchMr: don't need to define it with squares, you get it for free | 16:09 | |
jnthn | (1..$sides).rool(5) :) | ||
masak | rn: sub infix:<d>($count, $sides) { (1..$sides).roll(5) }; .say for 4d6 | ||
GlitchMr | rool. | ||
camelia | rakudo 50a57d: OUTPUT«===SORRY!=== Error while compiling /tmp/IBepwCwf6cConfusedat /tmp/IBepwCwf6c:1------> des) { (1..$sides).roll(5) }; .say for 4⏏d6 expecting any of: whitespace» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Whitespace is required between alphanumeric tokens at /tmp/4zalP3ZoKJ line 1:------> des) { (1..$sides).roll(5) }; .say for 4⏏d6Whitespace is required between alphanumeric tokens at /tmp/4zalP3ZoKJ …» | |||
masak | rn: sub infix:<d>($count, $sides) { (1..$sides).roll(5) }; .say for 4[d]6 | ||
camelia | rakudo 50a57d: OUTPUT«===SORRY!=== Error while compiling /tmp/Rc0lECImccTwo terms in a rowat /tmp/Rc0lECImcc:1------> ) { (1..$sides).roll(5) }; .say for 4[d]⏏6 expecting any of: argument list postfix statement end…» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Two terms in a row at /tmp/oEGLaeOgcQ line 1:------> ) { (1..$sides).roll(5) }; .say for 4[d]⏏6Other potential difficulties: $count is declared but not used at /tmp/oEGLaeOgcQ line 1:------> …» | |||
TimToady | nr: sub infix:<d>($a,$b) { [+] $a + roll $a, ^$b }; say 5[d]20 | ||
camelia | rakudo 50a57d: OUTPUT«===SORRY!=== Error while compiling /tmp/fPf6q9P7O5Two terms in a rowat /tmp/fPf6q9P7O5:1------> ,$b) { [+] $a + roll $a, ^$b }; say 5[d]⏏20 expecting any of: argument list postfix statement en…» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Two terms in a row at /tmp/WTy0cjQjyS line 1:------> ,$b) { [+] $a + roll $a, ^$b }; say 5[d]⏏20Undeclared routine: 'd' used at line 1Parse failed» | 16:10 | ||
masak | time to submit a rakudobug? :) | ||
GlitchMr | std: sub infix:<d>($a,$b) { [+] $a + roll $a, ^$b }; say 5[d]20 | ||
camelia | std 7c17586: OUTPUT«===SORRY!===Two terms in a row at /tmp/BY8NW2CxxD line 1:------> ,$b) { [+] $a + roll $a, ^$b }; say 5[d]⏏20 expecting any of: POST feed_separator infix or meta-infix infixed function postcircumfix postfix | ||
..postfix…» | |||
GlitchMr | time to send an everythingbug? :) | ||
masak | everything sucks. :/ | ||
TimToady | oh, yeah, postcircumfix [], oops | ||
jnthn | It's a postcircumfix. | ||
Which is parsed as part of term. | |||
[Coke] | oooh, I get the moar release? nifty. | 16:11 | |
TimToady | oh well, forget that approach | ||
16:16
dmol left
16:22
sqirrel left
|
|||
[Coke] | I added something to the daily run to track any potential output from the eval server. I'll let y'all know if I catch anything. | 16:22 | |
(rakudo.jvm) | |||
16:25
vk joined
16:26
vk left
|
|||
jnthn | [Coke]: thanks :) | 16:30 | |
16:34
aaryabhatt left
16:36
dakkar left
16:38
skids joined
16:41
Rotwang joined,
Rotwang left,
Rotwang joined
|
|||
dalek | ecs: 8ece611 | larry++ | S32-setting-library/Containers.pod: Mention ∅, clarify set composer semantics more |
16:50 | |
16:50
aaryabhatt joined
16:51
ajr_ left
|
|||
lizmat | masak, moritz: # U+2205 EMPTY SET | 16:51 | |
#constant term:<<"\x2205">> = set(); # invoke() not implemented in class 'QAST::Want' | |||
line 70 in src/core/Setty.pm | 16:52 | ||
n: say ∅ | |||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«set()» | ||
TimToady | lizmat: did you notice that the subscripting change broke *.[], *.<>, and *.{} | 16:53 | |
16:54
sisar joined,
FROGGS joined
|
|||
lizmat | TimToady: no, don't think so | 16:54 | |
I fudged a number of tests, but I don't recall fudging any .[] related tests | |||
TimToady | nr: my @a = [1,2,3],[4,5,6],[7,8,9]; say @a.map: *.[2] | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«3 6 9» | ||
..rakudo 50a57d: OUTPUT«Index out of range. Is: 2, should be in 0..0 in method <anon> at src/gen/CORE.setting:11768 in any at src/gen/Metamodel.nqp:2671 in any find_method_fallback at src/gen/Metamodel.nqp:2659 in any find_method at src/gen/Metamodel.nqp:946 in method reify…» | |||
masak | lizmat, TimToady: I think U+2205 EMPTY SET needn't be part of the setting. | 16:55 | |
if someone wants to be cute with Unicode constants in their own code, they can. | |||
for the setting, there's already set() | |||
lizmat | masak: why not? then you might as well go texas on all other set operators as well | ||
TimToady | we have all the Unicode set ops, so why not ∅? | ||
masak | *sigh* | 16:56 | |
it's hard to argue *against* bloat. :/ | |||
jnthn | Given we have all the Unicode set ops, I think that bloat has already sailed... | ||
TimToady | tacky... | ||
masak .oO( Perl 6 has missed the bloat ) | |||
lizmat | not necessaarily: the non-texas versions are actually just front-ends for the texas versions | 16:57 | |
jnthn | lizmat: I may be able to hunt that bug down later this evening | ||
lizmat | it wouldn't be much of a problem moving the non-texas versions out into a separate module | ||
jnthn thought at one point the spec had it so you did a "use" to get the Unicode set ops imported... | 16:58 | ||
Then it was decided to put 'em in the setting instead. | |||
TimToady | funny how the bloat argument shows up when we add a single character to the language :) | ||
sisar | o/ | 16:59 | |
Need some help. unable to build rakudo: sprunge.us/VPPA | |||
TimToady | jnthn: under the philosophy that we shouldn't have to import ordinary math | ||
lizmat | well, whatever is decided: putting them into a separate module would not be a lot of work | ||
moritz | ok, I have an anty-bloat proposal: get rid for 1) 'for' being lazy 2) sink context 3) Failure | ||
those three concepts confuse the heck out of everybody | |||
TimToady | moritz: sink context is never, ever going away | ||
the others are more negotiable | 17:00 | ||
moritz | TimToady: with which functionality? | ||
TimToady | the functionality of telling you when you're doing something stupid | ||
17:00
atroxaper left
|
|||
moritz | ok, I meant sink context specifically as a runtime construct | 17:01 | |
I'm fine with tracking it at compile time | |||
TimToady | I suppose we shouldn't tell a list whether we want it to act lazy or eager at run-time either? | 17:02 | |
sink is just one end of the laziness spectrum | |||
as such, we can probably avoid passing sink in as a special flag the way P5 does | 17:03 | ||
jnthn | lizmat: oh...that was the "we don't do termdef yet" thing... | 17:05 | |
TimToady | I mean, it doesn't need a flag in teh stack frame | ||
17:05
iSlug joined
|
|||
lizmat | jnthn: yes | 17:05 | |
TimToady | the list reading api needs to be able specify to the list how it is to be read though | ||
lizmat | there's no hurry on my side to get this fixed, btw | 17:06 | |
jnthn | lizmat: aye, but it'd be good to fix the termdef thing in general. | 17:07 | |
lizmat | then by all means, it would mean ~10 spectests :-) | ||
jnthn | We may need more spectsts for termdef :) | 17:08 | |
And apparently we need some for *.[] :) | |||
lizmat | jnthn: I'm not sure how to fix .[] etc., any pointers ? | 17:09 | |
17:09
ssutch left
|
|||
lizmat | aaahhhhh… I completely missed that TimToady meant Whatever.[] | 17:11 | |
yes, that broke: simplest case | |||
nr say *[0](1,2,3) | |||
nr: say *[0](1,2,3) | |||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Excess arguments to ANON, used 1 of 3 positionals at /tmp/GbWfbqMj6Y line 0 (ANON @ 1)  at /tmp/GbWfbqMj6Y line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE…» | ||
..rakudo 50a57d: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Whatever' in block at /tmp/IcpYdTyvhm:1» | |||
jnthn | lizmat: yeah | 17:12 | |
lizmat: See Actions.pm, whatever_curry | |||
lizmat checks | |||
jnthn | lizmat: Near the top it OKs infix, prefix and postfix. Try adding postcircumfix to that list. | ||
17:13
raiph left
|
|||
lizmat | I guess I should follow the callmethod value, right? | 17:13 | |
jnthn | ? | 17:14 | |
no, inside whatever_curry | |||
(nqp::index($past.name, '&infix:') == 0 || | |||
nqp::index($past.name, '&prefix:') == 0 || | |||
nqp::index($past.name, '&postfix:') == 0 || | |||
lizmat | ahhhh ok | ||
jnthn | After that | ||
lizmat | compiling and testing | 17:16 | |
jnthn | shop & | 17:17 | |
TimToady | using index to test for prefix bothers me, since it'll scan uselessly whenever it doesn't match | 17:19 | |
moritz waits for masak++ to construct a bug report that involves a variable named 'something&infix:bla' which shouldn't be treated as an infix, but is | 17:20 | ||
masak | :P | 17:21 | |
TimToady | well, the == 0 prevents that, but it's just the waste that bothers me | ||
17:23
sqirrel joined,
raiph joined
|
|||
TimToady | it's like using a pile-driver to squash a bug, and after doing it 50 times, then checking to see if you were successful the first time | 17:24 | |
17:25
ssutch joined
|
|||
moritz | might still be faster than nqp::eq(nqp::substr($past.name, 0, nqp::chars('&infix:')), '&infix:') | 17:25 | |
TimToady | and a smart index might even have set up Boyer-Moore tables on the assumption it was going to scan | ||
sure would be nice if we could write Perl 6 in Perl 6 :) | 17:26 | ||
then it's just /^ '&' [ in | pre | post 'circum'? ] fix ':' / :) | 17:27 | ||
colomon | TimToady: if said bug was a spider, I'm pretty sure my wife would be in favor of overdoing the piledriver. | ||
lizmat | $ perl6 --ll-exception -e 'say *[0](1,2,3)' | ||
Too many positional parameters passed; got 3 but expected 1 | |||
full stack trace: gist.github.com/lizmat/6717575 | 17:28 | ||
the error changed | |||
TimToady | colomon: what do you think of the idea of a scaled rat literal? | ||
lizmat | but I have no idea where that code lives | ||
FROGGS | lizmat: maybe look at the ast | 17:29 | |
colomon | TimToady: you mean like the 1.23r20 talk in the backlog? | ||
17:30
fhelmberger joined
|
|||
TimToady | lizmat: src/Perl6/Actions.nqp sez a recursive grep | 17:30 | |
17:31
fhelmberger left
|
|||
TimToady | yes, the specific case was .round(1r-5) that you were commenting on earlier | 17:31 | |
but also the frustration of being forced to write 1_000_000_000 at times | 17:32 | ||
lizmat | sanity check: *[0](1,2,3,4,5) should return the first element of the (1,2,3,4,5) parcel, right ? | 17:33 | |
17:34
sisar left
|
|||
TimToady | nr: say (1,2,3,4,5)[0] | 17:35 | |
camelia | rakudo 50a57d, niecza v24-95-ga6d4c5f: OUTPUT«1» | ||
TimToady | so it would seem | ||
lizmat | right *phew* | ||
TimToady | so *() has to be exempted from the postcirumfixes for * | ||
unless we force people to say (*[0])(1,2,3,45) | 17:36 | ||
lizmat | trying that | ||
TimToady | if we decide there's a use case for *.() | ||
which arguably there probably is | |||
17:36
SamuraiJack left
|
|||
TimToady | map: *.() should invoke each of a list of invokables | 17:36 | |
so I'm inclined to not make *() an exception, and force people to say (*[0])(1,2,3,4,5) if that's what they mean | 17:37 | ||
in that case, *[0](1,2,3,4,5) means { $_.[0].(1,2,3,4,5) } (as a WhateverCode) | 17:38 | ||
that feels cleaner to me | |||
the use case for callinging a WhateverCode directly is minimal | |||
*inginging | |||
lizmat feels she no longer has to duck | 17:39 | ||
TimToady | nr: say *[0](1,2,3,4,5).WHAT | ||
lizmat | as in: this is way over my head | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Excess arguments to ANON, used 1 of 5 positionals at /tmp/vU2WHEK3m3 line 0 (ANON @ 1)  at /tmp/vU2WHEK3m3 line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE…» | ||
..rakudo 50a57d: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Whatever' in block at /tmp/uP5CQeMuln:1» | |||
TimToady | n: say (*[0](1,2,3,4,5)).WHAT | 17:40 | |
camelia | niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Excess arguments to ANON, used 1 of 5 positionals at /tmp/zSzO4DEzSC line 0 (ANON @ 1)  at /tmp/zSzO4DEzSC line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE…» | ||
TimToady | I guess niecza exempts .() though | ||
n: say (*(1,2,3,4,5)).WHAT | 17:41 | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type Whatever at /tmp/JqJTGWQeaz line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-C…» | ||
TimToady | n: say ({.(1,2,3,4,5)}).WHAT | 17:49 | |
camelia | niecza v24-95-ga6d4c5f: OUTPUT«(Block)» | ||
TimToady thinks *(1,2,3,4,5) should mean that | |||
well, except it's a WhateverCode | |||
masak | TimToady: *(1,2,3,4,5) looks like -> &f { &f(1,2,3,4,5) } to me. | 17:51 | |
oh wait, we're saying the same thing, aren't we? | |||
TimToady | yes, though I just wrote it {.()} | ||
so I flipflopped on my answer to lizmat++ and don't think .() should be an exception under Whatever | 17:52 | ||
lizmat | .oO( lalaalalalala I'm not listening ) :-) |
17:53 | |
TimToady | but you BROKE it! WAAAH! :P | ||
lizmat | may I plead insanity ? | 17:54 | |
TimToady | as long as you don't plead ultro-low-frequency EM | ||
*ultra | 17:55 | ||
lizmat | My Hero! | ||
TimToady | but in that case someone needs to file a bug | ||
17:55
jnap left
|
|||
lizmat | .oO( I was suddenly reminded of en.wikipedia.org/wiki/My_Hero_(UK_TV_series) ) |
17:56 | |
17:56
stevan_ joined
|
|||
TimToady looks around for an anti-hero to file the bug report for all the wrong reasons... | 17:57 | ||
18:00
vfonic joined
|
|||
lizmat | I will file one if I can't get it fixed | 18:00 | |
flussence | TimToady: forgot to mention this the other day, those changes you suggested cut the compile time of my module in half. (I need to make that number more like 95% before I can call it usable though...) | 18:01 | |
18:03
vfonic left
18:07
zwut00 joined
|
|||
dalek | ecs: 26c204c | larry++ | S02-bits.pod: spec postcircumfix behavior under Whatever |
18:10 | |
18:10
ssutch left
|
|||
[Coke] | sisar - you have a prebuilt parrot, but not a pre-built nqp, it looks like - you probably need to pass --gen-nqp to rakudo's Configure.pl | 18:10 | |
18:11
rjbs left,
rjbs joined
|
|||
[Coke] | .to sisar - you have a prebuilt parrot, but not a pre-built nqp, it looks like - you probably need to pass --gen-nqp to rakudo's Configure.pl | 18:11 | |
yoleaux | [Coke]: I'll pass your message to sisar. | ||
TimToady | flussence: if the problem is compile time, just avoid compiling it :) | 18:12 | |
then when you do have to compile it, you can relax, throw Nerfoids at your officemates, and tell the boss "I'm compiling!" | 18:14 | ||
just invoke the mode that compiles it down to a .o, and call it with the native interface :) | 18:15 | ||
18:16
aaryabhatt left
|
|||
TimToady | (only half joking) | 18:16 | |
but yeah, it'll be nice when the compiler is faster | |||
diakopter++ and I were discussing ways to cut down parser allocations last night | 18:17 | ||
18:17
aaryabhatt joined
|
|||
lizmat submitted rakudobug #120025 | 18:18 | ||
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120025 | |||
lizmat | sorry, but this is way over my head, and with a 5+ minute test cycle, I feel someone more knowledgeable will have a much better chance | 18:19 | |
at fixing this in some sort of reasonable wallclock time | |||
18:19
iSlug left
|
|||
flussence | .oO( a native lib for that might not be such a bad idea; p5 has a similar module that could benefit from some XS ) |
18:21 | |
18:22
dmol joined
18:23
stevan__ joined
|
|||
colomon | TimToady: sorry for the slow reply. I'd forgotten that round works with both Num and Rat! I don't have any strong feelings on the letter to use for a Rat exponential. Those I remember pondering postfix:<Q> to turn things into FatRats, if that might factor in somehow. | 18:23 | |
TimToady | why Q? | 18:24 | |
18:27
stevan_ left
|
|||
TimToady | also, a postfix is a little late, if the literal to the left of it has already thrown away precision | 18:27 | |
1e-5Q would have already floatified the 1e-5 for instance | 18:28 | ||
colomon | TimToady: symbol for rational numbers. And maybe it should be part of the normal grammar for literal numbers? I don't know. just wanted to throw this into the fray | ||
TimToady | and a Rat might've already decided to promote to Num | ||
1r-5 -> Rat and 1R-5 -> FatRat maybe | 18:30 | ||
18:31
aaryabhatt left
|
|||
TimToady | or take GlitchMr++'s proposal to make e notation return Int/Rat, and have an explicit marker for floaters | 18:31 | |
not necessarily d though | 18:32 | ||
or make an e/E distinction, which is unorthodox, but not so bad for all that, since we distinguish case in most other areas of the language | 18:34 | ||
that is, 1e5 returns Int, 1e-5 returns Rat, and 1E5 returns Num | 18:35 | ||
18:35
darutoko left
|
|||
jnthn | Could use n for num, i for int, and r for rat... :) | 18:35 | |
TimToady | doesn't extend to FatRat though... | ||
18:35
iSlug joined
|
|||
TimToady | i is bad | 18:35 | |
jnthn | Complex? | ||
TimToady | yeah | 18:36 | |
1i-1 | |||
r: say 1i-1 | |||
camelia | rakudo 50a57d: OUTPUT«-1+1i» | ||
jnthn | yeah | ||
That won't fly :) | |||
TimToady | thought of that one half an hour ago, which is why I rejected it so quick :) | ||
and there's an argument that the e/E distinction is useful, insofar as it only changes the type of the number, not really the magnitude of it (ignoring precision loss) | 18:38 | ||
so the problem is still likely to work if you get the wrong e or E | |||
it'll just run slower | |||
s/problem/program/ | |||
otoh, a separate marker for floaters has the advantage of working without e notation | 18:39 | ||
1n could be a floating 1.0 | |||
though that look like ln | 18:40 | ||
1N is more distinctive | |||
nwc10 | can you use 'f' instead of 'e' for the exponent? | 18:41 | |
TimToady | looks like hex | ||
nwc10 | true. | ||
TimToady | of course, so does e :)_ | ||
pardon the drool | |||
must be lunch time... | |||
'course real hex always has a prefix, so it's not officially ambiguous | 18:42 | ||
1F0 almost looks like 1E0... | 18:43 | ||
and 1R0 almost looks like 1F0... | |||
18:44
krokite left
|
|||
TimToady | but me is enough of a Unixbrane to think uppercase looks ugly there | 18:44 | |
moritz | and 1F0 almost looks like UFO | ||
TimToady | a 1dentified flying 0bject | 18:45 | |
moritz | 1dentified quantiFied Object | 18:46 | |
18:47
not_gerd joined,
stevan__ left
|
|||
not_gerd | note that C uses the f suffix to denote float literals (in contrast to the default of double) | 18:48 | |
TimToady | yes, that also is a source of interference | ||
lizmat | .oO( they all look like R2D2 predecessors to me ) |
||
TimToady | squeee! | 18:49 | |
colomon | lizmat++ | ||
not_gerd | C also allows the 'p' instead 'e' if you want binary exponentials instead of base-10 ones, btw | ||
dalek | p/nqp_spawn: c300084 | (Tobias Leich)++ | src/vm/parrot/ (2 files): added nqp::spawn for windows+rakudo This is needed because qutoing of the arguments of rakudos spawn op is broken. This gives us the chance too to pass the env hash. |
||
TimToady | huh, when did they put that in? | 18:50 | |
TimToady still thinks in K & R | |||
nwc10 | TimToady: C99 | 18:51 | |
C99's atof() is not compatible with C89's | |||
TimToady | consarned newfangle contraptions!! | 18:52 | |
nwc10 | I still think that if they wanted to change the documented behaviour (and it was reasonable to want the new behaviour available) they should have used a *new* name and kept the old name doing the standardised thing | 18:53 | |
not "move the goalposts" | |||
TimToady | well, it's a different language :D | ||
not_gerd | aren't the ato* functions deprecated in favour of strto* anyway? | 18:54 | |
TimToady | obviously they shoulda broken it harder | ||
nwc10 | nailed a few more legs onto it? :-) | ||
TimToady | .oO( A Call to Legs ) |
18:55 | |
18:58
iSlug left
|
|||
nwc10 | I *think* that this almost contains a complement, as there's only one reference to "actual octopi" -- c2.com/cgi/wiki?ExtraLegsOntoaDog | 18:58 | |
masak | nwc10: well, the "and it still doesn't" is just another example of the all-you-get-is-one-bit world view on the other side of the echo chamber wall. | 19:01 | |
if we haven't "released", by definition we don't have a working OO system. | 19:02 | ||
and 68 Rakudo releases unfortunately don't count as having "released". | |||
19:03
zwut00 left
|
|||
TimToady | But this is our Last Chance to fix X!!! | 19:04 | |
nwc10 | I appreciate that you're grumpy, but I will be undiplomatic and ask if the channel logger is written in Perl 6 yet? | ||
(and that I indirectly made you grumpy, and this isn't helping) | |||
masak | nwc10: no, that did help. | 19:05 | |
19:05
ssutch joined
|
|||
masak | nwc10: unfortunately, 2013 will not be the year of "write all the things in Perl 6". 2014 will. | 19:05 | |
TimToady | .oO(now where did I put my lawn?) |
||
nwc10 | yes. agree that soon a lot of the answers will be different. And this is good. If not awesome | 19:06 | |
TimToady | nearly all of the dogfood issues hinge on performance | ||
not_gerd | oO( but how much food does a dog with 8 legs need? ) | 19:07 | |
TimToady | depends on whether you're walking it, or it's biting you | ||
does this dog by any chance have two mouths? | 19:08 | ||
masak | lizmat++ # RT #120025 | ||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120025 | ||
lizmat | yw | 19:09 | |
19:09
FROGGS[mobile] left
|
|||
nwc10 | RT #826 | 19:09 | |
oh, doesn't work for me :-) | |||
or maybe it's fussy about queues | |||
jnthn | nwc10: Think it expects more digits than that | 19:10 | |
TimToady | quick, file more bugs...oh wait... | ||
lizmat | Q: you can use nqp::elems to find out the number of keys in an nqp::hash, or not ? | 19:11 | |
jnthn | lizmat: ja | ||
r: say nqp::elems nqp::hash | |||
camelia | rakudo 50a57d: OUTPUT«0» | ||
moritz | nqp: say(nqp::elems({ a => 1, b => 2}) | ||
camelia | nqp: OUTPUT«Confused at line 2, near "say(nqp::e"current instr.: 'panic' pc 14693 (src/stage2/gen/NQPHLL.pir:5223) (src/stage2/gen/NQPHLL.nqp:279)» | ||
moritz | nqp: say(nqp::elems(hash( a => 1, b => 2)) | ||
camelia | nqp: OUTPUT«Confused at line 2, near "say(nqp::e"current instr.: 'panic' pc 14693 (src/stage2/gen/NQPHLL.pir:5223) (src/stage2/gen/NQPHLL.nqp:279)» | ||
nwc10 | ah, OK. RT #18400 | 19:12 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=18400 | ||
moritz | nqp: say(nqp::elems(hash( a => 1, b => 2))) | ||
camelia | nqp: OUTPUT«2» | ||
nwc10 | I believe that 18400 is the smallest numbered Perl 6 bug. | 19:13 | |
RT #2968 is an open Perl 5 bug. I guess that that is "too short" | 19:14 | ||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...ml?id=2968 | ||
nwc10 | oh, no.:-) | ||
FROGGS | RT #1 | ||
RT #0001 | |||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...ml?id=0001 | ||
nwc10 | I think that RT #826 is the oldest bug. | ||
FROGGS | ha! | ||
19:15
sqirrel left
|
|||
nwc10 | at least, it's probably the oldest that is visible. An exhaustive search might find more, but upset the admins | 19:15 | |
(and it's a test. The oldest open Perl 5 bug appears to be 1170) | |||
FROGGS | yay, this works now on windows@parrot: perl6 -e "run('dir', '/OS', 't')" | 19:18 | |
TimToady hopes that bug is "Perl 5 doesn't run on a PDP-11/70" | 19:25 | ||
19:25
stevan_ joined
19:30
dmol left
19:31
araujo left
19:36
SmokeMac_ left
|
|||
dalek | kudo/nom: e01955c | (Elizabeth Mattijsen)++ | src/core/ (2 files): Use a self-annihilating ENTER phaser for "is DEPRECATED" trait This is again a proof of concept. Because of &?BLOCK not existing, it is impossible to create a Block.remove_phaser($type,&?BLOCK) capability. Instead, this commit creates a "pop_phaser" method that will simply pop the last phaser of the given type from the list of phasers for that type. Since the ENTER phaser of the "is DEPRECATED" trait is added *after* any other ENTER phasers in that block, popping a phaser means removing the one that was added for "is DEPRECATED". Maybe we need a better way for a phaser to remove itself from future execution. |
19:36 | |
lizmat | afk for some R&R | ||
jnthn | I really don't think removing it from the phasers list is the way to go... | 19:40 | |
What if somebody adds another trait that adds a phaser and uses it after is DEPRECATED... | |||
geekosaur | wouldn't it be better to have it use a state var? | 19:42 | |
or do state vars themselves use BEGIN in the background or something | 19:43 | ||
? | |||
19:43
araujo joined,
araujo left,
araujo joined
|
|||
jnthn | geekosaur: A state var, or once block, would make sense to me. | 19:43 | |
19:44
raiph left
20:05
kaare_ left
|
|||
FROGGS | meh | 20:07 | |
jnthn: the S29-os\system.t dies in P6bigint.c->gc_cleanup :o( | |||
jnthn: and my guts tell my that this is not due to my recent nqp patch | 20:08 | ||
I have a feeling that $status but !$status in control.pm causes this | |||
jnthn | FROGGS: Sounds kinda familiar... | 20:09 | |
TimToady | if we decide to deprecate 'is DEPRECATED', will we have to start allowing traits on traits? | 20:10 | |
TimToady agrees with jnthn++ that mutating phaser lists on a (supposedly) immutable Block is fishy-smelling | 20:12 | ||
dalek | kudo/nqp_spawn: 6a08772 | (Tobias Leich)++ | src/core/control.pm: use nqp::spawn instead of pir:: for windows too |
20:13 | |
FROGGS | jnthn: that makes me think that a) we need to fix that bug, or b) we should introduce ProcessState now | ||
jnthn | TimToady: Could just put is DEPRECATED on the trait_mod for is DEPRECATED... :P | ||
FROGGS | ... and I'm not sure I can do a) at all | 20:14 | |
jnthn | r: multi trait_mod:<is>(Routine:D $r, :$OMGZ!) is OMGZ { } | ||
camelia | ( no output ) | ||
TimToady | depends on what the meaning of "is" is... | 20:15 | |
jnthn | I applied the trait without touching it! | ||
TimToady circularity saw is dented... | 20:16 | ||
*'s | |||
FROGGS | r: class A is A { } | 20:17 | |
camelia | rakudo e01955: OUTPUT«===SORRY!=== Error while compiling /tmp/8IaRmXPhst'A' cannot inherit from itself.at /tmp/8IaRmXPhst:1------> » | ||
jnthn | hah, it ain't that stupid... :) | ||
TimToady | that message is LTA | ||
jnthn | TimToady: How so? | ||
TimToady | it should say: cannot inherit from itself, dummy! | ||
:) | 20:18 | ||
jnthn | It feels a bit funny to say SORRY, then call the user a dummy :P | ||
FROGGS | we really need X::Insulting :o) | ||
TimToady | "we are all very sorry you are a dummy" | ||
class A eats itself by that tail and disappears in a puff of magic dragons | 20:19 | ||
*the tail | |||
jnthn | ok, enough $dayjob for today... | 20:20 | |
jnthn figures he'll do a Perl 6 thing or to... | |||
TimToady | JVM is a thing, and Moar is another thing... | ||
FROGGS | *g* | 20:21 | |
start with a small thing.... | |||
... like moarvm :o) | |||
TimToady | that would be Moar, relatively speaking, yeah | ||
FROGGS | but I think jnthn++'s priority is JVM* | 20:22 | |
err, R* including JVM | |||
TimToady | R* including * | 20:23 | |
20:23
snoopy_ joined
|
|||
FROGGS | yeah, * | 20:23 | |
masak | r: class A { ... }; class B is A {}; class A is B {} | ||
camelia | ( no output ) | ||
masak | r: class A { ... }; class B is A {}; class A is B {}; say A ~~ B; say B ~~ A | 20:24 | |
camelia | rakudo e01955: OUTPUT«No such method 'ACCEPTS' for invocant of type 'B' in block at /tmp/vxbwCmb91X:1» | ||
masak | oh, right. | ||
FROGGS | r: class A { ... }; class B is A {}; class A is B {}; say A.new | ||
camelia | rakudo e01955: OUTPUT«No such method 'new' for invocant of type 'A' in block at /tmp/lRDRKYqCYh:1» | ||
FROGGS | r: class A { }; class B is A {}; class A is B {}; say A.new | ||
camelia | rakudo e01955: OUTPUT«===SORRY!=== Error while compiling /tmp/UYG3XVNkoNRedeclaration of symbol Aat /tmp/UYG3XVNkoN:1------> ss A { }; class B is A {}; class A is B ⏏{}; say A.new expecting any of: statement list horizontal…» | ||
FROGGS | Aaah | ||
r: class A { }; class B is A { }; class A is B { }; | 20:25 | ||
camelia | rakudo e01955: OUTPUT«===SORRY!=== Error while compiling /tmp/v4eVwLLkDjRedeclaration of symbol Aat /tmp/v4eVwLLkDj:1------> s A { }; class B is A { }; class A is B ⏏{ }; expecting any of: statement list horizontal whitespa…» | ||
FROGGS | ahh, and now I see the errmsg | ||
TimToady | r: class A { ... }; class B is A {}; class A is B {}; say A.^mro | ||
camelia | rakudo e01955: OUTPUT«No such method 'dispatch:<.^>' for invocant of type 'A' in block at /tmp/2Viydo7amJ:1» | ||
TimToady | r: class A { ... }; class B is A {}; class A is B {}; say B.^mro | ||
camelia | rakudo e01955: OUTPUT«No such method 'dispatch:<.^>' for invocant of type 'B' in block at /tmp/r4TXufA8kE:1» | ||
TimToady | r: say Int.^mro | 20:26 | |
camelia | rakudo e01955: OUTPUT«(Int) (Cool) (Any) (Mu)» | ||
TimToady thinks A and B disappeared in a puff of something or other | |||
masak | "The MOP treats circularity as damage and doesn't attempt to route anything." :P | ||
timotimo | TimToady: "a puff of each other" more like | ||
TimToady | n: class A { ... }; class B is A {}; class A is B {}; say A.^mro | 20:27 | |
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Two definitions found for symbol ::GLOBAL::A first at /tmp/Rs1FwCkB1z line 1 second at /tmp/Rs1FwCkB1z line 1 at /tmp/Rs1FwCkB1z line 1:------> { ... }; class B is A {}; class A is B ⏏{}; say A.^mro…» | ||
masak is reminded of when he put the helmet in the helmet | |||
FROGGS | these puffs must be full of crap | ||
[Coke] | eval server still not handling test_summary.pl | 20:29 | |
lots of aborts today still. | |||
jnthn | :S | ||
[Coke] | output from eval server: nada. | ||
FROGGS | did mine too | ||
[Coke] | though the shell that launched it is hairy, and maybe I screwed it up: | 20:30 | |
exec 3> >( ./perl6-eval-server -bind-stdin -cookie TESTCOOKIE -app perl6.jar 2>&1 | tee eval-server.log ) | |||
geekosaur | if that's on a platform whose /bin/sh is not bash then you will need to force bash | 20:31 | |
[Coke] | #!/usr/bin/env bash | 20:32 | |
20:34
alester left
|
|||
TimToady feels naptacular suddenly | 20:34 | ||
geekosaur has been feeling that way for the past hour and a half :/ | 20:35 | ||
[Coke] | wonder if test_summary.pl is hiding output that would be useful here. | ||
20:35
ajr joined
20:36
ajr is now known as Guest45126
20:38
peteretep joined
|
|||
peteretep | Is there a list/repository anywhere of non-trivial Perl6 usage? | 20:38 | |
[Coke] | "what do you mean?" | 20:39 | |
PerlJam | peteretep: Define "trivial"? | ||
[Coke] | like, a showcase of applications written by people that isn't modules.perl6.org ? | ||
peteretep | Any companies using Perl6 in production, or any significant open-source projects in Perl 6? | ||
PerlJam | peteretep: Rakudo is a significant open source project using Perl 6 ;) | 20:40 | |
[Coke] | one company. haven't heard from him in a while. (OS projects) see modules.perl6.org | ||
pmurias | how should perl6 modules be wrapped to node.js ones? | 20:42 | |
masak | peteretep: I use Perl 6 to drive my (static) blog site. have been for the past 3 years. | 20:43 | |
peteretep: see strangelyconsistent.org/blog/dog-fo...rl6-flavor | |||
timotimo | masak: have you had successes with rakudo-jvm in the mean time? | ||
masak | hm, seems I have published 164 blog posts since the switch to psyde. :) | 20:44 | |
timotimo: please be more specific. | |||
20:45
snoopy_ left
|
|||
timotimo | does it build your website? is it much faster than on parrot? | 20:45 | |
masak | timotimo: ah. no, I haven't tried/checked that. | ||
jnthn | peteretep: You're going to find Perl 6 usage relatively small scale so far, given performance is not yet great and we're still rather early on the adoption curve. | ||
masak | consider it to be on my todo list from now on. | ||
timotimo | i seem to recall you wanted to, a couple month ago | ||
20:45
dwarring joined
|
|||
masak | timotimo: that may well be true :/ | 20:45 | |
peteretep | I wonder if I can interest my dev team to try using Perl6 for their next hacker day | 20:46 | |
timotimo | wasn't there some issue with unicode getting split in half at read chunk size boundaries a long time ago? or was that somebody else? | ||
dalek | p: 216debe | jnthn++ | src/vm/parrot/QAST/Operations.nqp: Add nqp::getcfh op on Parrot backend. Maps to what is used to provide getc in Rakudo now; will allow us to provide a JVM implementation also. |
20:47 | |
20:47
btyler left
|
|||
timotimo | cool | 20:47 | |
[Coke] | jnthn: one line blurb on what that opcode does? | 20:48 | |
(that doesn't reference another opcode? ;) | |||
FROGGS | it reads a char from an opened filehandle | ||
jnthn | Reads a single character from the supplied filehandle. | ||
20:48
BenGoldberg joined
|
|||
FROGGS | hehe, jnthn's answer is copy+paste-able | 20:49 | |
masak | timotimo: that was me, yes. | 20:50 | |
dalek | p: f15686a | coke++ | docs/ops.markdown: document new opcode jnthn++ |
||
FROGGS | timotimo: this was/is parrot specific | ||
masak | peteretep: interesting your dev team to try using Perl 6 for a hacker day sounds like good fun. let us know (a) if you need help finding docs/resources, (b) how it went. | ||
timotimo | oh, interesting | 20:51 | |
[Coke] | peteretep++ | ||
masak | timotimo: and FROGGS++ fixed the Parrot bug. | ||
timotimo | cool | ||
masak | timotimo: ...but due to our Rakudo release mechanics, the latest compiler (and Star) release doesn't contain the fix. | 20:52 | |
[Coke] tries to tread water on the docs. | 20:53 | ||
timotimo | wait ... the current one? | 20:54 | |
but wasn't that fixed like 3 months ago? | |||
FROGGS | timotimo: no, more like three weeks | 20:55 | |
dalek | p: bd10d58 | coke++ | docs/ops.markdown: fix style nit |
||
20:55
Rotwang left
|
|||
FROGGS | ha style-nazi! :P | 20:55 | |
[Coke] | it was... necessary. | 20:56 | |
FROGGS | yeah, I understand that | ||
I hate unproperly indended code fwiw | 20:57 | ||
masak | [Coke]++ # style | ||
timotimo | FROGGS: wut. | 20:59 | |
dalek | p: b4e00e5 | coke++ | docs/ops.markdown: fix formatting for trig ops. |
||
timotimo | i'm thoroughly confused now | ||
20:59
btyler joined
|
|||
masak | timotimo: why? | 21:00 | |
timotimo: Rakudo only upgrades its Parrot under certain conditions. | |||
timotimo: those conditions, quite clearly, didn't apply this release. | |||
timotimo: perhaps more importantly, there was no Parrot release to upgrade *to*, anyway. | 21:01 | ||
timotimo | i was sure that fix had been relevant three months, not weeks ago. | ||
masak | (as the Parrot release this month did not happen) | ||
timotimo: well, I wailed about the problem months ago. I submitted a Parrot ticket. nothing happened back then, though. | |||
FROGGS++ is the only one who took action. | |||
FROGGS | timotimo: just look at the parrot commits, I believe mine is the last *g* | ||
timotimo | :( | 21:02 | |
moritz | FROGGS: the last non-docs commit, yes | ||
masak | dukeleto++ is doing an admirable job pretending that Parrot isn't, at this point, well and truly, beyond-any-parrot-joke dead. | ||
but it is. | |||
21:03
skids left
|
|||
FROGGS | that doesn't mean it will never come back | 21:03 | |
not_gerd still has io-related, uncommitted parrot changes in his stash | |||
masak | FROGGS: oh, sure. | ||
FROGGS: someone just needs to come up with a, you know, purpose. and preferably a user base. | 21:04 | ||
21:05
stevan_ left
21:07
donaldh joined
|
|||
masak | now, Parrot and Perl 6 has had a long ride together, and I don't mean to be too harsh. but I don't see the Parrot road leading anywhere significant. meanwhile, Perl 6 will establish itself on the JVM, on Moar, and on the CLR. | 21:07 | |
oh, and JavaScript. | |||
pmurias++ | |||
pmurias | :) | ||
21:09
zwut00 joined
21:10
lowpro30 joined
21:15
araujo left,
araujo joined
21:16
araujo left,
araujo joined
|
|||
pmurias | masak: I think the current parrot plan is to repurpose it for something else other than Perl 6 | 21:16 | |
tadzik | alles beste | 21:17 | |
not_gerd | 'night, #perl6 | ||
tadzik | guten nacht, not_gerd | ||
21:17
lowpro30_ joined
|
|||
BenGoldberg | Hello, #perl6 :) | 21:17 | |
not_gerd | gute nacht, tadzik | 21:18 | |
tadzik | ach, right, gute | ||
I'm just Parroting what I learned years ago, it may be a little inaccurate :) | 21:19 | ||
timotimo | besichtigst du die schlafenswürdigkeiten? :) | ||
BenGoldberg | Are there any languages, currently supported by parrot, which aren't better supported by other vms or native compilers? | ||
masak | pmurias: far be it from me to stand in their way. and best of luck to them in finding that "something else". | ||
BenGoldberg: Perl 6. | |||
BenGoldberg: NQP. | 21:20 | ||
timotimo | BenGoldberg: winxed :) | ||
masak | PIR. :/ | ||
tadzik | hmm, I find schlafenswuerdigkeiten hard to decipher | ||
sleep-sights? :) | |||
21:20
not_gerd left
|
|||
timotimo | deciphering is easy, but i don't think it has any simple translation | 21:21 | |
masak | 'sleepworthinesses'? | ||
21:21
lowpro30 left
|
|||
BenGoldberg | Pleasant dreams? | 21:21 | |
tadzik | I'm quite sleep-worthy now :) | ||
BenGoldberg | What does winxed accomplish (other than inline pir), that javascript does not? | 21:26 | |
tadzik | seamless parrot interop, I think | 21:27 | |
BenGoldberg | So it's really only useful if you want to have a javascript-like language which needs to interop with some other language which runs on parrot. | 21:29 | |
21:29
SHODAN left
|
|||
timotimo | yeah | 21:29 | |
tadzik | it's not useful outside parrot really | ||
21:30
Guest45126 is now known as ajr_
21:31
SHODAN joined
|
|||
dwarring | jnthn++ masak++ for the edument course notes and examples | 21:35 | |
21:36
iSlug joined
|
|||
masak | yes, we do awesome things. :) | 21:36 | |
we're hiring. | |||
21:37
lowpro30_ left
|
|||
dwarring | my rate is $0 | 21:37 | |
diakopter | o_O | ||
dwarring | I've done a few little extrra hacks on the rubyish example - github.com/dwarring/nqp-rubyish | 21:38 | |
21:38
iSlug left
|
|||
dwarring mostly just stealing stuff from NQP::Grammar | 21:38 | ||
21:41
ajr_ left
|
|||
masak | dwarring++ # cool! | 21:41 | |
21:42
ajr joined,
ajr is now known as Guest82492
|
|||
dwarring | fun! | 21:43 | |
diakopter: snoopy is me | 21:44 | ||
diakopter | ? | ||
masak | diakopter: snoopy is he. | ||
diakopter | ... | ||
there's some stub code for you | 21:45 | ||
masak does the Snoopy dance | |||
dwarring | %^%&^$$%$ | ||
masak | std: %^%&^$$%$ | 21:46 | |
camelia | std 7c17586: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/bxQjWQMaq5 line 1:------> <BOL>⏏%^%&^$$%$Use of uninitialized value $first in string eq at STD.pm line 66222.Use of uninitialized value $first in string lt at S…» | ||
diakopter | well now, that's just going too far. | ||
well, stdbug anyway | |||
masak | indeed. | 21:47 | |
dwarring++ | |||
21:49
stevan_ joined
21:57
REPLeffect left
21:58
REPLeffect joined
22:01
donaldh left
22:04
raiph joined
|
|||
dalek | p: 7b79b2f | jnthn++ | src/vm/jvm/ (5 files): First pass at nqp::getcfh on JVM. |
22:05 | |
kudo/nom: a79c943 | jnthn++ | / (2 files): Use nqp::getcfh to implement getc. Also bump NQP_REVISION to a version that supports this op on both JVM and Parrot. |
22:07 | ||
TimToady | \o/ | ||
22:08
bluescreen10 left,
REPLeffect left
|
|||
jnthn | TimToady: It passes getc.t, which has all of one test, so let me know how it works out in reality :) | 22:08 | |
timotimo | does it work with utf16? :) | 22:09 | |
22:09
btyler left
|
|||
timotimo | or does it operate on buf-level? | 22:09 | |
jnthn | Yes, it is careful with encodings. :) | 22:10 | |
That's why it's so much darn code. | |||
TimToady would be doing work, but he's compiling... | 22:11 | ||
timotimo | :) | ||
BenGoldberg | How hard would it be, to create a perl6 grammar (and actions) which could read in a Bakus Naur Form grammar, and output a perl6 grammar? | 22:12 | |
TimToady | does it have to intuit where space is significant? :) | 22:13 | |
BenGoldberg | Not sure. But it would be nice if I could write a perl6 program which read in a bnf (from some external file, perhaps), and then verified that some other file was correctly formatted. | 22:14 | |
22:22
REPLeffect joined
|
|||
BenGoldberg | Well, not just check for being correctly formatted, but perhaps produce a parse tree, or otherwise act on the data. | 22:25 | |
diakopter | BenGoldberg: a parser generator generator? | 22:27 | |
22:28
PacoAir left
|
|||
jnthn | Don't think I'll get to defterm today. | 22:38 | |
TimToady | I note that the postal address example of BNF on wikipedia requires one to intuit where whitespace is required, where it is allowed, and where it is forbidden. :) | 22:40 | |
it assumes spaces are allowed between names, but a first name can be a letter followed by a ".", presumably with whitespace in between disallowed somehow | 22:41 | ||
most BNF is really sloppy this way... | |||
it also lets you write "Seattle , WA" | 22:46 | ||
jnthn | So does the postman... :) | ||
22:47
thou left
|
|||
TimToady | I don't know the IQ of my postman, but I'm pretty sure the IQ of my computer is less. | 22:47 | |
diakopter has a postwoman | 22:48 | ||
22:48
btyler joined
|
|||
TimToady | mine varies :) | 22:48 | |
sometimes he's a woman... | |||
diakopter considers legally changing my name to Trigger Word | |||
dalek | rl6-roast-data: 968c080 | coke++ | / (5 files): today (automated commit) |
22:50 | |
rl6-roast-data: 45d69ec | coke++ | bin/rakudo.jvm.sh: Track eval server output to catch any errors |
|||
rl6-roast-data: e76c1f0 | coke++ | / (5 files): today (automated commit) |
|||
[Coke] | rakudo.jvm test_summary on eval server still borking after a while on diakopter's machine. | 22:51 | |
22:53
pmurias left
22:54
pmurias joined
|
|||
TimToady | jnthn: your getc appears to work for my quiz editor | 22:57 | |
jnthn | TimToady: greatc \o/ | ||
TimToady: It runs on Rakudo JVM now? | |||
TimToady | the JVM version still isn't quite as snappy as the niecza version, but I expect that'll improve over time | ||
jnthn | TimToady: Snappier than the Parrot one? | 22:58 | |
TimToady | yes | ||
jnthn | And yes, things will improve. :) | ||
22:59
zwut00 left
|
|||
TimToady | about half our quizzers are from India, and their parents tend to be Java-literate, so they will be impressed, I think :) | 23:01 | |
masak | \o/ | 23:03 | |
TimToady++ # using Perl 6 in production | |||
diakopter | producify! | ||
23:03
kay__ left
|
|||
masak | 'night, #perl6 | 23:03 | |
diakopter | g'n | ||
g'n' | |||
TimToady | sleep good | 23:04 | |
diakopter | sleep long and popsicle | ||
[Coke] | jnthn++ | 23:08 | |
23:08
pmurias left
23:11
kay__ joined
23:13
Guest82492 left
|
|||
jnthn | 'night o/ | 23:29 | |
23:43
sisar joined
|
|||
sisar | o/ | 23:45 | |
yoleaux | 18:11Z <[Coke]> sisar: - you have a prebuilt parrot, but not a pre-built nqp, it looks like - you probably need to pass --gen-nqp to rakudo's Configure.pl | ||
23:46
sisar_ joined
|
|||
sisar_ | .tell [Coke] thanks for looking into it, but no luck. It fails with: sprunge.us/fVAH. I'm unfamiliar with the build process, but I thought that invoking '--gen-parrot' would automaticall build nqp too. | 23:48 | |
yoleaux | sisar_: I'll pass your message to [Coke]. | ||
23:49
REPLeffect left,
sisar left
23:50
REPLeffect joined
23:53
sisar_ left
23:59
REPLeffect left
|