MasterDuke timotimo: notice anything obvious in the diff? 00:58
timotimo i didn't notice the diff appeared :S 01:07
sorry
and now i'm in game
i can't see a problem in the diff :\ 01:09
does it still give trouble when you just bindattr_i instead of bindattr_u? 01:10
i.e.: how far does it get?
MasterDuke hm, let me see
exact same error and backtrace 01:14
timotimo oh 01:22
there's more than one buildplan interpreter, isn't there?
01:26 evalable6 joined
MasterDuke oh, yeah, copied my # 99 stuff down to the second one 01:26
timotimo ah
hmm.
MasterDuke building now
timotimo but wait, it's crashing inside create_BUILDPLAN 01:27
not in the interpreter
hm, could $_ refer to something else inside the if $typespec? 01:28
quite unlikely
01:28 mst joined
MasterDuke now dies the way it used to (pre any change i made) 01:36
wait, doesn't die, just gives a negative number 01:37
m: class :: { has uint64 $.foo; }.new( foo => 9223372036854775808 ).foo.say
camelia Cannot unbox 64 bit wide bigint into native integer
in block <unit> at <tmp> line 1
timotimo well, i did tell you to turn bindattr_u into bindattr_i :) 01:38
MasterDuke now i get -9223372036854775808
i changed it back
i may need to start from a blank slate with my moar changes 01:39
but that'll probably be an experiment for tomorrow, tonight is video game or iron fist
samcv iron fist is good 01:40
MasterDuke about half-way through so far, ep 6 or 7
01:48 ilbot3 joined
samcv i watched it all. really good 02:04
time to rubber duck debug this code here. argh
and least i've solved the performance problem. but sometimes it's traversing the strings improperly and it's hard to keep track of in your mind. when you have so many variables and possible ways of traversing the string 02:05
02:43 vendethiel joined 04:10 vendethiel- joined
samcv MasterDuke, how does this sound for a function MVM_string_equal_at_ignore_case_INTERNAL_loop 04:13
it's just an internal loop that ends up getting inlined so i can share the code between eqatic and indexic and also helps the indexic code from getting... way too messy
just ditched what i had done so far and just factored that code out to its own function, so now everything seems good 04:14
04:42 vendethiel joined
Geth MoarVM: samcv++ created pull request #565:
Refactor eqatic and indexic and make Perl 6 :i regex 1.8x faster
04:52
samcv there we go :) done 04:53
05:04 vendethiel- joined 05:18 domidumont joined 05:25 domidumont joined 06:14 brrt joined 06:49 domidumont joined 07:16 brrt joined 07:17 vendethiel joined
Geth MoarVM: 16fc44089f | (Samantha McVey)++ | 2 files
UTF-8 Provide a better error when failing to encode surrogates

Check the general category is "Cs" (Control, Surrogates) and if so show a more useful error message.
07:47
MoarVM: e18b4ce78a | (Samantha McVey)++ | 3 files
Share the exception code between both utf8 and utf8-c8

Have a new function MVM_exception_throw_utf8 so code does not have to be repeated between utf8.c and utf8_c8.c implementations.
In addition add a seperate exception message if the codepoint that is attempted to be encoded is > 0x10FFFF which is the legal limit for UTF8
MoarVM: 79526619f5 | (Samantha McVey)++ | 3 files
Merge pull request #563 from samcv/surrogate

