»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
FordPhoenix perl6: fork while fork 00:11
p6eval niecza v12-2-geb42dfa: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'fork' used at line 1,1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 880 (die @ 2) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1139 (P6.comp_unit @ 32) ␤ at /hom… 00:12
..rakudo 2b3135: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&fork' called (lines 1, 1)␤»
..pugs b927740: OUTPUT«*** Unsafe function 'fork' called under safe mode␤ at /tmp/dmTte77WmZ line 1, column 12 - line 2, column 1␤»
FordPhoenix perl6: `rm -rf /`
p6eval pugs b927740: OUTPUT«*** Unsafe function 'Pugs::Internals::runShellCommand' called under safe mode␤ at /tmp/3RmdQHlQRd line 1, column 1 - line 2, column 1␤»
..niecza v12-2-geb42dfa: OUTPUT«===SORRY!===␤␤Bogus statement at /tmp/ZYi4tyWl2H line 1:␤------> <BOL>⏏`rm -rf /`␤␤Parse failed␤␤»
..rakudo 2b3135: OUTPUT«===SORRY!===␤Confused at line 1, near "`rm -rf /`"␤»
diakopter FordPhoenix: please stop :/
FordPhoenix my frand told me 2 sry 00:13
FordPhoenix say hi 2 omgle vido chat =]!! 00:14
sorear Could you try correct spelling and grammar? I can't understand you. 00:15
tadzik <obligatory "what if your friend told you to smack your head with a hammer"> 00:16
FordPhoenix i rpbly wuld
it sound rly fun
b r b smaking hed with hamrr
i showing it 2 my frand on omgle [= 00:17
diakopter I assume you mean the anonymous video chat site omegle 00:18
FordPhoenix ya
tadzik omg
;)
FordPhoenix [O]h [M]y [G]öÐ 00:19
jnthn .u öÐ
phenny U+00F6 LATIN SMALL LETTER O WITH DIAERESIS (ö)
U+00D0 LATIN CAPITAL LETTER ETH (Ð)
FordPhoenix ⓗⓐⓗⓐⓗⓐⓗⓐⓗⓐⓗⓐ 00:20
diakopter I tire of you
FordPhoenix diakopter: ¯¯¯º [£]àuGhz [O]u+ [L]oÙÐ º¯¯¯ 00:22
jnthn aol. 00:23
sorear FordPhoenix: That kind of behavior is not welcome here. 00:25
jnthn 'night, #perl6 00:30
cotto 'night 00:31
shinobicl_ hi.... i am running a test on a module i'm doing... but something weird happens. My test ends with a segmentation fault at the 3rd test. But, when i add a 'say "1"' to the most called function, it fails but this time at the 89th test... 02:31
s/it fails/ends with a segmentation fault/ 02:32
colomon shinobicl_: what compiler? 02:41
shinobicl_ i compiled rakudo just yesterday 02:42
perl6 -v does not seem to work
so i will say that is the latest version 02:43
colomon try perl6 --version 02:44
shinobicl_ "This is perl6 version 2011.11-65-ga8dfd47 built on parrot 3.10.0 revision RELEASE_3_10_0-30-ga8cb7da"
colomon okays, that's real recent. 02:45
it's a literal segmentation fault?
shinobicl_ yes, it's literally a "segmentation fault" 02:46
i'll try to upload my code to github.... please give me a few minutes 02:47
colomon no worries.
shinobicl_ there is the .t file 02:57
github.com/shinobi/TaskScheduler/b...Calendar.t
this is the module
github.com/shinobi/TaskScheduler/b...alendar.pm
im uploading the "calendar" files used for testing 02:58
colomon okay, I've cloned the github repo 03:00
shinobicl_ github.com/shinobi/TaskScheduler/t...ster/t/res 03:02
shinobicl_ on WorkdayCalendar.pm, look for the lines 'say "step 1"' and 'say "step 2"'. If you remove them, the test dies much earlier 03:04
colomon works with ufo? 03:04
shinobicl_ ehmmm.. "ufo"? 03:05
colomon standard makefile generator
shinobicl_ no, not yet 03:06
i started from scratch many months ago. I had stopped because my VPS didn't have enough memoty to compile newer versions of rakudo.. until yesterday when i upgraded it to 1GB of RAM :) 03:07
colomon apparently you don't need it with your test files anyway. :) 03:08
okay, t/WorkdayCalendar.t actually runs without crashing for me 03:09
shinobicl_ and if you remove "say "step 1"' and 'say "step 2"' ???? 03:10
colomon trying... 03:11
Bus error, yup
shinobicl_ mmm sorry... "bus error"? what does that mean? 03:12
sorear segmentation fault and bus error are two possible errors from bad pointer use 03:13
there are others
the set of possible errors depends on CPU; when using a portable OS, some information is sometimes lost 03:14
colomon yeah, it's a form of a seg fault on a mac.
sorear Unix only has SIGBUS and SIGSEGV, so only two kinds of memory error can be reported
shinobicl_ i'm using a OpenVZ virtual machine... Debian i386
sorry.. i686 03:15
sorear Windows can report more kinds of errors since it was designed to work with the x86
general protection faults, unresolved page faults, stack faults, etc all map to SIGSEGV on Linux/i386 but are different error codes on Windows 03:16
I don'
colomon shinobicl_: looks like you've definitely got a legit nom bug
sorear I don't think Linux/i386 uses SIGBUS at all
Linux/ppc uses SIGBUS for unaligned memory access exceptions
shinobicl_ oh.. well, i'll keep those "say" too
also, i got another issue, on WorkdayCalendar.t 03:17
give a minute please
sorear traditionally, SIGSEGV comes from hardware memory protection, while SIGBUS is signalled by hardware faults
colomon shinobicl_: sure, though I'm trying to see if I can get more info on your seg fault first. ;)
sorear e.g. many old mc68k systems will signal the BERR# pin if you try to access a physical address which no device answers to 03:21
shinobicl_ no problem :) anyway, i think it might be the same issue.
sorear I conjecture that SIGSEGV and SIGBUS were introduced during the period of Unix history when it mostly ran on mc68k systems
colomon phenny: tell jnthn gist.github.com/1413232 summarizes how I duplicated shinobicl_'s seg fault, and the backtrace from the crash point. Let me know if there is anything else I can do to help track it down. 03:22
phenny colomon: I'll pass that on when jnthn is around.
colomon okay, second problem? :) 03:23
shinobicl_ int the test file.... commenting or uncommenting the lien with "diag "-----------------";" also seems to "change" the point where the test segfaults 03:24
colomon shinobicl_: I get the same error either way. 03:27
shinobicl_ mmmm 03:30
colomon anyway, hopefully the backtrace will be a good start for jnthn++ to figure out what is going wrong. 03:31
shinobicl_ look for "my $test_list ="
the followwin text uses single quotes
changing it to double quotes also changes the behavior
colomon got it
again the same. 03:32
shinobicl_ oh well... maybe it's an issue in my VPS
colomon Sure looks like some sort of memory error. Changing the code changes when it happens, that's all. 03:33
I ran into a couple of garbage collection errors yesterday.
I suspect nom is slightly less stable than we would really like it to be at the moment.
shinobicl_ thank you very much for your help, colomon
colomon you're welcome. thank you for stressing rakudo, it's a great way to help find where the compiler still needs work 03:34
shinobicl_ oh, no problem.. i'll stress it a lot, specially in the part of overloaded operators :) 03:35
colomon \o/
afk # bedtime
shinobicl_ ok, good night, and thanks again! 03:36
[Coke] does t/spec/S03-operators/overflow.t require a bigint lib? 03:46
moritz [Coke]: erm, rakudo has a bigint lib, bundled with nqp :-) 06:34
dalek kudo/nom: 6006bc7 | moritz++ | src/core/IO/Socket/INET.pm:
fix get() in Socket::INET to chomp the right delimiter
06:35
Woodi moritz: if I use: get-recv-get sequence then second get see flushed socket. not checked Perl5 behaviour on that yet but it at least unconvenient... 06:46
*is... 06:47
moritz what does "see flushed socket" means?
Woodi eg: connect-port-80; $s.put("GET \ ...); $s.get; $s.recv(10); $s.get(); 06:49
second get blocks
moritz all requests block, we don't have non-blocking IO yet.
Woodi but it shouldnt't 06:50
moritz what do you mean by "blocks"?
Woodi just recv read everything, and return 10 bytes as sked.
I have example somewhere, will post later 06:51
moritz Woodi: if you only want to read 10 bytes, use .read instead of .recv 06:52
Woodi hmm :) missed that command somehow .. 06:53
will test
moritz not sure if it's specced
masak 挨拶, #perl6! 08:12
moritz \o masak 08:17
masak goal for the day: blog about progress so far with macros. maybe prepare a blog post for later for perl6advent. 08:22
moritz moritz.faui2k3.org/tmp/03-binary-io-buf.pod early draft of the advent post for day 3 09:06
it kinda misses a good end 09:07
masak s/has been solved/has been addressed/ ;) 09:13
also, to my non-native ear "to and fro" indicates an osciallating motion, like weed in the wind. 09:14
"back and forth" is probably what you wanted.
moritz thanks
masak funnily enough, your server delivers that URL as latin-1 (I think), but I see from the mojikabke that it's really UTF-8. 09:16
moritz Content-Type: text/plain
no latin-1, that's your browser's interpretation :-) 09:17
masak could be.
yes, it said it had chosen latin-1. I set it to utf-8, and now I see the møþ :)
snarkyboojum also maybe /do not provide the same level of Unicode support yet as Perl 5 does/do not yet provide the same level of Unicode support as Perl 5/
masak hm, ss/byte values of which/byte values from which/ 09:18
moritz updates 09:19
masak++, snarkyboojum++
masak agree about the ending :) best of luck with it. 09:20
dalek kudo/nom: 7d35796 | moritz++ | src/Perl6/Actions.pm:
special-case 0e<big-exponent> to not perform the 10**<big-exponent> operation
09:22
kudo/nom: 8c70898 | moritz++ | lib/Test.pm:
[Test.pm] restore "bad death" in dies_ok, even though we seem to produce far fewer Null PMC Accesses these days
snarkyboojum moritz: you also don't need the "does" there before the comma, but good stuff - moritz++ :D 09:24
jnthn morning 09:34
phenny jnthn: 03:22Z <colomon> tell jnthn gist.github.com/1413232 summarizes how I duplicated shinobicl_'s seg fault, and the backtrace from the crash point. Let me know if there is anything else I can do to help track it down.
jnthn colomon: Thanks for the backtrace. This roaming segfault seems to be claiming a growing number of victims... 09:35
moritz seems to always happen in Rakudo_cont_decontainerize, but of course the real error might be much earlier 09:40
jnthn moritz: Yeah; we often decontainerize. 09:46
So could just be probability 09:48
But worth a closer look
phenny: ask [Coke] if #105018 was tested on Windows. If so, it's a bug with :args['--x'] option handling in the test utility thing, which I didn't manage to figure out yet... 09:51
phenny jnthn: I'll pass that on when [Coke] is around.
mls morning perl6 09:56
I saw the same segfault when fixing the recursion bug, it seems to be a GC issue
mls i.e. some write barrier is missing 09:56
sorear sleep 09:57
moritz \o mls
mls it crashed because STABLE(var)->container_spec was 1 09:58
(and 1 is not a good pointer ;) ) 09:59
(Actually I had a "find_in_cache" in the backtrace which is missing in moritz' gist. I suspect it was inlined.) 10:01
Timbus
.oO( Image of a giant foam hand with '#1' on it )
10:01
Woodi found lastly OOP critiques that method call (message sending in Smalltalk) is synchronous. and realy they are in current OO languages... Actor model look seems to be proposition to make comunication asynchronous... FlowBasedProgramming is nice technology from 1970s :) and Comega from MS uses chords for concurency - sets of async and sync method calls: research.microsoft.com/en-us/um/cam...whatis.htm 10:04
Woodi and about Flow Based Programming vs OO: www.jpaulmorrison.com/fbp/oops.shtml 10:04
now I kind a understand TimToady silence on concurency topics :) 10:05
mls I wonder how pc_positionals[i].type == BIND_VAL_OBJ can be true, isn't BIND_VAL_OBJ supposed to be only used in type Rakudo_BindVal and not in Pcc_cell? 10:16
mls or is that a workaround for a not defined "PMCCELL" (which happens to have the same value)? 10:18
mls (and shouldn't it only call decontainerize if it is a smo?) 10:21
jnthn mls: The BIND_VAL_OBJ and friends exactly match the flags used by .type 10:22
mls: Which decontainerize are you looking at? I suspect the answer is "we either coerced to a smo or died by this point" 10:23
mls the one in find_in_cache
called from Rakudo_md_dispatch 10:24
jnthn ...context?
oh
mls: Hm, good point.
If a non-smo is getting in there, it won't be good. 10:25
.oO( The answer to "is 6model stable enough for Parrot yet" is probably "please just do it yesterday!" :) )
10:26
mls: Looks like a fix is needed there, anyway. 10:27
moritz jnthn: I still can't stub X::BufAsStr in the setting :( 10:50
and package X { } is gone
nom: my class A::B { ... }; my class A::C { }; my role A::D { }; my class A::B { } 10:51
p6eval nom 8c7089: OUTPUT«===SORRY!===␤The following packages were stubbed but not defined:␤ A::B␤␤»
moritz nom: my class A::B { ... }; my class A::C { }; my class A::B { } 10:52
p6eval nom 8c7089: OUTPUT«===SORRY!===␤The following packages were stubbed but not defined:␤ A::B␤␤»
masak nom: my class A::B { ... }; my class A::B {}
p6eval nom 8c7089: OUTPUT«===SORRY!===␤The following packages were stubbed but not defined:␤ A::B␤␤»
masak nom: my class A { ... }; my class A {}
p6eval nom 8c7089: ( no output )
jnthn nom: class A::B { ... }; class A::B {}
p6eval nom 8c7089: ( no output )
masak so, necessary components: 'my', and '::' 10:53
moritz I should update the ticket
jnthn moritz: In Grammar.pm, inside package_def 10:54
if $*ST.already_declared($*SCOPE, $*OUTERPACKAGE, $outer, @name) {
Worth knowing if that's returning false in this case
masak jnthn: will we at some point see a rename of $*ST to something like $*W ? 10:56
jnthn moritz: try this totally untested patch: gist.github.com/1415817 10:57
masak: Yes.
masak: There's no reason for it not to have already happened other than it's an internal detail and there's many external details that people finding more interesting. :)
masak \o/ 10:58
moritz don't change it, I'll keep writing $*ST for ages :-) 10:59
jnthn: trying... 11:01
moritz jnthn: the patch seems to be working 11:18
jnthn nice :)
moritz I'm going to make concatenation of buffer to a string die
masak good. 11:19
moritz it's been one of my least favorite non-errors in p5 for quite some time
nom: say ~Buf.new()
p6eval nom 8c7089: OUTPUT«Buf<-483643341133299054>␤»
moritz I found this not very useful
jnthn Yes, there's no good way to DWIM in that case, so refusal is better.
moritz nom: say Buf.new() ~ ' foo'
p6eval nom 8c7089: OUTPUT«Buf<-7689102089863646801> foo␤»
moritz that's the current behavior, and not useful at all 11:20
jnthn heh
jnthn yeah, should just not work 11:20
masak why are those arbitrary object IDs so long nowadays? they used to be about half as long.
moritz seems they aren't hex anymore
moritz $ ./perl6 -e 'try { ~Buf.new }; say $!.WHAT' 11:22
X::Buf::AsStr()
\o/
jnthn nice! :) 11:23
moritz now I just need to spectest 11:24
jnthn Yeah, hope the patch holds up well in the spectests. 11:25
Worth adding a spectest for the issue too.
moritz aye
bbkr I have a question about warn(). Spec says that it "Throws a resumable warning exception, which is considered a control exception, and hence is invisible to most normal exception handlers.". Does that mean eval_lives_ok should pass on warn or not? 12:04
flussence I think that means CATCH won't catch it, so if eval_lives_ok only uses that then it'll pass it on 12:05
jnthn nom: { warn "blah"; CATCH { say "I caught something!" } } 12:06
p6eval nom 8c7089: OUTPUT«blah␤»
jnthn nom: { warn "blah"; CONTROL { say "I caught something!" } }
p6eval nom 8c7089: OUTPUT«I caught something!␤blah␤»
bbkr thanks, tagging #77648 as testneeded 12:10
flussence (also I'd like to point out Niecza's Test module has subs to trap any combination of die()/warn()/fail() :) 12:12
moritz we reallly need better exception catching tests, but I found niecza's approach a bit verbose 12:39
we should also consider typed exceptions
dalek kudo/nom: 17a2356 | moritz++ | src/ (3 files):
throw typed exceptions when Buf is misused as a string

