»ö« 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. |
|||
[Coke] | Files.getAttribute(Paths.get(filename), "unix:dev")).longValue(); - what's this returning? | 00:03 | |
(from STAT_PLATFORM_DEV) | |||
diakopter | [Coke]: device or something? | 00:11 | |
:) | |||
perldoc.perl.org/functions/stat.html | 00:12 | ||
00:12
Psyche^_ joined
|
|||
[Coke] | nqp-m: say(nqp::stat("/dev/zero",nqp::const::STAT_PLATFORM_DEV)); | 00:12 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
00:12
_sri joined
|
|||
[Coke] | nqp-j: say(nqp::stat("/dev/zero",nqp::const::STAT_PLATFORM_DEV)); | 00:12 | |
camelia | nqp-jvm: OUTPUT«5» | ||
diakopter | nqp-m: say(nqp::stat("/dev/null",nqp::const::STAT_PLATFORM_DEV)); | 00:13 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | *cry* | ||
[Coke] | You're welcome. ;) | ||
diakopter | .oO( "BUT AT LEAST IT FAILED FAST!" ) |
||
nqp-m: say(nqp::stat("/dev/random",nqp::const::STAT_PLATFORM_DEV)); | 00:14 | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: say(nqp::stat("/dev",nqp::const::STAT_PLATFORM_DEV)); | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: say(nqp::stat("/",nqp::const::STAT_PLATFORM_DEV)); | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | sigh. | ||
Mouq | nqp-m: nqp::const::STAT_PLATFORM_DEV; | 00:15 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | lolz. | ||
Mouq | Not SEGVing there may help | ||
00:16
Psyche^ left
|
|||
diakopter | nqp-m: nqp::const::STAT_PLATFORM_DEV; | 00:16 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: nqp::const::STAT_PLATFORM_FOOOOOOOOOOOOOOOOO; | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
Mouq | nqp-m: nqp::const::halp; | 00:17 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
Mouq | nqp-m: nqp::const::CCLASS_ALPHABETIC | 00:18 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: say(nqp-m: nqp::const::CCLASS_ALPHABETIC) | 00:22 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: say(nqp-m: nqp::const::CCLASS_ALPHA) | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
Mouq | diakopter: I don't think camelia supports recursion yet :) | 00:24 | |
d^_^b | hey everyone | 00:25 | |
Mouq | Do I get a prize if I made my rakudo build die in stage parse with: 'maximum recursion depth exceeded'? :D | 00:26 | |
Hey d^_^b. Your name is very hard to type | 00:27 | ||
d^_^b | Mouq: really? I never type usernames | ||
I just use tab-key. | |||
d^ | |||
Mouq | Woah | ||
Mouq has only started using irssi recently | 00:28 | ||
d^_^b | irssi ftw | ||
diakopter | Mouq: yes, you get a prize | 00:36 | |
your commit bit gets doubled | |||
00:37
BenGoldberg left
00:40
BenGoldberg joined
|
|||
Mouq | r: say 0b01 * 2 % 1 | 00:42 | |
camelia | rakudo 2ce544: OUTPUT«0» | ||
Mouq | r: say 0b01 * 2 % True | ||
camelia | rakudo 2ce544: OUTPUT«0» | ||
TimToady | r: say 0b01 * 2 %% 1 | 00:43 | |
camelia | rakudo 2ce544: OUTPUT«True» | ||
Mouq | TimToady: It was supposed to be a bad pun on getting my commit bit doubled | 00:44 | |
diakopter: Or wait, did you mean for the rakudo repo? | 00:45 | ||
TimToady was just checking to make sure your commit bit was divisible by 1, or your pun would have been invalid :) | 00:46 | ||
Mouq | r: say 2.5 %% 1 | 00:47 | |
camelia | rakudo 2ce544: OUTPUT«False» | ||
diakopter | r: say 0 %% 0 | ||
camelia | rakudo 2ce544: OUTPUT«Divide by zero using infix:<%%> in method gist at src/gen/CORE.setting:11913 in method gist at src/gen/CORE.setting:972 in sub say at src/gen/CORE.setting:12813 in block at /tmp/EaX14yeJlv:1» | ||
diakopter | r: say 0 %% 1 | ||
camelia | rakudo 2ce544: OUTPUT«True» | ||
TimToady | r: say 2.5 %% 0.5 | ||
camelia | rakudo 2ce544: OUTPUT«True» | ||
diakopter | r: say 2 * pi %% pi | 00:48 | |
camelia | rakudo 2ce544: OUTPUT«True» | ||
diakopter | o_O | ||
r: say 22034592837465 * pi %% pi | |||
TimToady | that uses *long* division | ||
camelia | rakudo 2ce544: OUTPUT«True» | ||
TimToady | really really long | ||
Mouq | rn: say 2 * pi %% pi | ||
camelia | rakudo 2ce544, niecza v24-98-g473bd20: OUTPUT«True» | ||
Mouq | rn: say (2 * pi).DUMP | 00:49 | |
TimToady | rn: say pi.WHAT | ||
camelia | rakudo 2ce544: OUTPUT«(Num)» | ||
..niecza v24-98-g473bd20: OUTPUT«Num()» | |||
niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Unable to resolve method DUMP in type Num at /tmp/urNWtSVzQ4 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-CORE @ 576) …» | |||
..rakudo 2ce544: OUTPUT«6.28318530717959e0» | |||
TimToady thinks pi.WHAT should say (Irrat) :) | |||
diakopter | nqp-m: say(nqp::mod_n(3.14159,3.14159)) | 00:50 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | *whimper* | ||
geekosaur | (Wtf) | ||
diakopter starts to get gun-shy | |||
TimToady | nqp-m: say(nqp::mod_n(3,3)) | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
TimToady | nqp-m: say(nqp::mod_n(3e0,3e0)) | 00:51 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
Mouq | nqp-m: say(nqp::mod_I(3,3)) | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: say(nqp::mod_i(1,1)) | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | _-_- | ||
TimToady wonders if this qualifies as a foolish consistency | 00:52 | ||
it being close to halloween and all | |||
diakopter | it really likes the seggies today | ||
TimToady | maybe it needs more segments | ||
diakopter | nqp-m: nqp::segment() | 00:53 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | *headdesk* | ||
TimToady | nqp-m: nqp | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
geekosaur | well, it does seem to be consistent... | ||
TimToady | nqp-m: say("(signal SEGV)") | 00:54 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | no newline! | ||
TimToady | it's just a semipredicate problem :) | ||
nqp-m: print("(signal SEGV)") | |||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
TimToady | happy now? | ||
Mouq | nqp-m: 1 | 00:55 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: | ||
nqp-m: ; | |||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
diakopter | nqp-m: die | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
TimToady | maybe "needs more segments" means "needs one segment" :P | ||
00:56
jferrero joined,
jferrero left,
jferrero joined
00:57
REPLeffect left
00:58
REPLeffect joined
01:23
sizz joined
01:33
xinming_ left
01:34
xinming joined
01:41
jnap left
|
|||
TimToady | this segment of #perl6 brought to you by the number ∅ and by the letters π and ε | 01:43 | |
colomon | ∅ is not a number, is it? | 01:44 | |
TimToady | well, church numerals and such... | 01:45 | |
colomon | eh, I suppose. | ||
diakopter | I'm a number | ||
TimToady goes to play a number of drums and to do some cymbalic computation | 01:47 | ||
afk & | |||
diakopter | er, oops, still at office | ||
colomon | I am not a number. I am a person. | 01:48 | |
geekosaur | I'm a number... if you Gödel encode my genome and epigenome | 01:51 | |
(which admittedly is a bit like FFTing your cat) | 01:54 | ||
01:55
wbill joined
|
|||
colomon | … are you implying your genome is an expression in Peano arithmetic? | 01:56 | |
BenGoldberg | Musical genes? | ||
nqp: 1 | 01:58 | ||
camelia | ( no output ) | ||
..nqp-moarvm: OUTPUT«(signal SEGV)» | |||
colomon | ouch | ||
diakopter | nqp-m isn't running much of anything today | 01:59 | |
benabik | IANaN | 02:10 | |
dalek | Heuristic branch merge: pushed 91 commits to nqp/stdsigspace by Mouq | 02:12 | |
benabik | My perl6 toolchain is not very test clean. test failures in parrot, nqp-p (possibly related), and nqp-j. nqp-m doesn't even build. Kinda sad. :-/ | 02:13 | |
Mouq sent a CLA to TPF some time ago. Could someone with the capacity please (I would .tell moritz, but, alas, poor yoleaux, I knew it well) verify that TPF got it and, if they're feeling super nice, give me a commit bit for Rakudo? | 02:21 | ||
s/me/him/ I suppose | 02:22 | ||
s/they're/that person is/ too | 02:23 | ||
I guess I could email [email@hidden.address] | 02:25 | ||
[Coke] | I don't think there's anyone on channel who would get the physical mail. | ||
I can check the spreadsheet to see if you were added... | 02:26 | ||
no string matching "mou" | |||
(last updated jul 10) | 02:27 | ||
Mouq == Alexander Moquin | |||
[Coke] | no string matching "moq" | ||
Mouq | Okay, thank you [Coke] | ||
[Coke] | so, need to ping someone at the tpf itself, closer to the mailbox (snail or e) | ||
colomon | Does it still go somewhere in Michigan? When I sent in mine, I think the PO box was just a few hours' drive away... | 02:32 | |
BenGoldberg | r: my @H := say do { my @b = (Inf, 1, 1); my ($a, $b) = (1, 1); gather { .take for @b; for (3..Inf) { ($a, $b) = ($b, [+] @b[$_-$a, $_-$b]); take $b; push @b, $b } } }[1..10] | 02:34 | |
camelia | rakudo 2ce544: OUTPUT«1 1 2 3 3 4 5 5 6 6Type check failed in binding; expected 'Positional' but got 'Bool' in block at /tmp/Oxm_pEy5gQ:1» | ||
BenGoldberg | Hmm, nevermind... | 02:35 | |
02:35
grondilu joined
|
|||
BenGoldberg | nr: say do { my @b = (Inf, 1, 1); my ($a, $b) = (1, 1); gather { .take for @b; for (3..Inf) { ($a, $b) = ($b, [+] @b[$_-$a, $_-$b]); take $b; push @b, $b } } }[0..10] | 02:37 | |
camelia | niecza v24-98-g473bd20: OUTPUT«Inf 1 1 6 6 6 6 6 6 6 6» | ||
..rakudo 2ce544: OUTPUT«Inf 1 1 2 3 3 4 5 5 6 6» | |||
BenGoldberg | Now, that's a bug | ||
There's a workaround, but it shouldn't be necessary: | 02:39 | ||
nr: say do { my @b = (Inf, 1, 1); my ($a, $b) = (1, 1); gather { .take for @b; for (3..Inf) { ($a, $b) = ($b, [+] @b[$_-$a, $_-$b]); take 0+$b; push @b, $b } } }[0..10] | |||
camelia | rakudo 2ce544, niecza v24-98-g473bd20: OUTPUT«Inf 1 1 2 3 3 4 5 5 6 6» | ||
lue | Quick question about some recent changes: do I now need to be mindful of nqp => nqp-* and perl6 => perl6-* when I next update my repos, and worst case set up a symlink for the unqualified names based on whatever VM I like best? | 02:40 | |
Mouq | [Coke]: Okay, sounds good. I can't find them online right now, but I'll for them again at some point. | 02:42 | |
02:48
grondilu left
|
|||
Mouq | *look :p | 02:48 | |
[Coke] | nqp: say(nqp::stat("barf",nqp::const::STAT_PLATFORM_BLOCKSIZE)) | ||
camelia | nqp-parrot: OUTPUT«stat failed: No such file or directorycurrent instr.: '' pc 40 ((file unknown):39) (/tmp/n9gB72jW8c:1)» | ||
..nqp-jvm: OUTPUT«java.lang.UnsupportedOperationException: STAT_PLATFORM_BLOCKSIZE not supported in (/tmp/0BxIcdLN6Z:1) in (src/stage2/gen/NQPHLL.nqp:1098) in eval (src/stage2/gen/NQPHLL.nqp:1084) in evalfiles (src/stage2/gen/NQPHLL.nqp:1290) in command_eval (src…» | |||
..nqp-moarvm: OUTPUT«(signal SEGV)» | |||
[Coke] | nqp-p: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKSIZE)) | 02:49 | |
camelia | nqp-parrot: OUTPUT«4096» | ||
[Coke] | nqp-p: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKS)) | ||
camelia | nqp-parrot: OUTPUT«8» | ||
[Coke] | nqp-j: say(nqp::stat("/etc/passwd",nqp::const::STAT_PLATFORM_BLOCKS)) | ||
camelia | nqp-jvm: OUTPUT«java.lang.UnsupportedOperationException: STAT_PLATFORM_BLOCKS not supported in (/tmp/w5_9rqCuyX:1) in (src/stage2/gen/NQPHLL.nqp:1098) in eval (src/stage2/gen/NQPHLL.nqp:1084) in evalfiles (src/stage2/gen/NQPHLL.nqp:1290) in command_eval (src/st…» | ||
02:55
xenoterracide joined
|
|||
dalek | p: 2c2d3bc | coke++ | docs/ops.markdown: first pass at stat() docs. Pulled solely from the JVM impl. |
02:56 | |
rl6-roast-data: ceb900f | coke++ | / (4 files): today (automated commit) |
|||
[Coke] | lizmat: rakudo.jvm is aborted 45 tests in re: deprecations. | 02:57 | |
(there are several other various failures that need addressing) | |||
my attempt at an indented list failed for stat(). markdown help appreciated. | 02:58 | ||
github.com/perl6/nqp/blob/master/d...kdown#stat | 02:59 | ||
Mouq | [Coke]: I don't think you can, but how does this work for you: gist.github.com/Mouq/7130628 | 03:04 | |
Of course, you could use html somehow, but I don't know how well Github deals with that | 03:05 | ||
03:07
panchiniak left
03:11
preflex left
03:13
preflex joined,
ChanServ sets mode: +v preflex
03:20
Mouq left
03:26
uvtc joined
|
|||
uvtc | [Coke], re. Markdown help, I'm not sure what you mean by "indented list". Aside from that though, I suggest following the 4-space rule: all content (counting list markers as just whitespace) should start at column nums which are multiples of 4. Pandoc follows this rule, and nested lists work out very nicely. | 03:30 | |
[Coke], not sure how closely github's flavor of markdown follows the 4-space rule though. | 03:32 | ||
03:37
preflex_ joined,
ChanServ sets mode: +v preflex_,
preflex left,
preflex_ is now known as preflex
|
|||
uvtc | [Coke], Oh, I see. You want to indicate that the variants might throw an exception. No markdown markup for that, that I know of. Though, aside, Pandoc-markdown supports definiton lists, which work well for docs like this, IMO (github's md does not). | 03:38 | |
03:38
fridim_ joined
03:39
dansamo joined
|
|||
uvtc | An opportunity for languages wishing to compete with PHP, IMO: news.ycombinator.com/item?id=6582012 . | 03:41 | |
03:43
xenoterracide left
03:45
dansamo left
|
|||
uvtc | compete for users, I mean. | 03:50 | |
03:50
uvtc left
04:03
wbill left
04:04
wbill joined
04:09
fridim_ left
04:22
GlitchMr joined
04:24
[Sno] left
04:30
GlitchMr left
04:33
GlitchMr joined
04:49
BenGoldberg left
|
|||
moritz | \o | 04:56 | |
lizmat: seems to be an error in some exception handling code | 05:08 | ||
use of uninitialized value of type Any in string contextCannot look up attributes in a type object | 05:09 | ||
current instr.: 'print_exception' pc 135403 (src/gen/p-CORE.setting.pir:57754) (src/gen/p-CORE.setting:10667) | |||
r: say ~Any | |||
camelia | rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/4M1TtjQoXz:1» | ||
moritz | hm, not that one. | ||
05:09
xinming left
|
|||
moritz | oh, it happens in Array stringification | 05:11 | |
my @array = <a b c>; my @other; @other[1] = @array; say ~@other | 05:12 | ||
dies | |||
05:14
xinming joined
|
|||
moritz | r: my @array = <a b c>; my @other; @other[1] = @array; say @other.perl | 05:20 | |
camelia | rakudo 2ce544: OUTPUT«Array.new(Any, ["a", "b", "c"])» | ||
moritz | r: my @a; @a[1] = 42; say ~@a | 05:21 | |
camelia | rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/2wpuIfxlMP:1 42» | ||
moritz | r: my @a; @a[1] = <a b c >; say ~@a | ||
camelia | rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/FX8CqGlhU6:1 a b c» | ||
05:25
[Sno] joined
05:42
SamuraiJack joined,
dansamo joined
05:49
Rotwang joined
05:57
kaleem joined
06:22
darutoko joined
06:35
xenoterracide joined
|
|||
masak .oO( ∅ is a number in the Church of Zermelo ) | 06:39 | ||
masak .oO( I am the Empty Set, AMA ) | |||
06:43
denis_boyun joined
|
|||
moritz | good morning masak | 06:55 | |
arnsholt | o/ | 07:02 | |
masak | good moritz, morning. | 07:03 | |
and good \o, arnsholt. | 07:04 | ||
07:04
Rotwang left
07:05
GlitchMr left
07:07
GlitchMr joined
07:08
FROGGS joined
|
|||
moritz | diakopter++ seems to be right that after the branch landed, some compiler flags are missing | 07:08 | |
I have to $work now; if anybody wants to investigate, the CFLAGS line is much shorter after the merge | 07:13 | ||
might just be a matter of propagating the information inside Configure.pl | 07:14 | ||
dalek | p: e336a06 | moritz++ | tools/build/Makefile-Parrot.in: [parrot] fix race condition in the build the dyncall ops depend on the basic nqp ops; this failed reliably for me with make -j3 |
07:15 | |
07:17
dansamo left
07:18
dansamo joined
07:20
LWA joined,
iSlug joined
|
|||
frettled | Good masak, everyone! :) | 07:25 | |
masak | good frettled, (morning+antenoon)/2. | 07:26 | |
r: role Greeting { method greet { ... } }; class NormalGreeting does Greeting { has $.name; has $.time; method greet { "good $.time, $.name" } }; class ConfusedGreeting does Greeting { has $.name; has $.time; method greet { "good $.name, $.time" } }; say .new( :name<frettled>, :time<morning> ).greet for NormalGreeting, ConfusedGreeting | 07:32 | ||
camelia | rakudo 2ce544: OUTPUT«good morning, frettledgood frettled, morning» | ||
masak | \o/ | ||
dalek | kudo/nom: 78f9616 | moritz++ | tools/lib/NQP/Configure.pm: [Configure] fix parsing of config values = should not be allowed inside option names, because it is the delimiter |
07:33 | |
moritz | I'm a bit scared that some rakudo features seem to rely on the compiler flags that parrot considers "warning" flags | 07:34 | |
frettled | masak: lovely :D | 07:35 | |
masak: with a little bit of work, I'm sure Perl 6 will become as verbose as Java. *G,D&R* | 07:36 | ||
07:42
denis_boyun left
|
|||
arnsholt | moritz: Which features is that? | 07:42 | |
It's worth noting that Parrot's cflags are set on a policy of "as many warnings as possible" | |||
lizmat | r: my @array = <a b c>; say ~(@array[2, *-1]:delete) | 07:43 | |
camelia | rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/CRUGQnLTJQ:1c » | ||
lizmat | hmmm | ||
masak | hmmm indeed. | 07:45 | |
are the values all returned before they're deleted? does .elems stay the same the whole time? | 07:46 | ||
intuitively, I'd say "yes" to both of those. | |||
07:47
sqirrel joined
|
|||
moritz | arnsholt: stuff like -falign-functions=16 | 07:49 | |
07:49
iSlug left
|
|||
arnsholt | Why is that a warning? | 07:51 | |
moritz | huh, but re-adding it didn't help :( | ||
masak .oO( too late, you already said "no warnings"! ) :P | 07:52 | ||
lizmat | [Coke]: re: deprecations testing, I guess jakudo doesn't have properly functioning Backtrace ? | 07:53 | |
07:56
zakharyas joined
|
|||
arnsholt hates fighting with Python and encodings | 08:01 | ||
tadzik hates fighting | |||
arnsholt | Troo, troo | ||
tadzik | unless it's the usual "the man above wins" on the grass outside the bar :D | ||
masak .oO( the man above always wins ) | 08:03 | ||
lizmat nuked parrot/nqp/install directories and did a rebuild, to no avail :-( | 08:06 | ||
how come camelia doesn't suffer the same problem? is that running jakudo nowadays ? | |||
moritz | r: my @array = <a b c>; my @other; @other[1] = @array; say ~@other | 08:08 | |
camelia | rakudo 2ce544: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/1Z_nP1CSXf:1 a b c» | ||
moritz | lizmat: it's still on a pre-branch revision | 08:09 | |
lizmat | $ git describe | ||
2013.10-75-g6ee9539 | |||
moritz | lizmat: I might have a "fix" | ||
that is, I don't understand why it's necessary | |||
but it helps with the test (autoref.t) that I've been looking at | 08:10 | ||
dalek | kudo/nom: c37dfc7 | moritz++ | src/core/Backtrace.pm: guard against undefined code object in backtraces I have no idea why this is necessary, but it seems to fix a lot of broken spectests |
08:11 | |
lizmat | testing | 08:12 | |
feels like this is fixing the symptom rather than the cause :-) | |||
moritz | agreed | ||
that's why I said "fix" | 08:13 | ||
lizmat | masak would say workaround :-) | ||
masak | hehe | 08:15 | |
no, "fix" is right here :) as in "make working". | 08:16 | ||
lizmat | builds ok, primary test now works, spectesting now | 08:17 | |
08:18
iSlug joined
08:19
donaldh left
|
|||
jnthn | morning o/ | 08:19 | |
08:21
LWA left
08:22
LWA joined
|
|||
FROGGS | o/ | 08:23 | |
08:23
donaldh joined
|
|||
lizmat | o/ jnthn FROGGS ! | 08:24 | |
FROGGS | hi lizmat :o) | ||
lizmat | one fail in spectest now: t/spec/integration/error-reporting.t not ok 11 - warning reports correct line number and subroutine | 08:26 | |
fitness& | |||
08:27
dakkar joined
08:29
dmol joined
08:38
denis_boyun joined
08:39
daxim joined
08:40
ximarin joined
08:43
LWA left
08:44
LWA joined
|
|||
dalek | kudo/config: 36ce066 | (Tobias Leich)++ | / (3 files): added perl6_ops.c and compile it to dll This pulls in nqp::backendconfig to get build flags to build it. |
08:59 | |
FROGGS | .tell jnthn I dunno how right or wrong this is... you'd need config/config/config, and create a stage0 | 09:00 | |
argg | 09:01 | ||
jnthn: after that you should be able to: make dynext/libperl6_ops_moar.so - or - make dynext/libperl6_ops_moar.dll - or so | |||
depends to what you dll pattern is set to | |||
09:02
LWA left
|
|||
FROGGS | on linux it looks like this: gist.github.com/FROGGS/332e4ac29be58cdf3361 | 09:04 | |
hmmm, does it needs to be linked agains libmoar.a or against the 3rdparties (too)? | 09:08 | ||
against* | |||
09:12
DarthGandalf joined
09:15
LWA joined
09:19
iSlug left,
iSlug joined
09:24
ximarin left
09:28
LWA left
09:29
LWA joined
09:33
xenoterracide left
09:37
dmol left,
dmol joined
09:39
fhelmberger joined
09:41
denis_boyun left
09:44
xinming left
09:48
xinming joined
10:02
pecastro joined
10:06
denis_boyun joined
10:11
iSlug left
10:12
denis_boyun left
10:25
denis_boyun joined
10:26
wbill left
10:35
denis_boyun left
|
|||
lizmat | moritz: I think the patch makes warnings not die, but the result is that warning now do not show the right location | 10:48 | |
$ perl6 -e 'sub a { +Any }; a()' | |||
use of uninitialized value of type Any in numeric context in sub warn at src/gen/p-CORE.setting:672 | |||
which line is: multi sub warn(*@msg) is hidden_from_backtrace { | |||
moritz | lizmat: yes, I noticed, and I tried several things to fix it. So far without success :( | 10:52 | |
I guess I have to do more forensics :/ | |||
FROGGS | I have noted that too that 'is hidden_from_backtrace' does not seem to work everywhere | 10:54 | |
like it does not work in the v5 guts | |||
moritz | FROGGS: it'll most likely only work on p6 level subs | ||
10:55
LWA left
|
|||
FROGGS | moritz: my Perl5::Terms is perl6-level | 10:58 | |
moritz | huh. | 10:59 | |
FROGGS | only the grammar and actions are nqpish | 11:00 | |
11:02
LWA joined
|
|||
moritz | pro tip: connect your laptop to the power supply once you're in the office. | 11:08 | |
nwc10 | pro tip 2: remember the charger :-) | ||
(no, not me, at least not today) | |||
moritz | at least the battery held from around 8:10H to at least 12:20H | 11:09 | |
including several recompiles of NQP and Rakudo | |||
11:11
pmurias joined
|
|||
lizmat | FROGGS: hidden_from_backtrace is only used in Backtrace.pm, line 104: next if $cand.is-hidden; # hidden is never interesting | 11:15 | |
anything not using "next-interesting-index" will see it | 11:16 | ||
moritz | the default stringification of Backtrace uses it though (iirc) | 11:17 | |
lizmat | indeed | ||
11:22
rurban joined,
japhb joined
11:23
pmurias left
11:38
iSlug joined
11:55
dansamo left
11:57
dansamo joined
12:10
benabik left
12:35
kaleem left
12:54
flussence joined
13:14
PacoAir joined
13:15
denisboyun joined
|
|||
jnthn | afternoon, #perl6 | 13:21 | |
moritz | \o jnthn | 13:22 | |
FROGGS | hi jnthn | 13:24 | |
jnthn: would be cool if you scroll 4.3 hours up :O) | 13:25 | ||
ohh, something is wrong with my nose O.o | |||
timotimo | it appears to be a dot | ||
FROGGS | yeah, don't wanna appear nosy :o) | 13:26 | |
jnthn | yeah, will backlog in a moment :) | ||
13:37
bluescreen10 joined
|
|||
masak | interesting: fedoraproject.org/wiki/Changes/Pyt...as_Default | 14:01 | |
they're not switching *yet*, AFAICT, but they are discussing switching. | |||
timotimo | by christmas, there'll be Perl6 by default :P | ||
moritz | masak: some people on HN (?) mentioned that Arch Linux and Gentoo (or some other distro) already has python-3 as the default | ||
masak | oh! I didn't know that. | ||
moritz | masak: and since both versions can coexist happily, it's not such a huge deal for the user | 14:02 | |
timotimo | except all the programs that have #/usr/bin/python started exploding | ||
because you can't just use python2 in the shebang, because that only exists on a few distros | |||
moritz | news.ycombinator.com/item?id=6604447 | 14:03 | |
timotimo: ok, that's not nice | |||
masak | timotimo: are they actually switching the executable name? :/ | ||
timotimo | yes, "python" is python3 on archlinux | ||
masak | that seems unusually irresponsible. | ||
tadzik | that's what "python3 by default" means | 14:04 | |
timotimo | yeah, i've been making fun of archlinux users for a long time because of that :P | ||
moritz | well, there were times when 'perl' would have been Perl 1, and those days are past now too | ||
.oO( and in the past they must remain ) |
|||
timotimo | it would be nice if there was something like use v6 for python | ||
tadzik | from __future__ import perl | ||
timotimo | because the hashbang approach doesn't work properly | ||
moritz | tadzik: from __future__ import perl :ver<6> :auth<perl6.org> # :-) | 14:05 | |
masak | tadzik: SyntaxError: future feature perl is not defined | ||
tadzik | so it _is_ a future feature.... | 14:06 | |
sorry: so it __is__ a future feature.... | |||
masak | :P | ||
(python breaks out in a cold sweat, stammers, and goes "look! a penguin!") | 14:07 | ||
14:09
benabik joined
|
|||
masak | r: role Greeting { has $.name; has $.time; method greet { ... } }; class NormalGreeting does Greeting { method greet { "good $.time, $.name" } }; class ConfusedGreeting does Greeting { method greet { "good $.name, $.time" } }; say .new( :name<frettled>, :time<morning> ).greet for NormalGreeting, ConfusedGreeting | 14:10 | |
camelia | rakudo 2ce544: OUTPUT«good morning, frettledgood frettled, morning» | ||
masak | oh, that's even better. | ||
moritz | masak++ # iterating over type objects to instantiate | 14:11 | |
masak | well, that's why they are in value space, so you can treat them as values ;) | 14:13 | |
timotimo | and now do them as lvalues! :) | 14:14 | |
moritz | sure; it's still not very common to seem them used that way | ||
timotimo: you're fired :-) | |||
14:16
sqirrel left
14:25
iSlug left
|
|||
tadzik | :D | 14:25 | |
14:25
iSlug joined
|
|||
tadzik | Int .= but role { } # \o/ | 14:26 | |
timotimo | moritz: is tadzik fired now, too? | ||
tadzik | my class Int is the other int but role { } | ||
timotimo | it surprises me that that would work, tbh | 14:27 | |
moritz | r: Int does role { method blerg { say 'OH NOEZ' } }; Int.blerg; | 14:28 | |
camelia | rakudo 2ce544: OUTPUT«Cannot use 'does' operator with a type object. in sub infix:<does> at src/gen/CORE.setting:16088 in sub infix:<does> at src/gen/CORE.setting:16070 in block at /tmp/3qa388bI5N:1» | ||
moritz | \o/ | ||
r: Int := Int but role { method blerg { say 'OH NOEZ' } }; Int.blerg; | |||
camelia | rakudo 2ce544: OUTPUT«===SORRY!=== Error while compiling /tmp/pyTD915uYQCannot use bind operator with this left-hand sideat /tmp/pyTD915uYQ:1------> role { method blerg { say 'OH NOEZ' } }⏏; Int.blerg; expecting any of: …» | ||
tadzik | OH NOEZ | ||
moritz | of course you can still augment | 14:29 | |
timotimo | so is tadzik fired for the attempt or not fired because it didn't turn out to actually work? | ||
moritz | WE ARE ALL FIRED! | ||
14:30
benabik left
|
|||
masak | well, that takes the pressure off things. | 14:30 | |
14:31
benabik joined
|
|||
tadzik | can someone be fried? | 14:31 | |
moritz | fried and tasty! | 14:32 | |
moritz is just being silly now | |||
timotimo | you're making me hungry again =o | ||
geekosaur is fried but not very tasty... | |||
masak is tasty but not very fried... | 14:33 | ||
14:33
xenoterracide joined
|
|||
geekosaur would like to clarify that this does not involve any illicit or questionable substances, aside from the ones known to collect in his defective sinuses... | 14:36 | ||
masak | well, it's better to have defective sinuses than to have defective cosinuses. | 14:39 | |
or defective tangentses. | |||
14:39
xenoterracide left
14:40
raiph joined
|
|||
timotimo | doctor, doctor, my sinuses seem to have become hyperbolic! | 14:42 | |
jnthn | FROGGS: Nice work on the config stuff...will try it out :) | ||
FROGGS: We do need to be able to call things in the VM... | |||
masak | timotimo: "tanh!" -- "bless you" | ||
jnthn | FROGGS: Like, the thing to register an ext op :) | 14:43 | |
tadzik | masak: for a moment I wondered if that's Klingon | 14:45 | |
14:49
DarthGandalf left
|
|||
masak | tadzik: or Dothraki. | 14:49 | |
FROGGS | jnthn: is there already an ext op registering thingy? | ||
jnthn | yes | 14:50 | |
FROGGS | -> #moarvm | ||
jnthn | MVM_ext_register_extop | 14:51 | |
k | |||
14:51
rindolf joined
14:54
bluescreen10 left
14:56
benabik left
15:03
spider-mario joined
15:07
benabik joined,
DarthGandalf joined
15:09
jnap joined
15:12
jnap1 joined
15:13
jnap left
|
|||
dalek | kudo/config: 6f20b5f | jnthn++ | tools/build/Makefile-Moar.in: One fix needed for Win32 extops build. |
15:14 | |
kudo/unified-moar: 7b98827 | moritz++ | / (13 files): Merge branch 'nom' into unified-moar |
|||
kudo/unified-moar: d0033ea | moritz++ | tools/build/Makefile- (3 files): prepare Makefile-Moar.in for unified build |
|||
moritz | that's a branch off of moar-support, fwiw | ||
jnthn | k | 15:15 | |
japhb__ | GAH! Incorrect line numbers in error messages kill ... time. | 15:18 | |
masak | tell me about it. | ||
FROGGS .oO( don't write incorrect code in the first place ) | 15:19 | ||
masak fondly remembers strangelyconsistent.org/blog/the-ty...rcical-faq | |||
moritz | masak: incorrect line numbers in error messages kill time | ||
masak | moritz: I deserved that one. | 15:23 | |
dalek | kudo/config: ad22d73 | jnthn++ | tools/build/Makefile-Moar.in: More Win32 extops build fixes. |
||
masak | moritz: taking idioms literally kills time, too :) | ||
jnthn | masak: I heard that the problem is that it makes you look at the wrong line, to find the error. | ||
masak | thanks for telling me. | 15:24 | |
now go do something useful :P | 15:25 | ||
15:27
pernatiy joined,
[Sno] left
15:28
daxim_ joined,
daxim left,
FROGGS[mobile] joined
15:30
FROGGS left
15:31
iSlug left
15:33
kaare_ joined
|
|||
dalek | kudo/config: d123601 | jnthn++ | / (2 files): More fixes for Windows build. This seems to unregress stuff. |
15:34 | |
japhb__ | masak: seems he took you literally. | 15:35 | |
masak | japhb__: I should try that more often :P | 15:36 | |
jnthn | I literally did something useful! | ||
masak .oO( "seems he took you, literally" ) | |||
dalek | kudo/config: fc58712 | jnthn++ | tools/build/Makefile-Moar.in: Correct Makefile to not just build extops. |
15:37 | |
15:40
pernatiy left
|
|||
japhb__ | Hmmm, after a few months of greek yogurt, anything else seems ... runny. | 15:41 | |
15:42
zakharyas left
|
|||
timotimo | what's special about greek yogurt? i seem to recall seeing greek yogurt "with honey" in the supermarket | 15:42 | |
arnsholt | It's thicker, mostly | 15:43 | |
But Greek yoghurt and honey is a very tasty combo | |||
masak | ooh, gotta try that. | ||
timotimo | probably a bit like kefir? | 15:44 | |
arnsholt | Honey and berries is awesome too | ||
masak | timotimo: no, kefir is runny. | ||
daxim_ | I chop up onions && parsley || dill, add salt and 花椒 | 15:45 | |
timotimo | hm, to me, kefir was less runny than normal yogurt | ||
masak | daxim_: om nom | ||
timotimo: yeah, but you're talking about the kind you pour into a bowl. | |||
arnsholt | What's the Chinese word at the end? | ||
timotimo | oh, i do? | ||
masak | arnsholt: 花椒 :) | ||
arnsholt | =p | ||
timotimo | i'm glad there's already a pizza in the oven for me, otherwise i would be in trouble now :P | 15:46 | |
15:46
pernatiy joined
|
|||
TimToady | well, the characters mean "flower" and "pepper" | 15:46 | |
masak | GT has it as "pepper" or "peppercorns". | 15:47 | |
TimToady | beats me | ||
arnsholt | Sounds potentially reasonable | 15:48 | |
TimToady | but probably peppercorns, as in "seeds come from a flower" | ||
daxim_ | zh.wikipedia.org/zh-cn/花椒 | ||
dalek | -pb: dceaa31 | (Geoffrey Broadwell)++ | lib/PB/Binary/Reader.pm: Begin building low-level binary PB reader code Only enough to handle the very first example of Google's PB encoding docs, plus a decoder for zigzag-encoded integers. Tests in next commit. |
15:49 | |
-pb: aad9d50 | (Geoffrey Broadwell)++ | t/binary-reader.t: Add tests for first parts of binary PB reader |
|||
daxim_ | the seeds (shiny black balls) are not edible. the prickly spice is in those dried pods | ||
masak | ooh, sichuan pepper. | 15:50 | |
I like how it's not actually that spicy in itself, but it's a kind of force multiplier for other spicy stuff. | |||
TimToady | en.wikipedia.org/wiki/Zanthoxylum | ||
timotimo | japhb__: TDD says you should commit the test cases before the code that implements them! :P | 15:52 | |
TimToady | that's one way to avoid success... | 15:53 | |
jnthn | timotimo: Tests are just one way to drive a design process... :P | ||
timotimo | hm, implementation driven design? :) | 15:54 | |
implementation driven testing :D | |||
TimToady | well, arguably the US ACA website is the test case, now they just have to make it work :) | ||
jnthn | timotimo: Well, no, but sometimes you come up with a design away from the keyboard and are comfortable enough with it to go straight to code to flesh it out :) | 15:56 | |
Thus why the concurrency stuff in Rakudo JVM has no spectests yet... :) | |||
TimToady | s/you/you/ | ||
jnthn | ...what? :P | ||
TimToady | well, you said "you", but you meant you. | 15:57 | |
jnthn | "one" :P | 15:58 | |
But using constructs like, "sometimes one does X" always feels a bit too, well, southerner to me :P | 15:59 | ||
arnsholt | Perhaps even stuffy? | 16:00 | |
I try to avoid that phrasing, even in my academic writings | |||
TimToady | it's okay to say "I" occasionally, if it's true :) | 16:01 | |
16:01
daxim_ left
|
|||
TimToady | ...I claim, as a Cretan... | 16:02 | |
16:04
sqirrel joined
16:06
raiph left
|
|||
dalek | kudo/config: fec3db7 | jnthn++ | src/vm/moar/ops/perl6_ops.c: Try adding ext-op; comment out what won't link. |
16:10 | |
16:10
donaldh left
16:11
xenoterracide joined
16:12
dakkar left
|
|||
dalek | p: 31129a2 | moritz++ | tools/build/install-moar-runner.pl: install nqp-on-moar as nqp-m |
16:12 | |
[Coke] | lizmat: very likely that's the issue, aye. | 16:13 | |
dalek | kudo/unified-moar: 7df2b37 | moritz++ | / (4 files): Munge ConfigureMoar.pl into Configure.pl |
||
moritz | jnthn: in unified-moar, rakudo-on-moarvm builds until Actions.nqp, where it dies with "Method register_extop not found in cache, and late-bound dispatch NYI" | 16:15 | |
arnsholt | Shouldn't that branch be called moar-unified? =) | 16:17 | |
moritz | arnsholt: I'll get CS-linguistics consulting for my next branch before I start it | 16:18 | |
:-) | |||
arnsholt | ^.^ | ||
dalek | kudo/unified-moar: 650f2e7 | moritz++ | tools/build/Makefile- (3 files): [Makefile] moar*JVM makefile unification |
16:19 | |
16:19
TimToady joined
16:22
benabik left
|
|||
moritz | jnthn: shall I merge unified-moar into moar-support? | 16:23 | |
16:27
benabik joined
16:28
FROGGS joined
16:33
odoacre joined
|
|||
FROGGS | jnthn: it seems to work, even when stripping the comment | 16:33 | |
16:36
fhelmberger left
|
|||
FROGGS | but this remains: Bytecode validation error at offset 866, instruction 140: | 16:36 | |
extension op 'p6init' not registere | |||
d | |||
16:37
iSlug joined
16:46
[Sno] joined
|
|||
japhb__ | timotimo: Two answers to your comments about tests first: | 16:47 | |
16:47
sqirrel left
|
|||
timotimo | but i wasn't even being serious! | 16:47 | |
16:48
pernatiy left
|
|||
japhb__ | 1) Published commit history doesn't match private commit history, which itself does not match the actual order I do work. The reality is that I alternate code and tests until I'm satisfied, then I commit, and I build up some number of commits into a group, rebase -i for clean published history, then push. | 16:48 | |
I know you weren't serious, but my answer is. :-) | 16:49 | ||
timotimo | :) | ||
japhb__ | 2) In order to make sure git bisect doesn't find spurious failures, while at the same time not mixing implementation, tests, docs, and so on all in the same commit, my published history will generally be in the order implementation, tests, docs. | 16:50 | |
It's something I'd been subconsciously doing for quite a while, but I more recently decided to be conscious of it, and when I'm waffling about how to commit a ball-of-stuff, decide based on the above rule of thumb. | 16:51 | ||
timotimo | ah, yes, that makes sense | 16:52 | |
arnsholt just understood a Czech word, thanks to jnthn++ | 16:54 | ||
masak | japhb__: interesting. | ||
stevan_ | hey 6ixers | 16:55 | |
can anyone explain what is going on in the second example here: github.com/stevan/p5-mop-redux/issues/126 | |||
arnsholt | There won't be an accessor if you declare your attribute has $!foo | 16:56 | |
So it looks like there's a method called one further up in the hierarchy | 16:57 | ||
FROGGS | and it treats "one" as a junction | ||
ahh, or that | |||
stevan_ | wtf | 16:58 | |
moritz | r: say Any.one | ||
camelia | rakudo 2ce544: OUTPUT«one()» | ||
stevan_ | so it is impossible to generate an accessor for a private attribute? | ||
moritz | yes, there are methods in Any for the junctions (any, all, none, one) | ||
stevan_ | or is that just not what the readonly trait does? | ||
moritz | stevan_: if it has an accessor, it's not private anymore | 16:59 | |
timotimo | readonly doesn't create an accessor. | ||
moritz | read-only in the default | ||
if you want an rw-accessor, write 'has $.two is rw;' | |||
stevan_ | can you do "has $!two is rw"? | ||
moritz | stevan_: doesn't make any sense | ||
r: class A { has $!two is rw } | 17:00 | ||
timotimo | the ! means: "no accessor autogenerated" | ||
camelia | ( no output ) | ||
stevan_ | ok, let me rephrase | ||
moritz | r: class A { has $!two is rw }; say A.new.two | ||
camelia | rakudo 2ce544: OUTPUT«No such method 'two' for invocant of type 'A' in block at /tmp/1ZHVwC0PL6:1» | ||
moritz | ok, it just ignores the 'is rw' | ||
I guess it could also carp at compile time | |||
timotimo | if it should, i think i can implement that :) | ||
moritz | timotimo: +1 | ||
stevan_ | r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two } } | ||
camelia | ( no output ) | ||
stevan_ | but it compliled :) | 17:01 | |
r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two } } say A.new.two | |||
timotimo | need to do some compiling first, though | ||
camelia | rakudo 2ce544: OUTPUT«===SORRY!=== Error while compiling /tmp/Ze9aIWrBDETwo terms in a rowat /tmp/Ze9aIWrBDE:1------> ) { $!two = $x if $x.defined; $!two } } ⏏say A.new.two expecting any of: postfix statement …» | ||
moritz | stevan_: need a ; after the second } | ||
timotimo | oh | ||
running perl Configure.pl in nqp gave me sh: /home/timo/build/rakudo/nqp/install/bin/parrot: No such file or directory | |||
stevan_ | r: class A { has $!two; method two ($x) { $!two = $x if $x.defined; $!two; } }; say A.new.two | ||
camelia | rakudo 2ce544: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method two at /tmp/WNdTP24jy4:1 in block at /tmp/WNdTP24jy4:1» | ||
timotimo | and then it just continued | ||
should i be worried? | |||
stevan_ | ok, anyway | ||
I guess I am confused about what is rw and is readonly actually do | 17:03 | ||
I assumed they created accessors to the attribute regardless of whether it was private or public | |||
timotimo | yes, that assumption is in fact wrong | ||
stevan_ | like C# properites | ||
timotimo: can you clear things up for me then? | 17:04 | ||
timotimo | sure | ||
stevan_ | thanks :) | ||
timotimo | if you write has $.foo, you'll get an accessor generated for you | ||
if you write nothing more, that's a readonly accessor | |||
stevan_ | a lvalue style accessor right? | ||
timotimo | yes | ||
stevan_ | k | ||
timotimo | if you write is rw after the $.foo or after the class, you'll get a read-write accessor (lvalue as well) | ||
stevan_ | k | ||
and is readonly is really just redundant then | 17:05 | ||
since default is readonly | |||
timotimo | yes, that's true | ||
stevan_ | so then, that explains why this doesnt work with private attributes | ||
timotimo | except, i suppose, if your class is "is rw", you can have single attributes "is readonly" | ||
stevan_ | right | ||
that makes sense | |||
timotimo | yes, and the .one thing is just a surprise that was derived from Any | 17:06 | |
stevan_ | so, the reason this doesnt work with private attributes is because you are not really generating an accessor method so much as allowing field access | ||
stevan_ assumes that some kind of optimizer might remove any method call overhead or something | 17:07 | ||
timotimo | i'm not sure what you mean by that. what does "this" refer to in the first sentence? | ||
stevan_ | if it is even there at all | ||
timotimo | there is method call overhead, yes | ||
stevan_ | this == "has $!foo is rw" | ||
17:07
spider-mario left
|
|||
stevan_ | timotimo: but in theory you can optimize it away since it is a lvalue method that looks a lot like direct field access | 17:07 | |
timotimo | yes, but you can not be sure if a given instance has the accessor you're expecting | 17:08 | |
stevan_ | but thats probably digging too deep into stuff I am not really familiar with :) | ||
japhb__ | r: class A { has $!two; method two ($x?) { $!two = $x if $x.defined; $!two; } }; my $a = A.new; say $a.two; $a.two('five'); say $a.two; | ||
camelia | rakudo 2ce544: OUTPUT«(Any)five» | ||
japhb__ | stevan_: You needed $x? ^^ | ||
timotimo | you can mixin a role that overrides your accessor and then you're doing it wrong | ||
stevan_ | japhb__: right, thanks | ||
timotimo: yes, roles and accessors were always something that concerned me with Moose | 17:09 | ||
since in Moose an accessor can be responsible for generating many methods | |||
timotimo | even if you have something like sub foo(MyFancyClass $a) { $a.foo = 10 }; you cannot optimize, because it could be a subclass or something mixin'd or somebody could have been augmenting your classes :( | ||
stevan_ always wanted Moose attributes to generate a mini-role which would be applied to the class | |||
but too much overhead | |||
timotimo | what you can do, though, is generate a specialised version of your sub that gets executed if and only if the $a is nonspecial, and that would be checked at runtime | 17:10 | |
we don't do that yet, but then it's one optimisation that targets accessors and regular methods, because accessors could just be inlined | 17:11 | ||
unfortunately, i don't know how to properly add such a check, otherwise i'd totally be down to try to do this as a QAST transformation :) | |||
japhb__ | AIUI, methods can be optimized, but not all the way to not being method calls anymore. Accessors are just methods. But you *can* directly access the attributes themselves from within the class or the REPR of the class. | ||
timotimo | that's true, every $!foo access is already good, perhaps even optimal. | 17:12 | |
17:13
yoleaux joined,
ChanServ sets mode: +v yoleaux
|
|||
timotimo | welcome back, yoleaux! | 17:13 | |
17:14
Khisanth left
17:15
Khisanth joined
|
|||
japhb__ | masak: Oh, another thing I've started being conscious of is the 50-character first line summary for git commit messages. This one came up as an accident of tooling -- I forgot to set my EDITOR before doing a commit on an office machine, got vim by default, and wondered why part of the first line of my commit was yellow and part not. | 17:16 | |
timotimo | :) | ||
17:17
yoleaux left,
yoleaux joined,
ChanServ sets mode: +v yoleaux
|
|||
japhb__ | I'd heard about the 50-character thing back when I first started using git, but forgot about it not long thereafter as I spent my brain cells learning all the *other* stuff I needed to know about git. But seeing it recently reminded me to give a try at doing so. I'm finding several tools are more useful now, as my summaries no longer get truncated. | 17:17 | |
yoleaux: Is it really you? | 17:18 | ||
.ping | |||
yoleaux | There is no ping command; nor can this be construed as a response. | ||
17:18
sqirrel joined
|
|||
japhb__ | Ahhh, much better .... | 17:18 | |
jnthn | moritz: Sorry, went for a nap... :) Yes, can merge it...I'll pick up any fails after dinner | 17:21 | |
FROGGS: It doesn't work on Windows? Any idea why? | 17:22 | ||
17:22
LWA left
17:23
LWA joined
|
|||
masak | japhb__: yeah, the 50-char limit is challenging but highly useful. | 17:24 | |
17:25
Mouq joined
|
|||
TimToady | it forces one to be succinct and leave out the usual boilerplate | 17:26 | |
clarifications in the documentation of one variant of....oops | |||
japhb__ | There are so *many* variants of oops. | 17:27 | |
TimToady | I know what I mean when I say "oops"; whaddyou mean when you say "oops"? | ||
japhb__ | "Object Oriented Programming Systems", of course! | 17:28 | |
.oO( Acronym is appropriate ) |
|||
jnthn | stevan_: Just to make sure all is clear: the "is readonly" and "is rw" traits on an Attribute meta-object simply set whether the accessor will be rw or not. It's the . vs ! is what controls a has_accessor property on the Attribute meta-object. At class composition time (closing curly) we compose all the attributes, at which point an accessor method is added to the method table of the class. | 17:29 | |
stevan_: And the rw property on Attribute - settable through the trait - controls the kind of accessor that is genreated. | |||
japhb__ | ... assuming there wasn't a method of that name already. | ||
jnthn | stevan_: If you don't generate an accessor then those traits still set things on Attribute. It's just ultimately useless to have done so... :) | 17:30 | |
17:30
kurahaupo joined
|
|||
jnthn | japhb__: Correct, modulo that. | 17:30 | |
And also there's: | |||
r: class A { has $.x; has @.x; } | |||
camelia | rakudo 2ce544: OUTPUT«===SORRY!===Two or more attributes declared that both want an accessor method 'x'» | ||
jnthn | Which we put in after somebody confuzzled themselves. :) | 17:31 | |
japhb__ | heh | ||
CDD = Confusion Driven Development | |||
.oO( This is the point at which I normally expect TimToady to comment that's his normal style ;-) ) |
17:32 | ||
TimToady | I guess the actual quote is: "I know what I did when I say 'oops'; what did you do when you said 'oops'?" | ||
TimToady was confused... | |||
(Bill Cosby, if you're wondering, or even if you're not.) | 17:33 | ||
timotimo | rakudo just swapdeath'd my computer :( | 17:34 | |
17:35
iSlug left
|
|||
japhb__ | The usual solution to that is to swapoff and let it get killed. | 17:35 | |
These days swap ain't what it used to be. | |||
stevan_ | jnthn: thanks for the clarification | ||
japhb__ | .oO( Just how many orders of magnitude slower do you want your program to run before you consider it "no longer running"? ) |
17:36 | |
17:36
Rotwang joined
17:39
sqirrel left
|
|||
benabik | The cool people use compressed memory instead of swap. ;-) | 17:42 | |
timotimo | japhb__: swapoff is only ever useful if you can reach a terminal in time | 17:43 | |
also, yeah, i'd like to try compressed memory. how do i set that up? do i need a restart or something? | 17:44 | ||
japhb__ | I'm reminded of my single favorite FreeBSD feature from back in the day -- reserving a few percent of system resources for whoever sat at console. Saved our butts multiple times when someone hozed up the department dev server. | ||
timotimo | oh, that's nice | 17:45 | |
you can get the same behavior with the cgroups thing, IIRC | |||
dalek | Heuristic branch merge: pushed 45 commits to rakudo/moar-support by moritz | 17:48 | |
timotimo | jnthn: +1 on compile-time error for "has $!foo is rw" and "has $!foo is ro"? | ||
moritz | fwiw I find swapoff very useful. I simply let my desktop and laptop machines not use any swap whatsoever | 17:50 | |
if the memory consumption is 100%, something's wrong, and I want the processes to die fast instead of swapping for half and hour | |||
diakopter | * too | ||
timotimo | yes, i've removed swap from my fstab now | 17:51 | |
jnthn | timotimo: For some reason, warning feels more natural to me here. "Useless use of ..." style | 17:55 | |
17:56
kurahaupo left
|
|||
arnsholt | I'm starting to see why NQP's grammars have different arglists for <subrule($args)> and <subrule: $args> | 17:57 | |
lue | Hello world o/ | ||
yoleaux | 22 Oct 2013 06:49Z <jnthn> lue: I need your github name :) | ||
lue | yoleaux! | 17:58 | |
yoleaux | lue! | ||
nwc10 | .ask yoleaux what year is it? | 17:59 | |
yoleaux | nwc10: Thanks for the message. | ||
timotimo | jnthn: can do. anything i have to do to make it suppressed by # OK or something? | ||
or can i just warn inside the trait_mod for rw and ro? | |||
japhb | I like the yoleaux! greet-back. Very nice. | 18:05 | |
arnsholt | jnthn: Any ideas what's needed to use MAIN's arglist when parsing the args in a <subrule: $args> call? | 18:07 | |
I've tried sort of mimicing what Rakudo does, but it doesn't work | 18:08 | ||
18:11
dansamo left,
sqirrel joined
|
|||
timotimo | jnthn: do you think it's a sensible idea to try a QAST-level transformation of subs/methods that checks if a typed argument is "pure" and then specialises the body of the sub/method based upon that verified assumption? | 18:15 | |
Mouq | .u  | ||
yoleaux | U+2424 SYMBOL FOR NEWLINE [So] () | ||
Mouq | .u NEWLINE | 18:16 | |
yoleaux | U+2424 SYMBOL FOR NEWLINE [So] () | ||
U+2B92 NEWLINE LEFT [So] (⮒) | |||
U+2B93 NEWLINE RIGHT [So] (⮓) | |||
18:16
dansamo joined
|
|||
Mouq | .botsnack | 18:18 | |
yoleaux | :D | ||
diakopter | .botsuicide | ||
jnthn | arnsholt: Do we not override the assertion rule in NQP's regex thing too? | 18:19 | |
arnsholt | Nope | ||
Or, the assertion rule is overriden | 18:20 | ||
But the args case with colon uses the default QRegex::P6Regex::Grammar.arglist | |||
18:20
sqirrel left
|
|||
timotimo | that was straightforward :) | 18:20 | |
arnsholt | Just plonking in <arglist=.LANG('MAIN','arglist'> (which is what we do with parens) doesn't work | 18:21 | |
Possibly because it doesn't know to consider > a terminator? | |||
jnthn | arnsholt: ah...yeah... | ||
I think I remember having to teach Rakudo's grammar somewhere about that. | 18:22 | ||
Yeah, see token terminator:sym<ang> | |||
arnsholt | Yeah. I tried to dup that, but Rakudo's arglist rule is a bit more complex, so it didn't quite take | ||
Not sure why | 18:23 | ||
18:28
rindolf left
|
|||
Mouq | n: use Test; ok 'a , b ,c' ~~ /:s^ <alpha>+ % \, $/, "wut?" | 18:39 | |
camelia | niecza v24-98-g473bd20: OUTPUT«ok 1 - wut?» | ||
Mouq | (From S05-metasyntax/repeat.t) | ||
Isn't this wrong? | |||
18:40
darutoko left
|
|||
Mouq | I mean, pretty sure. It should work for 'a, b, c ' | 18:41 | |
But 'a ,b , c' is <alpha> +% \, | |||
jnthn | arnsholt: No, I can't guess why. Maybe push what you did to a branch. | 18:42 | |
arnsholt: And I can take a peek alter | |||
*later | |||
18:43
SamuraiJack left
|
|||
timotimo | github.com/rakudo/rakudo/pull/218 <- "does this need to be spectested?" | 18:48 | |
dalek | p: 7109d14 | moritz++ | tools/lib/NQP/Configure.pm: import NQP::Configure changes from Rakudo |
18:51 | |
18:51
SamuraiJack joined,
SamuraiJack left
18:52
LWA left,
LWA joined
|
|||
lizmat | timotimo: I would say yes, but warnings atm are sort of borked :-( | 18:55 | |
arnsholt | jnthn: Found it, I think. infixstopper needs to know about it, so that the > doesn't get gobbled as an infix | ||
18:56
LWA left,
LWA joined
|
|||
dalek | kudo/nom: 7378b2a | (Timo Paulssen)++ | src/core/traits.pm: warn on is rw/readonly on private attributes |
18:56 | |
kudo/nom: 4e1c185 | lizmat++ | src/core/traits.pm: Merge pull request #218 from timo/warn_useless_private_attribute_traits warn on is rw/readonly on private attributes |
|||
lizmat | afk again& | 18:57 | |
18:57
xenoterracide left
19:06
pernatiy joined
|
|||
benabik | nqp-j script is built with a prefix including the DESTDIR. | 19:16 | |
That's not so useful. | |||
19:26
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
dalek | Heuristic branch merge: pushed 86 commits to nqp/config by jnthn | 19:27 | |
p/config: bbc47f8 | jnthn++ | src/vm/moar/stage0/ (9 files): Updated MoarVM stage0 for config info. |
19:28 | ||
p: 6437a71 | moritz++ | / (4 files): [Configure] implement --gen-moar |
19:29 | ||
19:29
Rotwang left
|
|||
timotimo | jnthn: irclog.perlgeek.de/perl6/2013-10-24#i_7759786 - very bad idea or just bad idea? | 19:32 | |
jnthn | What do we mean by "pure" here? | 19:34 | |
19:35
dansamo left
|
|||
timotimo | "not derived and having no mixins" | 19:35 | |
pure as in "exactly the thing the signature talks about" | 19:36 | ||
jnthn | How does that help us? | ||
As in, what can we do with that knowledge that we couldn't otherwise? | |||
timotimo | method calls could be inlined | ||
jnthn | oh | ||
I think we may want to leave that to the VM. | 19:37 | ||
timotimo | (i'd probably only get far enough to resolve method calls at compile time, though) | ||
mhm, OK | |||
jnthn | It may even already be happening on JVM. | ||
timotimo | oh. well, that's good then | ||
i have no idea how to verify that assumption | |||
dalek | p: 85b85cf | moritz++ | tools/ (2 files): [Configure] fix double quoting fail |
19:38 | |
jnthn | argh! | ||
dalek | p: 9a1455c | (Tobias Leich)++ | src/vm/moar/ (2 files): wire up and use nqp::backendconfig This is just lacking a fresh stage0 to work. |
||
p: edc5d88 | jnthn++ | / (56 files): Merge branch 'master' into config |
|||
p: bbc47f8 | jnthn++ | src/vm/moar/stage0/ (9 files): Updated MoarVM stage0 for config info. |
|||
p: 031cc32 | jnthn++ | src/vm/moar/ (11 files): Merge branch 'config' |
|||
p: 77f6891 | jnthn++ | / (4 files): Merge branch 'master' of github.com:/perl6/nqp |
|||
p: 29fc96c | jnthn++ | tools/ (2 files): Merge branch 'master' of github.com:/perl6/nqp |
|||
jnthn | Only took 3 attempts to push thanks to moritz++ | 19:39 | |
timotimo | %) | ||
dalek | p: 94b174b | (Arne Skjærholt)++ | src/NQP/ (2 files): Use consistent grammar to parse subrule arguments. This fixes the problem where <subrule(...)> could take any kind of arguments, while <subrule: ...> only accepted a list of strings (and didn't interpolate variables in double-quoted strings). Closes #105. |
19:41 | |
jnthn | arnsholt++ \o/ | ||
arnsholt | Adding --rxtrace helped narrow it down | 19:42 | |
(Massive log, but thankfully only the very last bits were relevant) | |||
I'd like to nail down the term:sym<return> bug as well, but that's for some other night | 19:43 | ||
19:45
Rotwang joined
|
|||
moritz | diakopter: looks like we need to change the infrastructure for building nqp and rakudo on host07 again :-) | 19:47 | |
masak | to detect whether an object is of an exact type (for inlining, etc), you'd generally need some kind of closed-universe assumption, I guess. | ||
as in "it is known that no-one has tampered with this object". | |||
moritz | if you want do it at compile time, yes | 19:48 | |
timotimo | i had hoped it would be enough to do something like a single integer check or something ... | ||
jnthn | Well, I think I'd rather we see how well runtime-inlining those in the VM does | ||
moritz | timotimo: with .WHAT.WHICH maybe | ||
timotimo | burn what witch? | ||
moritz | all of them! | 19:51 | |
jnthn | Gee, this config merge into moar-support ain't fun... | 19:53 | |
timotimo | i'll burn that witch when i've crossed it | ||
masak | timotimo: sure, whatever floats your witch. | 19:54 | |
19:55
lowpor03 joined
|
|||
Mouq | rnp: say '§«¶' ~~ /<:Punctuation>*/ | 19:56 | |
camelia | niecza v24-98-g473bd20: OUTPUT«「§«¶」» | ||
..rakudo 2ce544: OUTPUT«「」» | |||
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) { unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20120717/blib6/pugs/perl5/lib'; eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;}'Pugs::Runtime::Match::HsBridge'"**…» | |||
Mouq | rn: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<:Punctuation>/).say | 19:57 | |
timotimo | afkbbl | ||
camelia | niecza v24-98-g473bd20: OUTPUT«(timeout)» | 19:58 | |
..rakudo 2ce544: OUTPUT«! " # % & ' ( ) * , - . / : ; ? @ [ \ ] _ { } ¡ « · » ¿» | |||
Mouq | rn: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<:Punctuation>/).join.say | ||
camelia | niecza v24-98-g473bd20: OUTPUT«(timeout)» | ||
..rakudo 2ce544: OUTPUT«!"#%&'()*,-./:;?@[\]_{}¡«·»¿» | |||
dalek | kudo/moar-support: 36ce066 | (Tobias Leich)++ | / (3 files): added perl6_ops.c and compile it to dll This pulls in nqp::backendconfig to get build flags to build it. |
19:59 | |
kudo/moar-support: 6f20b5f | jnthn++ | tools/build/Makefile-Moar.in: One fix needed for Win32 extops build. Get moar.dll symbols visible in extops on Win32. This has all the elegance of a manatee, but seems to work. |
|||
19:59
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
arnsholt & | 20:00 | ||
Mouq | r: my $ascii-chars = [~] chr(0)..chr(0xFF); $ascii-chars.comb(/<punct>/).join.say | 20:02 | |
camelia | rakudo 2ce544: OUTPUT«!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ ¡¢£¤¥¦§¨©«¬®¯°±²³´¶·¸¹»¼½¾¿×÷» | ||
jnthn | That's more than just ascii... :) | 20:03 | |
Mouq is just testing the tests | 20:04 | ||
20:19
LlamaRider joined,
k1lldash9 joined
20:23
cognominal left,
cognominal joined
20:32
LlamaRider left
20:36
jnap1 left
20:38
panchiniak joined
20:42
woolfy joined
20:47
benabik left
20:49
jnap joined
20:50
jnap left,
panchiniak left
|
|||
timotimo | perl6 has poor support for codepages! | 20:51 | |
20:53
lowpor03 left,
ajr joined
20:54
denisboyun left,
ajr is now known as Guest85158,
Guest85158 is now known as ajr_
20:57
xenoterracide joined
|
|||
hoelzro saw a timotimo lookalike on the streets today | 21:10 | ||
I could've sworn it was you! | |||
21:14
zwut00 joined,
kaare_ left
|
|||
timotimo | oh | 21:16 | |
21:16
pecastro left
|
|||
timotimo | i'm glad other people decide to look the way i do. that must mean i look good! :P | 21:16 | |
masak | at least two people can't be wrong! | 21:17 | |
timotimo | that's right! | 21:18 | |
hoelzro | ;) | ||
timotimo | but get this: hoelzro isn't the first one to see a timotimo lookalike! and i'm kind of sort of certain that those two timotimo lookalikes are probably not the same person | ||
so it's 3 already! | |||
21:22
Rotwang left
|
|||
tadzik | you looked a bit familiar to me as well... | 21:23 | |
kudo/moar-support: ab490e1 | jnthn++ | src/vm/moar/ops/perl6_ops.c: Uncomment extop registration of p6init. Builds on Win32 now. Hopefully it still builds elsewhere too. |
|||
p: ad5b106 | jnthn++ | src/NQP/ (2 files): Support --vmlibs on MoarVM. |
21:29 | ||
japhb | Awww, don't be so harsh on manatees! | ||
diakopter | I thought my manatee was pretty elegant.. | ||
jnthn | Last time I showed a photo of one to somebody, they asked if I was showing them the head or the butt :P | 21:36 | |
diakopter | is that a manatee in your pocket or are you just happy to see me | ||
dalek | kudo/moar-support: 4f6d59a | jnthn++ | src/vm/moar/ops/perl6_ops.c: Make sure to export extops init symbol. |
21:39 | |
kudo/moar-support: 0738b78 | jnthn++ | tools/build/Makefile-Moar.in: Add --vmlibs for compiling BOOTSTRAP. Gets us further into handling the huge BEGIN block. |
|||
21:40
denis_boyun joined
21:41
PacoAir left
|
|||
jnthn | Cannot iterate this | 21:42 | |
add_parent | |||
...that's a curious failure mode... | |||
diakopter | sounds like blanked object | 21:43 | |
jnthn | Curious if anybody else can reproduce | 21:47 | |
Note that if you do so on Windows, it certainly needs a --shared in the MoarVM Configure | 21:48 | ||
Mouq | Heh. | 21:56 | |
r: /<.-[ab]>/ | |||
camelia | ( no output ) | ||
Mouq | r: say 'd' ~~ /<.-[ab]>/ | ||
camelia | rakudo 2ce544: OUTPUT«「d」» | ||
Mouq | std: /<.-[ab]>/ | ||
camelia | std 082981d: OUTPUT«===SORRY!===Unable to parse metachar at /tmp/2jQfpwSDRQ line 1:------> /⏏<.-[ab]>/Couldn't find final '>'; gave up at /tmp/2jQfpwSDRQ line 1:------> /<.⏏-[ab]>/ expecting any of: ass…» | ||
22:01
pecastro joined
|
|||
japhb__ | Wanted: a way to decode *part* of a Blob to a string as a single without a laborious subbuf copy as an intermediate step. The PB code is going to want to pull lots of big strings using (offset, length) pairs out of a multi-megabyte buffer, and it would be nice to reduce copying to the absolute minimum, since Blobs are immutable. | 22:02 | |
*single operation | |||
22:03
denis_boyun left
|
|||
Mouq | n: say 'zabc def' ~~ m/:s abc def/ # Niecza is wrong here to my knowledge | 22:04 | |
camelia | niecza v24-98-g473bd20: OUTPUT«False» | ||
japhb__ | Right now it has to do a subbuf per PB "length-delimited" field, then another copy for each decoded str (and is there another copy when boxing to Str?). It would be nice to kill at least the subbuf copies, but really anything more than 1 is a waste. | 22:05 | |
TimToady | Mouq: yes, niecza is Not Quite Right there | 22:07 | |
timotimo | niecza, quiet! ... right? | 22:08 | |
diakopter | japhb__: well, if Blobs on Moar end up using the same repr as strings.... o_O that would be transparent once the string trees strings are fixed/re-enabled... o_O | ||
TimToady | :s is not supposed to be "SIGOK" | ||
jnthn | diakopter: They don't 'cus they ain't NFG... :) | 22:09 | |
Blob is a VMArray underneath | |||
Though decode on MoarVM gives the underlying storage directly to the decoder | |||
Without any copying. | |||
So we "just" need a way to convey offsets. | |||
TimToady | have to be careful not to leak synthetic chars to the outside world though | 22:10 | |
diakopter | globals! | ||
jnthn | Maybe .decode('utf-8', $start, $length) | ||
Where the second two are optional | |||
japhb__ | +1 | 22:11 | |
Before anyone asks: I think if you provide an offset that is in the middle of a utf-8 encoding group, that falls directly under DIHWIDT, and the encoder is free to blow up. | 22:12 | ||
22:12
benabik joined
|
|||
japhb__ | (With an error, not a SEGV, of course.) | 22:12 | |
timotimo | hm. had we already figured out why canonpath was so slow btw? or rather why s/.../.../ is so slow? (or rather s{...} = ... in this case) | 22:13 | |
japhb__ | timotimo: Not to my knowledge. I only have tuits to battle one deep problem a week, and I already spent it for two weeks on "Why does NFS hate Panda?", plus finding out that it *was* canonpath and s{}= that were the actual performance problem. :-) | 22:14 | |
timotimo | yes yes | 22:15 | |
did you see the huge performance difference between dir("/foo/bar") and dir("/foo/bar/")? | |||
(not sure if it was as huge before i added the "fastpath") | 22:16 | ||
Mouq | nqp: say("NULL --> ",nqp::codepointfromname("NULL")) | ||
japhb__ | Hmm, I seem to recall something in my profiling/benchmarking that pointed that way, but I didn't chase it further than canonpath and its contents. | ||
camelia | nqp-jvm, nqp-parrot: OUTPUT«NULL --> 0» | ||
..nqp-moarvm: OUTPUT«(signal SEGV)» | |||
japhb__ | Yeah, I did all my measurements before you created the fastpath | ||
timotimo | ./perl6 -e 'dir("/etc")' 0,90s user 0,29s system 99% cpu 1,200 total | 22:17 | |
./perl6 -e 'dir("/etc/")' 3,27s user 0,36s system 99% cpu 3,659 total | |||
japhb__ | That does seem suspiciously close to your fastpath performance boost. | 22:18 | |
timotimo | may be. let me recompile | ||
japhb__ | Also, is there any op that can convert between num32<->int32 and num64<->int64 *by reinterpreting the bits*, as you could do with a C union? | 22:22 | |
timotimo | oof :( | 22:23 | |
japhb__ | .oO( The other advantage of this PB work is that I'm going to find use cases that point to missing bits of packed/native data handling. ) |
22:24 | |
timotimo | it turns out my fastpath optimisation makes the fast case slower and doesn't seem to change the slow case | ||
japhb__ | ?!? | ||
timotimo | no, that's not true. it doesn't change either | ||
so the check for "already canonicalized!" is super fast, but so is not doing any of the substitutions | 22:25 | ||
japhb__ | Ah, so matchfails are fast here? | ||
timotimo | it seems so, yes. | ||
jnthn | japhb__: In theory, pack/unpack... | ||
japhb__ | jnthn: Already checked. They conspicously don't handle nums. :) | 22:26 | |
jnthn | japhb__: In practice, I know they're only partially implemented. | ||
ah, ok. | |||
japhb__ | Basically, when reading a message, I see a string of 'tag + wire_type => data' pairs, where the wire_type indicates length of the data (or says to pull one more number from the buffer, which has the data length). Once I've got a some subbuf of bytes, I then need to be able to interpret those bytes as in the table at developers.google.com/protocol-buf...#structure | 22:29 | |
"Here's 64 bits. Waddya want it to be?" | |||
s/got a some/got a/ | 22:30 | ||
jnthn | japhb__: Can you write me a gist of the pack/unpack directives you'd most like? | 22:31 | |
japhb__: I can take a look at adding them. | |||
japhb__ | Thank you! | 22:32 | |
jnthn | Not got much in the way of $dayjob for a week and a bit now :) | ||
japhb__ | Yes, I can do that, but it may be delayed a bit because my kids are visiting the campus for a kids' Halloween thing here. | ||
Ooh, nice. | 22:33 | ||
jnthn | I won't get to it tonight, anyway | ||
But tomorrow maybe :) | |||
japhb__ | fairy nuff. | ||
timotimo | it seems like a lot of time is actually spent in the setelems call in ListIter | ||
jnthn | That's another thing I should look at... :) | ||
timotimo | the 100_000 elems thing? | 22:34 | |
jnthn | yeah. | ||
timotimo | mhm | ||
22:35
BenGoldberg joined
|
|||
timotimo | remember that 3.7 seconds it spent doing the dir thing? | 22:36 | |
if i turn down the initial value to 1_000 instead of 100_000 it only takes 2.8 seconds | |||
so, perhaps the substitution operation has a for in it that's eager and creates huge lists or something ... | 22:38 | ||
TimToady | can't a subblob just be a reference into the original blob without copying? | ||
jnthn | Not easily at the moment. | 22:39 | |
A Blob is a fairly low-level native array at the moment. | |||
timotimo | how hard could a copy-on-write be ... | ||
jnthn | timotimo: You never write a blob... :) | 22:40 | |
timotimo | that makes it even easier :) | ||
jnthn | I think we can come up with something though | ||
Hm, I wonder about a VMArrayView REPR... :) | |||
Since type and REPR are independent anyways... :) | |||
timotimo | yeah, that ought to do it | ||
jnthn | It'd still be a Blob and you'd only know if you went .REPR-ing ))) | ||
REPR poly for the win | 22:41 | ||
japhb__ | jnthn: Yeah, I deeply want to be able to look at (a subset of) the low-level array underneath a Blob using different type mapping, because this is basically required for using/implementing modern 3D APIs. | 22:42 | |
jnthn | japhb__: *nod* | ||
TimToady | poly want a repr, awk! | ||
jnthn | japhb__: Yeah, we need to do better at this stuff. :) | ||
japhb__ | :-) | ||
timotimo | oh, OperlnGL6 | ||
japhb__ | You laugh. I've done the crazy before. | 22:43 | |
"Oh I know, I'll make an OpenGL binding for PIR!" | |||
TimToady | (timeout)Now you have 1,000,000,000,0... | 22:52 | |
lue | .oO(Null PMC upon attempt to access $parrotRestingAnimation) |
22:55 | |
23:11
dmol left
23:12
jnap joined
23:14
dmol joined
23:16
obra joined
23:19
zwut00 left
23:20
ajr_ left
23:23
ajr joined,
ajr is now known as Guest42943
23:27
Guest42943 is now known as ajr_
23:31
benabik left
23:37
benabik joined
23:38
jnap left
|
|||
jnthn | 'night o/ | 23:41 | |
23:47
pdurbin joined
|