UTF-8 Provide a better error when failing to encode surrogates or out of bounds characters
07:50 zakharyas joined 07:53 geekosaur joined
brrt \o 07:56
samcv o/ brrt 08:20
brrt how do you like hacking moarvm :-) 08:24
samcv it is fun :) 08:25
brrt even though it's mostly in C? C has a bad reputation these days 08:26
samcv C was the first language I learned
so it is all good :) 08:27
brrt oh really?
samcv yea
brrt well, for me, C was the first 'real' language, after BASIC
samcv i think i programmed on the calculators at school in high school but i can't remember anything at all about it
other than that it was really a horrible language 08:28
brrt from a programmers perspective, i agree
from a learners perspective, i disagree
it does very few things, and that makes it pretty easy to learn 08:29
samcv yeah i guess so lol
i think i took a C class in highschool sometime. then didn't think much of it until later. have been in IT since i was 16 (summers). went to college studies chemistry, did not graduate, but afterwords went back into IT doing linux stuff and started programming (again?) 08:30
idk i've used linux forever and knew bash scripts but never considered that 'programming'
so i guess that was my first language I actually learned. and used for more than a few weeks seriously 08:31
i guess i never considered it programming because i was just 'making some task work' or i thought about it as just achieving the goal maybe 08:32
lizmat hmmm... I'm not sure I understand what 84a730f does 08:33
samcv but then started learning C seriously, did stuff with pointers, processing a BMP file with C and resizing it with no non stadard libraries, and did some linked tree pointers and just kept learning i guess
uh it makes a test pass in roast
lizmat it was my impression that overflow / underflow on natives were *not* supposed to throw ?
samcv with int overflow
let me see the roast tests 08:34
yeah it tests that they throw EVAL "my $type \$var = {$maxval+1}" 08:35
not sure what it should do, but there's tests in roast to that effect 08:36
lizmat that there are tests there, doesn't mean they're correct :-) 08:37
samcv or maybe it was this github.com/perl6/roast/blob/master...uint.t#L26
hard to tell it doesn't tell me line numbers ;( 08:38
setting int64 to more than 9223372036854775807 throws and setting int64 to less than -9223372036854775808 throws
^ those are the two tests that now pass
lizmat I wonder what jnthn thinks of this 08:39
lizmat has to be afk for a few hours again
brrt C is one of those language that makes it pretty easy to make fatal mistakes in, and yet, you never blame the language, but only yourself, cheerful that you've learned yet another thing
samcv lizmat, see github.com/MoarVM/MoarVM/pull/557 08:40
for his comments
oh looks like it fixes "Unboxing bigint to native has a problem with detecting "overflow to negative" boundary" 08:41
brrt is surprised by how nice an interface it is 08:42
samcv oh this seems the reason github.com/MoarVM/MoarVM/pull/557/...15db83c3ad
this commit description seems to describe it. i haven't checked out the commit itself. but seems it handles it for negative how it did for positive overflow or something? 08:43
08:46 mtj_ joined 08:48 mtj_ joined 08:57 domidumont joined 09:07 JimmyZ joined 09:18 domidumont1 joined 10:16 geekosaur joined 10:17 ilmari[m] joined 10:53 vendethiel joined 11:00 japhb joined 11:39 brrt left, brrt joined
dogbert17 jnthn: sry if I'm being a nuisance :) did the second gist reveal anything worthy of further pursuit? gist.github.com/dogbert17/3eb15ea5...1d4966f7b2 12:45
13:03 vendethiel- joined 13:24 woolfy joined 15:08 brrt joined
jnthn dogbert17: Sorry, bit of a busy week here 15:12
dogbert17: Yes, that gist looks interesting
brrt okay, so i'm pondering something (while writing a blog post) 15:59
suppose I have:
(if (foo) (bar) (call ā€¦)) - the value of (bar) and the result value of (call) are nicely allocated to the same register
however, in linear code order that looks like: 16:00
test foo; ifz goto alt; %result = compure-bar; goto end; alt: %result = call ā€¦; end; 16:01
dogbert17 jnthn: thx, then I'll ask AlexDaniel to add it to the RT
brrt from the perspecitve of the register allocator, the live range of %result is live in arround the call 16:02
but in the block that does the call, it is a): garbage and b): should not overwrite the result of the call 16:06
i can get away with that because the result of the call (in %rax) is not allocatable
so as long as i insert the copy from %rax to whatever result register we want to use *after* any restores (garbage or not) i'm good 16:07
16:13 brrt joined
brrt i can haz blag 16:14
brrt-to-the-future.blogspot.com/201...stone.html
decommute & 16:15
TimToady samcv: some might consider it slightly more awesome if those encoding errors put out U+hex numbers instead of decimal, since a lot of us autorecognize certain ranges based on the hex values 16:37
well, maybe 0x would be better than U+ there, since by definition they aren't valid unicode :) 16:42
but I do think most of the unicodey community would consider the hex "name" more normative than the decimal... 16:43
and it doesn't seem like the sort of situation where an intentionally obscure "guru meditation number" is warranted. :) 16:48
you can tell how slow my brain is working today, since it took me ten minutes to say that... :)
timotimo a good guru meditates for many minutes before saying a single thing 16:49
16:50 domidumont joined
TimToady thing 16:58
timotimo i wonder why i don't read anything about xchg instructions in that blog post by brrt 17:13
brrt, in the second-to-last paragraph, i'd probably call it "from 'old' to 'young' objects" instead 17:18
17:55 woolfy left
[Coke] hurms github.com/xoreaxeaxeax/movfuscator for brrt 18:29
18:51 vendethiel joined
timotimo i wonder why we don't have a submodule for libatomic_ops 19:17
jnthn Well, after the chaos of last time we switched something to a submodule, then the reason we aren't going to have one is I don't want to subject our downstream users to that again. :P 19:18
timotimo yeah
we could, however, grab latest code from upstream?
jnthn We could do that, yes 19:19
timotimo do we want to properly import history from the libatomic_ops repo? there's not really a need to, i don't think
maybe that way i can get the flood of warnings to stop when i compile moar
samcv good * 19:20
timotimo yo samcv
samcv TimToady, some of the errors do have hex. i will make even the generic ones use hex as well though 19:21
timotimo gist.github.com/timo/d528aaa26562c...fc6dfa06c4 - this isn't b0rked, right? i didn't mess up precedence or something? 19:23
perhaps a set of parenthesis can be removed here
19:24 AlexDaniel joined
samcv TimToady, i think `decimal (hex)` sounds like a good convention, because everywhere else when you print something out it gives you decimal. so showing decimal first makes sense. but also the hex for that info is very good too 19:26
jnthn timotimo: Not sure we need to do that, no 19:29
timotimo the history from libaa_tomi_cops? 19:30
AlexDaniel dogbert17: I wonder, why can't you add it yourself? :)
yoleaux2 16:03Z <dogbert17> AlexDaniel: if possible could you add gist.github.com/dogbert17/3eb15ea5...1d4966f7b2 to RT #131003
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=131003
19:47 brrt joined
Geth MoarVM: 36360063b8 | (Timo Paulssen)++ | src/math/bigintops.c
fix for compilers that don't have sizeof(void *)