Contains a patch by jnthn++ that fixes RT #104760
12:40
masak ooh! I just know of another thing to advent blog about :) 12:44
masak adds it to the list 12:45
dalek : c9e8134 | (Carl Mäsak)++ | misc/perl6advent-2011/topic-brainstorming:
added two new potential topics
12:46
ast: c3f2a9e | moritz++ | S32-io/IO-Socket-INET.t:
unfudge passing tests for rakudo
12:51
ast: f7eced4 | moritz++ | S10-packages/joined-namespaces.t:
RT #104760, stubbing of joined namespaces
moritz nom: try { Buf.new().Str }; say $!.WHAT 13:06
p6eval nom 8c7089: OUTPUT«Mu()␤»
moritz hrmpf 13:07
evalbot rebuild nom 13:09
p6eval OK (started asynchronously)
moritz turned out we still rebuilt rakudo twice an hour, and nom once per hour 13:14
jnthn oh :) 13:16
masak old habits and cronjobs die hard :) 13:19
moritz jnthn: I'm at the point now where I'd like to start throwing typed exceptions from the Actions.pm 13:20
or maybe catch them in &eval, and re-throw as typed
what do you think would be the best approach? 13:21
I could do something like 13:22
moritz $*ST.find_symbol(['X', 'SomeException']).new(...) and handle the case when it can't be found somehow 13:22
jnthn moritz: That probably works, modulo when we're compiling the setting :) 13:32
moritz jnthn: yes, I need to be a bit careful not to produce too sucky errors in that case :-) 13:34
jnthn moritz: Dunno if it's possible to factor it out in some way.
moritz jnthn: it probably is
jnthn moritz: And then handle the "not found" case with an immediate panic or some such. 13:35
Note that find_symbol throws if it cannot find what you ask it for
moritz I think for Actions.pm we need a wrapper that calls find_symbol, and throws a still helpful error message if find_symbol fails 13:36
masak sounds reasonable.
jnthn try_or_be_sorry { ... } # :-) 13:37
moritz jnthn: in the case of $/.CURSOR.panic(...), where is the line number taken from? 13:38
jnthn moritz: CURSOR has a position and the original text
moritz: I think HLL::Compiler.lineof is passed those 13:39
moritz: And it computes the line number based on that
moritz nom: CATCH {}; CATCH {}
p6eval nom 17a235: OUTPUT«===SORRY!===␤only one CATCH block allowed at line 1, near ""␤»
jnthn fwiw, the "near" may want to look at the cursor's from rather than it's pos...maybe. 13:40
*its
moritz we also need a way to access the file name that is currently being compiled
jnthn should already be available
moritz current compile-time errors are missing that
jnthn see Actions.pm
in TOP or comp_unit
It sets a .file annotations 13:41
moritz ah, right
my $file := pir::find_call_lex__ps('$?FILES')
moritz nqp: my $a := try { 1 + 1 }; say($a) 13:49
p6eval nqp: OUTPUT«Can't exec "./nqp": No such file or directory at lib/EvalbotExecuter.pm line 192.␤exec (./nqp /tmp/ny337SVQJV) failed: No such file or directory␤»
moritz eh?
[Coke] moritz: (bundled) ok. wasn't sure if it required extra configurating. I get test failures in that file. 13:52
phenny [Coke]: 09:51Z <jnthn> ask [Coke] if #105018 was tested on Windows. If so, it's a bug with :args['--x'] option handling in the test utility thing, which I didn't manage to figure out yet...
[Coke] (t/spec/S03-operators/overflow.t, since this was from last night.) 13:53
moritz [Coke]: could you please nopaste the test output?
[Coke] jnthn: 105018 was on linux.
moritz: momentito. 13:54
moritz: feather.perl6.nl/~coke/overflow.out 13:56
fails 28/97
moritz [Coke]: thanks. Curious 13:57
[Coke] this with a vanilla build on feather.
moritz two possibilities
either another bigint error
[Coke] phenny: tell jnthn 105018 was on linux (vanilla build on feather)
phenny [Coke]: I'll pass that on when jnthn is around.
moritz or the usage of an int, where a bigint should have been used
[Coke] moritz: and I assume you're not seeing those errors? 13:58
moritz [Coke]: correct
[Coke] k. let me know if I should open a ticket.
I can let you poke around in my rakudo build on feather for a bit, if that helps. 13:59
moritz [Coke]: oh, I know what's going on 14:00
[Coke] moritz: yeeees?
moritz the problem is that literals are polymorphic, and can be Int or int
at least if the literal fits into an int
[Coke] so on feather its fitting into an int and then not changing? 14:01
moritz but that means that <mid-sized-int> * <mid-sized-int> choses the native type int infix:<*>
[Coke] *it's
moritz [Coke]: yes, but the result doesn't fit into an int 14:02
and we don't detect overflow or so
[Coke] seems like we need to be able to say "this is an int because I said so!" and "this is an int because... meh"
(or just always overflow?)
moritz [Coke]: right, we need to be more explicit about int vs. Int 14:03
and that's mostly a spec issue, IMHO
[Coke] you want to open a ticket in the right spot then? ;) 14:04
moritz [Coke]: that would be appreciated, yes :-) 14:05
[Coke] no, I mean, do *you* ?;)
moritz erm
moritz can't read
yes, I should
masak same situation could happen with infix:<+>, or infix:<-> 14:08
moritz yes
[Coke] we require a new parrot since yesterday? 14:09
moritz yes
(for socket stuff)
moritz summary at github.com/perl6/specs/issues/8 14:17
(of the spec issue of int/Int literals) 14:18
[Coke] added a pointer to the spec test failures. 14:21
nom: say 0xDEADBEEF + 0xFACE / 65536.0; 14:24
p6eval nom 17a235: OUTPUT«3735928559.97971␤»
[Coke] nom: say :16<dead_beef.face>
p6eval nom 17a235: OUTPUT«3735928559.97971␤»
[Coke] nom: say ":16<dead_beef.face> 14:25
p6eval nom 17a235: OUTPUT«===SORRY!===␤Confused at line 1, near "say \":16<d"␤»
[Coke] nom: say ":16<dead_beef.face>"
p6eval nom 17a235: OUTPUT«:16<dead_beef.face>␤»
[Coke] nom: say +":16<dead_beef.face>"
p6eval nom 17a235: OUTPUT«Failure.new()␤»
moritz try without the quotes
oh, you did already :-)
[Coke] that's a regression in the same overflow.t file
moritz I think japhb++ will fix this one
[Coke] see S03-operators/overflow.t:260 14:26
[Coke] nom: say +"3" 14:26
p6eval nom 17a235: OUTPUT«3␤»
jnthn moritz: (Int vs int) yes, there's certainly some issues there. 14:27
phenny jnthn: 13:57Z <[Coke]> tell jnthn 105018 was on linux (vanilla build on feather)
jnthn [Coke]: OK, then it's genuine issue then :) 14:28
[Coke] nom: say +":16<dead_beef>" 14:35
p6eval nom 17a235: OUTPUT«3735928559␤»
[Coke] 280 more "nom regression" instances to go. ;) 14:45
jnthn guesses they boil down to a smaller number of underlying issues 14:46
[Coke] we'll find out if we start getting TODOs when you fix the tickets. ;) 14:47
er, TODO passings.
[Coke] see lue? 14:52
aloha, seen lue?
aloha [Coke]: lue was last seen in #perl6 8 days 13 hours ago saying "right now, I don't think so.".
[Coke] phenny: ask lue what he meant by the comment at the top of S32-list/minmax.t 14:53
phenny [Coke]: I'll pass that on when lue is around.
[Coke] nom: say (-10..10).min: { abs $^a <=> abs $^b } 14:55
p6eval nom 17a235: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method min at src/gen/CORE.setting:1232␤ in block <anon> at /tmp/FOX6arzPat:1␤ in <anon> at /tmp/FOX6arzPat:1␤»
[Coke] nom: say (1,4,-2).min: { abs $^a <=> abs $^b } 14:56
p6eval nom 17a235: OUTPUT«1␤»
masak [Coke]: I think I know what he means. 14:59
[Coke]: he expects <5 -3 7 0 1 -9> to produce a list of Int, not a list of Str. 15:00
or at least objects that compare like Ints, not like Strs.
colomon That's right by the spec, isn't it? Some sort of hybrid Int/Str is supposed to be produced, as I recall. 15:01
masak the spec says this should be so: objects of an anonymous subtype of Str with Intish behaviour should be produced. personally, I still feel uneasy about that kind of type hybrids. 15:01
masak but... it's spec. 15:01
so that's what lue is referring to.
he was probably bitten by the numbers sortign stringishly. 15:02
colomon +1 to uneasy
masak people ran into this in szabgab++'s class in Oslo 2009 when they read integers from input and did .sort on them. same thing.
itz where was the perl6 advent calender? 15:03
[Coke] I don't think we should be relying on that in a file that tests other things.
jnthn Me either
[Coke] I think that's a separate test.
jnthn also, we make it easy to say how you want to sort
$foo.sort: *.Numeric
[Coke] nom: (0, NaN).min
p6eval nom 17a235: ( no output )
[Coke] nom: say (0, NaN).min
p6eval nom 17a235: OUTPUT«0␤» 15:04
colomon itz: perl6advent.wordpress.com/
itz ty
jnthn ooh, is it my turn tomorrow? :) 15:05
moritz jnthn: yes :-)
jnthn \o/
[Coke] lue expects NaN to be min'er than 0. I would expect... a Failure? 15:06
Hurm. I guess NaN is pretty much numeric failure.
(hey, why don't we respec NaN to just be Failure in a numeric context?) 15:07
moritz that's kinda the idea
[Coke] nom: say 3+NaN 15:07
p6eval nom 17a235: OUTPUT«NaN␤»
[Coke] niecza: say (0, NaN).min 15:08
p6eval niecza v12-2-geb42dfa: OUTPUT«Unhandled exception: Unable to resolve method min in class Parcel␤ at /tmp/FSiaxuWLtF line 1 (mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2224 (ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2225 (module-CORE @ 58) ␤ at /home/…
[Coke] perl6: say min(0,NaN)
p6eval niecza v12-2-geb42dfa: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'min' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 880 (die @ 2) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1139 (P6.comp_unit @ 32) ␤ at /home/p…
..pugs b927740: OUTPUT«NaN␤»
..rakudo 17a235: OUTPUT«0␤»
dalek ast: 13261a2 | coke++ | S (2 files):
Convert to tickets for Rakudo
15:11
moritz colomon++ # advent post 15:12
colomon [Coke]: yes, it's not that NaN is "min'er", it's that NaN propagates through math operations.
colomon niecza: say 4 min 5 15:13
p6eval niecza v12-2-geb42dfa: OUTPUT«4␤»
colomon niecza: say 4 min NaN 15:14
p6eval niecza v12-2-geb42dfa: OUTPUT«4␤»
masak [Coke]: NaN is already spec'd/behaving as a kind of failure in numeric context, that propagates outwards in numeric calculations. 15:15
moritz perl6: say NaN min -Inf 15:16
p6eval niecza v12-2-geb42dfa: OUTPUT«NaN␤»
..rakudo 17a235: OUTPUT«-Inf␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected "min"␤ expecting "=", operator, ":" or ","␤ at /tmp/GDq2WrMbsX line 1, column 9␤»
tadzik hello #perl6 15:18
jnthn o/ tadzik 15:18
moritz \o tadzik
colomon o/ 15:19
PerlJam What does Niecza have that Rakudo doesn't? I seem to recall you could easily interface with graphics libs and such through CLR
tadzik 2-star programmer is the one who can handle pointers to pointers. I wonder how many stars do you need to handle pointers to function pointers :) 15:19
(syntactically)
PerlJam hasn't played with Niecza enough
colomon PerlJam: also FatRats.
moritz tadzik: can I motivate you to write O(2) posts for the advent calendar?
PerlJam: LTM outside of proto regexes
jnthn tadzik: Just two stars, I guess :)
colomon better error messages
moritz PerlJam: perl6.org/compilers/features answers that question nicely too 15:20
tadzik moritz: naturally, but I can't allocate almost any time during the upcoming week or such 15:20
I can write something about Pod
jnthn Is there anything blocking FatRat in Rakudo other than tuits to do it?
tadzik jnthn: ah, the challenge :)
colomon jnthn: not that I know of 15:21
moritz rakudo has fat rats, but they are just called 'Rat' atm :-)
PerlJam moritz: that's a little lower level than I was thinking.
jnthn tadzik: If you want to practice pointer skills, hack on NCI :)
tadzik warning: incompatible pointer types passing 'void (**)(void *)' to parameter of type 'void *(*)(void *)'
colomon jnthn: I saw there was a rational branch, which I assumed was someone working on it already?
tadzik I even tried shotgun coding and even that didn't help :P
jnthn colomon: Sounds like a rational guess.
moritz yes, that was me
but I didn't get far
PerlJam I was going to write a topic idea for the advent calendar to the tune of "stuff Niecza has that Rakudo doesn't" but the idea is to showcase the other things Perl 6 can do that aren't so ... languagey
moritz compilation hangs, and I don't know why 15:22
colomon moritz: were you actually tackling the Rational role? 15:22
moritz colomon: yes, I tried to implement FatRat as Rational[Int, Int]
and Rat as [Int, UInt128] or so
colomon right 15:23
[Coke] PerlJam: seems like that'd be a great post for sorear. 15:23
PerlJam [Coke]: indeed.
colomon I was hoping mberends might do a Tetris in niecza Advent post... 15:24
moritz phenny: ask mberends if he wants to d a p6advent post on Tetris in niecza
phenny moritz: I'll pass that on when mberends is around.
dalek kudo/ex-from-actions: d62f8f2 | moritz++ | src/Perl6/Actions.pm:
prepare a small helper for throwing an exception from Actions.pm
15:35
kudo/ex-from-actions: f961892 | moritz++ | src/ (2 files):
try to throw the first typed exception from Actions.pm; fails setting compilation
moritz jnthn: this patch makes the compilation fails with 15:36
None of the parametric role variants for 'X::Comp' matched the arguments supplied.
maximum recursion depth exceeded
which is curious, since X::Comp is not parametric 15:37
jnthn er
Well, every role is parametric 15:38
But what it really means is something else went wrong during role compositon.
maximum recursion depth exceeded is bad news.
dalek : 846e321 | duff++ | misc/perl6advent-2011/topic-brainstorming:
Add some more p6advent ideas
15:39
moritz it's really just my role X::Comp { some attributes }; my class X::Signature::Placeholder is X::Base does X::Comp { a method here }
jnthn moritz: It'll be some evil, hard to find bootstrap issue, I'm sure. 15:40
moritz :(
jnthn moritz: And it seems nobody is up for hunting those down besides me.
moritz jnthn: seems like :( 15:41
jnthn: but I kinda thought that role composition in the setting worked
jnthn moritz: it kinda does. :) 15:41
jnthn moritz: Emphasis on "kinda" 15:41
If you want to golf down exactly what it is that causes it to fail, that'd help 15:42
moritz: That is, is it the attributes?
moritz jnthn: is there anything in particular that I should avoid?
moritz ah, that might be it 15:42
jnthn moritz: I'm not sure what it is that's at the bottom of the issue
moritz which would also explain why Rational loops 15:43
jnthn moritz: I dobut it's purely attribute related.
moritz: It *may* be tied up with public attributes in roles in the setting, at a wild guess.
(but if it is, I'm not sure why off hand)
moritz accessors are generated in Attribute.pm
jnthn Yes 15:44
But we must use accessors elsewhere in the setting.
moritz yes, but not in roles, I assume 15:45
jnthn Maybe not
If that's the bug, it'd kinda prevent us doing so ;)
moritz oh! 15:46
I accidentally duplicated role X::Comp
so it might be an ambiguous dispatch that's wrongly reported
sorear good * #perl6
moritz \o sorear 15:47
colomon o/
jnthn o/ sorear
moritz: oh!
moritz nom: role A { }; role A { }; class B does A { }
p6eval nom 17a235: OUTPUT«===SORRY!===␤None of the parametric role variants for 'A' matched the arguments supplied.␤Ambiguous dispatch to multi '_block1382'. Ambiguous candidates had signatures:␤:(Mu)␤:(Mu)␤␤»
moritz ah, maybe it loops while generating the 'Ambiguous candidates' message 15:48
jnthn oh!
that's very possible.
moritz nqp: say(1) 16:06
p6eval nqp: OUTPUT«Can't exec "./nqp": No such file or directory at lib/EvalbotExecuter.pm line 192.␤exec (./nqp /tmp/me8eoIjIdw) failed: No such file or directory␤»
moritz oh, dyncall version switch broke nqp build 16:08
moritz tries after git clean -xdf
TimToady moritz: github.com/perl6/specs/issues/8 is already largely covered by S02:705 and S09:106 16:33
constant folds are just one form of "temporary value"
jnthn TimToady: It's maybe more problematic in the case of 16:35
multi m(Int) { }
multi m(int) { }
m(0x7FFFFFFF) 16:36
well, provided the multis do something :)
Maybe that's DIHWI... though :)
masak no, it seems like a fairly fundamental question.
TimToady the default should not be to recreate the bugs of C
masak .oO( doctor, it hurts when I C ) 16:37
jnthn Which particular bug is this a case of? :)
TimToady so by default, native types are only storage constraints, and intermediate values mustn't lose info
if that means infix:<+>(int,int) must return Int, so be it 16:38
masak ok, that's an easy enough rule.
jnthn er, what?
So
TimToady we aren't trying to reproduce C's bugs
masak I think it has to return Int. 16:39
TimToady the default is to do it right
a pragma can turn on C's bugs if we want speed
jnthn loop (int $i = 1; $i < blah; $i = $i + 1) { ... }
masak but then wouldn't the user need to cast explicitly a lot?
probably what jnthn++ is getting to above... :)
jnthn You're saying that instead of that being allocation-free, it's going to have to make a laod of Int objects just in case?
*load
TimToady that's probably the correct default for code that has not been proven "hot" 16:40
jnthn I agree if you never mention a native type constraint in your code, you probably should never expect native ints.
But once you do...it's clear enough that you're opting in, no? 16:41
TimToady the initial opt-in is for storage, not bugs 16:41
jnthn er, apart from in the case above you're never going to be able to store the result without overflowing anyway... 16:42
0x7FFFFFFF * 0x7FFFFFFF overflowing is clearly wrong. That's certainly a bug.
TimToady well, we can probably optimize your loop if we know the limit
jnthn This is ridiculous. :/ 16:43
jnthn goes back to his $dayjob bits
masak increments the "halting problem implicit mention" counter
TimToady this has been specced for a long time 16:44
and when people say "correctness first", everyone nods their heads
it seems to have suddenly gone out of style :)
masak I'm all for it. :) 16:45
but I'd like to not throw out the performance with the buggy bathwater, too.
s/performance/performance baby/
TimToady profile, then cheat 16:45
masak nodnod 16:46
jnthn I'd assumed that writing native type annotations was the way you said to the compiler "feel free to cheat here"
jnthn I'm not arguing that it should cheat without being given that hint. 16:47
TimToady it can be, in some context that probably should not be the default
jnthn I do think that if I carefully wrote native types on all my variables, then the operators I use on them should not be going creating Int objects in the meantime.
TimToady that's getting into type inference, I think 16:48
which is perhaps the mechanism by which we optimize that loop
but it does indicate we need to think about native/non-native return polymorphism as something that is known at compile time 16:50
jnthn Well, much of the native stuff hangs off "known at compile time"
But I really don't like the idea that (int, int) --> Int 16:51
I'd expect *either* to be doing (Int, Int) --> Int, or (int, int) --> int
masak 'my Int $a = 42; my int $b = $a' # does this typecheck at compile-time?
'my Int $a = 10 ** 10; my int $b = $a' # does this fail at runtime?
jnthn masak: unboxing to native types currently never fails.
masak: Provided the type on the RHS knows how. 16:52
masak ok, good.
TimToady that also is not according to spec
jnthn TimToady: Which bit?
TimToady not checking for overflow on storage to a native type
masak I don't follow. 16:53
either we don't check, or we can't do jnthn's native for loop above.
TimToady if we know the limit of the loop is smaller than maxint, then we've done our check outside the loop 16:55
jnthn If we're going to make it this hard for the compiler to do anything efficient with native types, they're probably a waste of time. 16:56
TimToady there are way too many security holes on the internet that arise from C's cavalier attitude toward overflow
masak right, but the '$i = $i + 1' part tries to store an Int in an int.
TimToady which is why the compiler would need to know how to substitute --> int for --> Int if we do the optimization, my reference to "return polymorphism" above 16:58
TimToady I have no trouble with a pragma that says "use temp :native", but I just don't think it should be the default 16:59
it's possible that my argument has less weight in the 64-bit world than the 32-bit world, but I don't know what percentage of integer overflow attacks depend on the size of the integer 17:02
moritz TimToady: S09:106 sounds rather disturbing to me, from the POV of optimizations
TimToady my gut feel is that most of such attacks don't care that much about 32 vs 64
moritz it means that things like my int $x = ...; $x + $x + $x cannot use 'int' semantics ever 17:03
jnthn TimToady: It just feels like you want another level of configurability, when Int vs int already gave us one.
moritz becaue the intermediate result from the first addition might not fit into an int
jnthn moritz: Exactly.
moritz so, no native operations even with native types. Ugh.
TimToady I never said that
moritz no, the spec says that
TimToady BY DEFAULT 17:04
"in the absence of declarations or explicit casts to the contrary"
masak decommutes
TimToady I include "use native" in declarations
I wouldn't push this quite so hard if it weren't a security issue 17:05
TimToady I love speed too... 17:05
I'd be okay with detecting overflow consistently too; it's silent overflow that is the problem 17:07
maybe it's "no strict :overflow" that we're looking for 17:09
fsergot hi perl6! o/ 17:13
TimToady howdy
tadzik hello fsergot 17:17
moritz hi fsergot. Do you want to write a post for the perl 6 advent calendar? 17:30
Woodi "Native types are primarily intended for declaring compact array storage", can it be just 'compact' and 'native' predeclaration statements ? having Int and int look ugly at least... and all optimizations can be done or not by optimizer 17:41
PerlJam moritz: is that going t be the greeting for everybody until we've filled them all? :)
Woodi two day ago readed review of "Nature of order" by Christoph Alexander and hi sugests that what is beauty that is usulay more functional too. all that flowers beauty is efect of evolution technical specialization 17:44
PerlJam scrolls back to read the int/Int discussion 17:46
Woodi and me thinks that Perl should alway be "higher level" by having at least "membrane" or vm betwen implemented-in language and Perl level code. optimizations can be done by using NCI modules/functions 17:49
Woodi and (last one :) ) me thing that should be perl6 interpreter written in C becouse programming in private intermediate language will/can be more stopper in A.D. 2025 then just plain hacking terribly C code. that happend to Perl5 and becouse it is C ppls still can hack it with one level less of cognitive troubles... and after all C is portable assembler for speed and portability :) 17:56
Woodi out for few mins 17:57
PerlJam Woodi: Are you claiming that hacking Perl 5 is *easy* compared with having a VM? 17:57
moritz PerlJam: yes, I'm trying very hard to fill the slots 18:05
and to attract fresh contributors, of course
PerlJam moritz: sounds like a good advent article ;) 18:06
masak PerlJam: what, an advent article about filling the slots? sounds like a last-ditch filler article to me :P 18:27
PerlJam no, about attracting fresh contributors ... something that would get people fired up 18:28
moritz PerlJam: I tried that (with some success) with the challenges... but it was a lot of work 18:34
dalek kudo/ex-from-actions: dbee3a0 | moritz++ | src/ (2 files):
file name and line need to be Perl 6 values
18:45
jnthn moritz: Did removing the dupe fix the issue from earlier? 18:46
moritz jnthn: yes, thanks 18:49
jnthn moritz: OK, good to know. :)
(sorry if it shoulda been obvious and I missed it...been taking care of $dayjob things :)) 18:50
moritz should have noticed too :-)
now
> eval q[sub f() { $^x }]; say $!.WHAT
(empty line, that is)
jnthn eek 18:51
moritz even nqp::say(pir::typeof__SP($!)) produces an empty line
jnthn o.O 18:52
moritz erm
the eval probably dies
and the REPL catches it 18:53
producing an empty line
jnthn oh :)
moritz and the say() is never executed :-)
jnthn ah yes, because eval doesn't catch exceptions :)
jnthn is still getting used to that
dalek : 45f5498 | duff++ | misc/perl6advent-2011/ (2 files):
claim a day
moritz $ > try { eval q[sub f() { $^x }] }; say $!.WHAT
X::Signature::Placeholder()
\o/
jnthn nice :) 18:54
moritz just... the message is gone :( 18:57
dalek kudo/nom: 46f72c8 | duff++ | src/Perl6/Grammar.pm:
fix typo in error msg
19:10
diakopter flip flip indeed 19:12
masak perl6: say flip flip "flip" 19:20
p6eval pugs b927740: OUTPUT«*** No such subroutine: "&flip"␤ at /tmp/CciSIePpla line 1, column 5 - line 2, column 1␤» 19:21
..rakudo 17a235, niecza v12-2-geb42dfa: OUTPUT«flip␤»
moritz nom: say 1.^isa(X::Comp) 20:15
p6eval nom 46f72c: OUTPUT«0␤»
moritz nom: say 1.^does(X::Comp)
p6eval nom 46f72c: OUTPUT«Bool::False␤»
moritz hrmpf 20:38
I seem to have completely broken error reporting completely in my branch :/ 20:39
Tene moritz: as long as there are no errors, that's okay! 20:43
jnthn 11 files changed, 176 insertions(+), 826 deletions(-) 21:15
...I like those commits.
[Coke] \o/
colomon \o/ 21:17
benabik jnthn: Don't delete that! It's important! (Or maybe not..) 21:28
jnthn benabik: Same functionality, just better factoring. :) 21:32
[Coke] NO, REFACTORS ARE BAD, KITTY! 21:33
jnthn oh, calm down, it's not like I did a rewrite :P 21:34
diakopter what did you not rewrite 21:35
jnthn 6model :)
Tene it's not deleted; it's still in git history. ;) 21:40
[Coke] so if we ever want to move our tickets to github, I hear alester does good work. ;)
alester DAMN YOU COLEDA
benabik :-D
You'll have to move all your tickets from RT to trac first. ;-) 21:41
tadzik oh joy :) 21:42
[Coke] HA! 21:42
that was my gig for parrot. ain't doing that again.
(of course I did it by hand because I'm an idiot.) 21:43
tadzik Showing 11 changed files with 96 additions and 746 deletions
wtf, where did you put that! :D
dalek p: 139fb76 | jnthn++ | src/6model/sixmodelobject.h:
Split attribute and boxed parts of the REPR function table out into sub-tables. Breaks everything, of course.
p: 851deb3 | jnthn++ | src/6model/reprs/ (11 files):
Initial attempt to update representations for the sub-table change. Many bits of copy-paste boilerplate go away.
p: 092915a | jnthn++ | src/6model/repr_registry.c:
Update representation registry to put default not implemented stubs in the sub-tables if they're not initialized.
p: b93593f | jnthn++ | src/pmc/sixmodelobject.pmc:
Update 6model wrapper PMC for REPR changes.
p: c098088 | jnthn++ | src/6model/reprs/ (3 files):
Couple of fixes to things that weren't quite right in the REPR updates.
p: af15c58 | jnthn++ | src/6model/knowhow_bootstrapper.c:
Update to get 6model core to build agian.
21:44
p: 780c4a3 | jnthn++ | src/ops/nqp (3 files):
Fix ops...and we have a working/test-passing NQP build again.
diakopter agh
jnthn diakopter: apologies for commiting stuff. :P
masak try not to do it again :P 21:46
dalek kudo/nom: b9aa5be | jnthn++ | / (6 files):
Bump to latest NQP, and some updates to adapt to REPR changes.
21:48
jnthn ooops, I did it agian
masak \o/
jnthn </britney_voice> 21:48
tadzik I played with your code
got lost in the forks 21:49
jnthn oh save me, save me!
masak but I'm not that invocant
PerlJam That's a nice little cascade ...new nom requires new nqp requires new parrot 21:49
jnthn The fallout of that refactor should be nothing observable. :) 21:50
[Coke] ok, tadzik's were fine, but masak's is GROANable.
masak :P
PerlJam I *liked* masak's
jnthn ...apart from it unblocks me to work on CArray and removes a bunch of copy/paste that has bothered me for ages.
[Coke] PerlJam: that didn't require a new parrot, I don't think.
tadzik \o/ 21:51
PerlJam [Coke]: it did on my box :)
tadzik masak: we should start a band
[Coke] you just need to update more often. ;)
jnthn No, my set didn't, though there was a PARROT_REVISION bump earlier today by moritz++
tadzik or you can join Ąkancyrantia :)
PerlJam [Coke]: clearly.
masak tadzik: Tadeusz and the Britneys
tadzik it's more understandable than Ąkancyrantia, indeed 21:52
[Coke] masak: so why aren't you mäsak on irc?
masak phenny: "Ąkancyrantia"?
phenny masak: Language guessing failed, so try suggesting one!
masak phenny: pl "Ąkancyrantia"? 21:53
phenny masak: The pl to en translation failed, sorry!
tadzik masak: it's a made up word :)
masak oh!
tadzik it means the time interval between the sound of the beer opening and the sound of the bottle cap hitting the floor
jnthn :D
[Coke] also, there has GOT to be an easier way to type ä than alt-0228 :P
masak [Coke]: I used to be less UTF-8-friendly than I am now. :)
benabik tadzik: i.e. the time it takes you to drink it?
tadzik benabik: nah, the time when the cap falls 21:54
benabik tadzik: You have to drink quickly. ;-)
tadzik I guess so :)
jnthn If you tape yourself to the ceiling, you get more time.
Or open it on the moon.
jnthn ponders what pouring a beer would look like in a lower-gravity environment 21:55
tadzik the cap may fly away and confuse astronauts
jnthn: it'd fly horizontally :P Imagine that 21:56
you turn thebottle, and it goes sideways
jnthn Wow. You'd think you'd had too much before you even started. :P 21:57
tadzik :)
benabik I think you've already had too much if you're taping yourself to the ceiling and thinking you're on the moon. ;-) 22:00
[Coke] finally enables the international keyboard input on his windows laptop so he can type mäsak! 22:03
masak \o/
but then it won't highlight here... :)
[Coke] Makes it super hard to type "a now, but that's fine. ;)
you need a better client! ;)
diakopter just have it highlight on sak 22:05
oops I just accidentally reset --hard 22:08
Tene yay reflog 22:10
diakopter too bad I hadn't committed 22:17
benabik git-reset needs a reset.interactive config option (like rm -i) 22:19
masak blog post! \o/ strangelyconsistent.org/blog/macros...-bit-of-d1 22:33
I don't blog often enough nowadays :)
jnthn e 22:41
oops
masak mimes an empty file for jnthn 22:42
Tene masak: no, you don't. 22:43
benabik: you can make your own with an alias
benabik Tene: Yes, but I want it to stop me from using reset --hard. ;-D
Although I suppose I could bash alias git to something else that modifies reset. Blah. Easier to just hack git.git 22:44
masak ok, I'm going on a short two-week leave. not sure I'll be on IRC much. will miss y'all. 22:47
& 22:48
jnthn
.oO( gee, I'm glad it's a short two weeks, not a long two weeks :) )
jnthn grr, this sized type stuff is a little bit tricky :) 22:51
PerlJam masak: When do you guess you'll merge into nom?
masak: in any case, a forward-looking advent post on macros might be nice ;)
benabik PerlJam: Probably not in the next two weeks, since he just said he was going on leave. 22:52
PerlJam indeed. I didn't think it would be soon, just curious when it might be 22:55
jnthn I asked recently if "before the Dec nom relesae" was likely, and the answer was "maybe". But I think for the January release is more likely. 23:02
felher masak: Bye :( 23:10
Tene very tempted to work on masak's macros branch. 23:12
dalek p: 60ed59a | jnthn++ | src/6model/sixmodelobject.h:
First sketch out the indexable representation function table.
23:51
p: e07a169 | jnthn++ | src/6model/repr_registry.c:
Initialize indexable REPR function table for REPRs that don't support it.
p: 0b0638b | jnthn++ | src/6model/reprs/ (11 files):
Allocate ready zeroed out memory for REPR function tables, meaning we're more future-proof, but also can delete a bunch of ... = NULL assignments.
jnthn OK, that's much of my pre-requisites for working on array passing for native call done. Will hack on that tomorrow. :)