i saw this explode on an appveyor build somewhere
20:01
samcv jnthn, did you look at my PR for the case insensitive string search? 20:02
jnthn samcv: Yeah, but I'm so tired I couldn't think clearly enough to review it today :( 20:03
Will look tomorrow, when I'm rested 20:04
timotimo oh, we don't have an appveyor set up for moarvm? 20:07
src/strings/nfg.h:84:11: note: expected ā€˜MVMGrapheme32 ** {aka int **}ā€™ but argument is of type ā€˜const MVMCodepoint ** {aka const int **}ā€™ 20:10
MVMuint32 MVM_nfg_get_case_change(MVMThreadContext *tc, MVMGrapheme32 codepoint, MVMint32 case_, MVMGrapheme32 **result);
is this something we have changed recently?
samcv yeah timotimo i have it fixed in my patch 20:16
the PR
so don't touch that. my PR fixes that warning
timotimo OK! 20:17
src/strings/normalize.c:492:25: warning: '&&' within '||' 20:20
(twice)
do you fix that, too? :)
20:21 mst joined
TimToady hates on compilers that force superstitious parens... 20:22
timotimo :)
TimToady everyone should just to pronounce it right, and then it's obvious: "This 'n That OOOOOORRRR the Other Thing" 20:25
*just learn
TimToady should just to type right... 20:26
timotimo "to be OOOOOOORRRRRRRRR not to be" 20:27
TimToady
.oO(that is the kvetching)
20:28
samcv lol timotimo
did not fix that
which compilier is this?
timotimo clang 20:29
you see it on travis where there's apples
samcv let me do clang
i think i usually do clang
don't see that for clang. will look at TVS 20:30
timotimo anyway, i should be able to build GTK::Simple on appveyor now 20:31
i find it a little annoying that travis-ci builds all start with 2 minutes of downloading strawberry perl 20:32
why don't they have like a caching proxy in there or something?
samcv you mean appveyor? 20:33
or travis. or both
timotimo appveyor 20:35
sorry
AlexDaniel wonders how to pronounce (ā€¦ and ā€¦ || ā€¦ and ā€¦) and whether it should include swear words 20:54
samcv heh AlexDaniel 20:57
21:07 zakharyas joined
Geth MoarVM: 285b62a0fa | (Samantha McVey)++ | src/strings/utf8.c
Use both hex and decimal for UTF8 encoding error messages

As suggested by @TimToady
21:21
samcv checks the precedence rules for C 21:22
Geth MoarVM: 7de16be02b | (Samantha McVey)++ | 4 files
Add parentheses various places to suppress compiler warnings
21:34
samcv just to double check before blindly trusting what the compiler tells me :P
Geth MoarVM: 782dedc229 | (Samantha McVey)++ | .travis.yml
Add uname -a to Travis CI script so it can show up in build logs
21:46
samcv timotimo, how to get frame.c to print out messages 21:51
going to fix all of our compile errors
but i need to know how to test the fprintf's there 21:52
something called dlog
ok well i tested on another file. seems it worked. kk. still curious, but not as important anymore i guess 21:58
Geth MoarVM: 634a6434ae | (Samantha McVey)++ | .travis.yml
Try and get Travis working again. Somehow `uname -a` failed
22:05
timotimo i don't know what you mean by that!
oh
samcv odd. i get uname ā€“a
uname: extra operand `ā€“a'
timotimo the dlog is the dynamic variable cache log 22:06
samcv something in frame.c with fprintf's. i tested the same format in another file using PRIu64 and made sure it worked
ah ok timotimo
cause sometimes i've messed up the PRI things and it'll just show up as a string
uname: extra operand `ā€“-help' 22:07
Try `uname --help' for more information.
:O
travis sucks 22:08
geekosaur `ā€“-
those look different here
samcv --help
i put the ` in myself sorry
travisci line says: - uname ā€“-help
geekosaur u: ā€“
unicodable6 geekosaur, U+2013 EN DASH [Pd] (ā€“)
samcv wow. i must have hit compose key on accident 22:09
geekosaur the ` was a paste-o
this font distinguishes hyphen, en dash, and em dash pretty well :)
timotimo maybe travis fakes out uname?
Geth MoarVM: f9b5a67950 | (Samantha McVey)++ | .travis.yml
Really fix travis. Accidentally had an n-dash where a normal dash should be
22:10
samcv on closer look i could see it in my code editor
ā€“ā€”ā€•āˆ’
i have n-dash, M-dash, minus sign, and horizontal bar all on compose
22:11 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Try and get Travis working again. Somehow `uname -a` failed' 22:11
travis-ci.org/MoarVM/MoarVM/builds/216127363 github.com/MoarVM/MoarVM/compare/7...4a6434ae27
22:11 travis-ci left
samcv ok everything should be fine now on latest push 22:12
MasterDuke did anybody here see that post in the Perl 6 facebook group about MoarVM and an FPGA? 22:18
Geth MoarVM: samcv++ created pull request #567:
Use PRIu64 in fprintf's to fix compiler warning RE incorrect types
22:20
MasterDuke "I know nothing about the MoarVM instruction set (yet), but I own an Altera Cyclone IV FPGA and a decent amount of curiosity. How plausible would it be to use Verilog / VHDL to make a Moar physical machine? Would I need to write a gcc target for Moar, or is that a separate issue? If I did make a Moar physical machine (and bearing in mind the Cyclone IV is limited to 200MHz), would that spur anyone else to develop a Moar target fo
samcv is that... possible?
MasterDuke beats me 22:21
geekosaur extension opcodes would be ... interestinhg 22:23
have to use the ancient MacOS method of hooking the invalid opcode trap 22:24
timotimo MasterDuke: cut off after "develop a Moar target for" 22:25
samcv not sure if that %lui is a typo or intentional 22:29
github.com/MoarVM/MoarVM/blob/mast...oar.c#L237
see this line
%lui renders as: 99i for example if the variable given were 99 22:30
22:31 travis-ci joined
travis-ci MoarVM build passed. Samantha McVey 'Really fix travis. Accidentally had an n-dash where a normal dash should be' 22:31
travis-ci.org/MoarVM/MoarVM/builds/216128776 github.com/MoarVM/MoarVM/compare/6...b5a67950d4
22:31 travis-ci left
geekosaur thinks typo, or thinko (someone thought u was a modifier) 22:34
samcv yeah that's what i think 22:35
samcv has made that mistake before
i don't see anything similar anywhere else so i think typo 22:36
timotimo i wonder if the analysis tools all handle that extra u properly :D
or maybe "the analysis tools" are just one-liners with grep and awk? :P
samcv see this warning travis-ci.org/MoarVM/MoarVM/jobs/216131896#L542 22:40
i think (void *) casts magically to any other pointer type yes? 22:41
also here travis-ci.org/MoarVM/MoarVM/jobs/216131896#L518 22:42
err duh. it's char * because literally it's 8 bits wide. heh. there might be some things that are char * that i'm not sure if the _actually_ point to something 8 bits wide though
like the first link, though i haven't detangled that mess there 22:43
geekosaur (void *) *can* be cast to other types. and on any architecture we care about, the comparison will work without a cast
but for proper portability you want the cast 22:44
samcv yeah 22:45
timotimo we might want to cast these to intptr_t 22:46
samcv trying this out and it's really nice actually. github.com/so-fancy/diff-so-fancy trying it out with git log -p and quite nice colors 22:47
i.imgur.com/Slvcwgt.png
AlexDaniel samcv: yet another cool thing that is not in debian reposā€¦ where do you find this stuff? :) 22:51
I've been using colordiff for sligthly better than shitty diffs
timotimo i always diff stuff with "git diff --no-index"
but i've been too lazy to set that up as an alias 22:52
samcv idk
this is really nice though :3 22:53
brb more tea. and wait for travis
timotimo uargh, this "booth talk" has the background noise louder than the speaker 22:56
samcv what is "booth talk" 23:07
timotimo you know GDC, the game developer's conference? 23:08
MasterDuke timotimo: huh, i see it all. but the rest was just: "... gcc?" - Paul Bennett
timotimo yes, of course you see it all :) 23:09
your irc client doesn't display what others get sent
it just displays what you send 23:10
the server is the one that gets to decide how much to keep
MasterDuke ah
it doesn't let me put in unlimited text, but i guess its (the web client) limit is more than yours. oh, and the weblogs have one char less than you 23:12
timotimo hah 23:13
i'm not sure if the server will tell the client during the initial connection process what the limit per line is 23:14
geekosaur it does, but it's harder than that
timotimo samcv: basically you have a big hall where lots of companies have their little booths, and a booth talk is when they hold a little presentation directly at their booth
geekosaur you get a maximum message size. that is modified by the protocol overhead in a message
which will include your nick, the target channel, the command, etc. 23:15
timotimo samcv: and in this case the presenter totally had a mic next to their mouth, but for some reason a different mic was used
geekosaur (and if the server doesn;t tell you, the max message size is 512 bytes per the RFC)
MasterDuke timotimo, geekosaur: think it's possible to make a MoarPM? 23:23
timotimo Moar Perl Mongers? 23:25
samcv Moar Private Messaging? Moar PM. what time is it Moar PM, as opposed to Moar AM 23:26
23:27 stmuk joined
MasterDuke MoarPhysicalMachine 23:28
timotimo Moar Prime Minister 23:30
geekosaur I don't know details of moarvm bytecode well enough. but in theory you could do it, aside from extension opcodes possibly being problematic 23:31
timotimo of course if you wanted to have rakudo on MoarPM, the extops rakudo uses would become part of MoarPM 23:32
but the opcodes are kind of polymorphic
so a bindpos_i could be handled a couple of different ways
geekosaur whether it's worth the effort is another question. the more high level structures it directly supports (e.g. hashes, strings with grapheme support, ...), the harder a hardware impl would be 23:33
timotimo and our opcodes also directly have much more complicated stuff in 'em, like our hash objects for example
geekosaur anything can be done with a 2-level (microcode) implementation. again, whether it's worth doing is another question 23:36
MasterDuke well, i can't really imagine he meant it for any practical purpose
geekosaur and on an FPGA it could end up being no faster than the current one
MasterDuke changing topics, does the change i mention in the last comment of github.com/MoarVM/MoarVM/issues/561 make sense? 23:39
timotimo i'd actually put in both checks 23:40
i.e. first check if introspection is non-null, then check if is_tty is non-null
and only then try to execute it
geekosaur ^
MasterDuke yeah, definitely would do that if the the check for is_tty is correct 23:41
timotimo it's a check for "does this kind of handle even know how to is_tty", right? 23:42
geekosaur looks like it, yes 23:44
./src/io/syncpipe.c:static const MVMIOIntrospection introspection = { NULL, mvm_fileno };
*boom* 23:45
although arguably that should be a function that always returns false
timotimo hm 23:46
MasterDuke MVM_io_is_tty always return false? 23:49
geekosaur "syncpipe.c"
it's specific to pipes, which are always not ttys
(at least on unix... but $DEITY help you on Windows, since mintty uses a windows named pipe as its tty abstraction)
(msys2/cygwin isatty() is a scary beast, it has to look up the OS name of the handle to see if it's a cygwin/msys2 tty emulation pipe) 23:51
MasterDuke wait, i'm still not following, MVM_io_is_tty is in src/io/io.c. syncfile.c and syncstream.c have an is_tty in their introspection
geekosaur I can't tell where it gets set by a quick grep, sigh 23:55
MVM_io_is_tty just calls the introspection is_tty function, looks like 23:56
but it does it wrapped in a mutex 23:57
so you have things reversed, MVM_io_is_tty is not the low level implementation, it's the high level interface for when you're not already holding a mutex like you are in the guts of the file operations 23:58
MasterDuke right, that's pretty much how i read things 23:59
geekosaur I am saying the introspection is_tty function for pipes shouldn't be NULL, it should be a function that always returns false
so you don't have to deal with this special case