02:14
xtt joined
|
|||
dalek | arVM/smaller_string_storage: ec76e75 | timotimo++ | src/strings/latin1.c: latin1 strings may be stored in 8bits sometimes if their graphemes are strictly ASCII and the synthetics don't go out of range. |
02:25 | |
arVM/smaller_string_storage: 4fd3220 | timotimo++ | src/strings/utf8.c: some utf8-encoded strings also fit into 8bits. |
|||
timotimo | looking into what the best way is to make indexingoptimized also able to have 8bit storage | 02:27 | |
(because if you can't sleep, might as well try to be productive) | |||
02:48
ilbot3 joined
|
|||
timotimo | Unhandled exception: Error encoding UTF-8 string: could not encode codepoint 1918989427 | 03:14 | |
uh oh, what have i done | |||
geekosaur | forgotten to handle your 8-bits somewhere | 03:18 | |
that's either "rats" or "star" | 03:19 | ||
timotimo | oh, you were kind enough to check the value as a char :) | ||
that's cool | |||
geekosaur | well, did it to hex and I know most of the 20-7e from long experience :) | 03:20 | |
(i.e. staring at way too many hex dumps :p ) | 03:21 | ||
timotimo | ah | ||
i forgot to turn the storage type into the other one when i do my conversion | |||
i made a short function to do it so i don't have to retype the conversion over and over | 03:22 | ||
and that function ended up buggy %) | |||
i get through a rakudo build now :) | 03:24 | ||
hm. with perl6 -e '' i get that function run 24 times | 03:33 | ||
for the strings start, parse, ast, mast, mbc, moar ... over and over | 03:34 | ||
that's from NQPHLL's my $compiler := HLL::Compiler.new() | 03:36 | ||
the way it sets up its stages is by splitting a string by space | 03:37 | ||
what i don't get is why it won't give me the "compression" output for cmdoptions ... perhaps nqp's compiler actually has constant folding for that?! | 03:39 | ||
dalek | arVM/smaller_string_storage: 79a161f | timotimo++ | src/strings/utf8.c: kick out debug output for utf8 encoding |
04:16 | |
arVM/smaller_string_storage: ddf58d7 | timotimo++ | src/strings/ops.c: teach a few str functions to compress results into 8bit collapse_strands, substring of complicated stranded strings, string_indexing_optimized, string_escape, string_flip, string_chr. |
|||
timotimo | since it's spectest clean, i'm thinking of merging the branch | 04:27 | |
jesus, sharing the string memory buffer with the mmapped compunit is a noticable memory save | 04:57 | ||
like half a megabyte for perl6 -e '' | 04:58 | ||
05:05
mst joined
|
|||
dalek | arVM/share_string_mem_with_compunit: 7d31a88 | timotimo++ | src/ (4 files): share some string's memory with compunit memory if the string itself is already latin1, and it doesn't contain any crlf, then the memory will be 1:1 the same between what we decoded and what's in the compunit string heap blob. we then make sure to un-share memory when the compunit dies. |
05:27 | |
timotimo | this doesn't seem quite as safe as the other parts in the branch, but it can probably go into master, too. perhaps after the release? | 05:28 | |
could be helpful to have an ASAN-enabled spec test run for this | |||
timotimo tries to catch up on sleep missed tonight | |||
05:30
xtt joined
|
|||
timotimo | 11407 strings got into the latin1 memory sharing thing for 104794 bytes in total, where the average size was 9.18 bytes | 05:34 | |
3 6 and 12 are the 25%, 50% and 75% percentiles | 05:35 | ||
06:24
domidumont joined
06:57
domidumont joined
07:01
domidumont joined
|
|||
nwc10 | timotimo: SEGV paste.scsys.co.uk/539798 | 07:02 | |
07:04
domidumont joined
07:15
domidumont joined
08:35
zakharyas joined
08:46
mtj_ joined
09:28
FROGGS joined
10:47
brrt joined
|
|||
timotimo | cool, thanks, nwc10 | 12:46 | |
i can imagine what went wrong there, heh. | 12:47 | ||
not sure why it didn't asploded on my end, though | 12:50 | ||
once we have weak references implemented, strings that haven't been needed from the string heap can also be cleaned up | 12:53 | ||
i'm imagining since we usually have a compilation stage and a run stage in our programs, that could be helpful | |||
dalek | arVM/share_string_mem_with_compunit: 530f3cf | timotimo++ | src/6model/reprs/MVMCompUnit.c: prevent access to un-deserialized strings in gc_free |
12:56 | |
timotimo | spec tests are clean with that btw | 13:29 | |
lizmat | still, it feels wise to merge this after the release | 13:42 | |
timotimo | sure, no problem | 13:43 | |
lizmat | many things aren't covered yet by spectests (as I've found out the hard way) | ||
that's why I'm not going to commit anything important until after the release :-) | 13:50 | ||
15:04
ggoebel joined
|
|||
[Coke] | this is why I don't like our single threaded nom-as-mainline-dev-and-release-branch strategy. Do wish we were taking more advantage of branching. | 15:07 | |
jnthn has had stuff in branches and merged it post-release before | 15:08 | ||
timotimo | right, we do that all the time | ||
especially me, who is known for committing dangerous, broken, and plain low-grade code :s | |||
jnthn | I see it happen more in MoarVM than Rakudo, to be fair. | ||
timotimo: You're smart enough to do it in a branch most of the time though :P :P | 15:09 | ||
timotimo | right | ||
jnthn | I still kinda like the automated delivery to release branch idea. | ||
timotimo | yeah, we ought to build that at some point | 15:10 | |
jnthn | That is, we have a CD-style thing that every so often picks up the mainline development branch, stresstests it, tests a bunch of modules on it, and if all is well fast-forwards a release-candidate branch to match it. | ||
And releases are cut from the latter. | 15:11 | ||
lizmat | fwiw, my experiences with branches isn't that good | 15:16 | |
not from a technical point of view, but from a code review / community point of view :-( | |||
timotimo | right, people end up not looking at it for months ... | 15:17 | |
the person who initiated the branch gets discouraged | |||
jnthn | lizmat: Doesn't stop you committing stuff you're working on in a branch just so you can keep working "as normal" on things whlie a release happens, and merging it after. | 15:18 | |
lizmat | jnthn: git stash is my friend :-) | ||
timotimo | mine, too | 15:19 | |
jnthn | Same, though I use it for different workflows than branches :) | ||
timotimo | right | ||
i often use it to transplant changes i haven't committed yet across branches | |||
because just checking stuff out, or "git pull" or something might complain | 15:20 | ||
and especially git rebase. git rebase really doesn't want unstaged changes in your working copy | |||
jnthn | So, Rakudo release is this weekend? | ||
lizmat | I think that's the plan, afaik | 15:21 | |
jnthn | OK, then I'll finish up my working week by doing the MoarVM release, so I don't have to worry about it (or block the Rakudo release) during the weekend. :) | ||
lizmat | jnthn++ | ||
jnthn | Wow, I'd missed that 96d74e0c80bc6a happened | 15:35 | |
timotimo++ | |||
dalek | arVM: 1e2d7b4 | jnthn++ | docs/ChangeLog: Changelog entries for 2016.11. |
15:41 | |
arVM: 21193c5 | jnthn++ | VERSION: Bump VERSION. |
15:42 | ||
timotimo | oh, that | 15:47 | |
yeah, that was cool :) | |||
dalek | arVM: 81fd0ac | jnthn++ | docs/ChangeLog: Missed a Changelog entry. |
15:48 | |
jnthn | timotimo: What does it actually mean, though? Can valgrind catch overruns *within* FSA-allocated things? | ||
Or better put: can it catch overruns of memory allocated using the FSA? | 15:49 | ||
timotimo | yes | ||
i've added support for a redzone | |||
that is exactly that | |||
jnthn | Nice | ||
timotimo | one thing we're missing is a long queue for freeing stuff to more agressively trigger use-after-free | 15:50 | |
i.e. keep 10k allocated bits around before actually starting to free stuff | |||
jnthn | I normally flipped the FSA into the debug mode (just uses malloc and records the size for verification) | ||
To use valgrind | |||
:) | |||
Well, when I was bug-hutning and suspected such overruns, that is :) | 15:51 | ||
timotimo | makes sense | ||
but when you're trying to change things in the FSA, basically turning the FSA off isn't the way to go ;) | |||
jnthn | Indeed | 15:52 | |
I was more thinking debugging things that (mis-)use the FSA | |||
OK, anybody got any reason for me not to pull the release trigger? | 15:53 | ||
Feel free to glance the Changelog for mistakes... | |||
timotimo | right | ||
timotimo looks over the changelog | 15:54 | ||
the stuff in it seems good. haven't looked if anything's missing | 15:56 | ||
you generally don't miss anything because of the way you build the changelog, so that's not something i worry about | |||
jnthn | I did it using git log as usual, but this time there were a ton of libatomicops commits imported | ||
Condensed those to one entry :) | |||
timotimo | right | 15:57 | |
jnthn | Full build of the release = 18s | 15:59 | |
In my VM with 4 cores allocated to it | |||
Not bad :) | |||
timotimo | \o/ | ||
clearly that's not clang | |||
jnthn | gcc :) | 16:00 | |
www.moarvm.org/releases/MoarVM-2016.11.tar.gz | 16:02 | ||
moritz | jnthn++ | 16:03 | |
timotimo | \o/ | 16:04 | |
should i recklessly merge my two branches, since they are both spectest-clean? ;) | |||
jnthn | I dunno, are they good? :P | 16:05 | |
timotimo | i think they are good | ||
good for memory usage :) | |||
moritz | then go for it | ||
timotimo | yay! | 16:06 | |
16:14
travis-ci joined
|
|||
travis-ci | MoarVM build failed. Jonathan Worthington 'Changelog entries for 2016.11.' | 16:14 | |
travis-ci.org/MoarVM/MoarVM/builds/177055968 github.com/MoarVM/MoarVM/compare/1...2d7b42bd17 | |||
16:14
travis-ci left
|
|||
[Coke] | ohnoes. | 16:16 | |
timotimo | oh no, the change log blew it all up! | 16:17 | |
17:16
FROGGS joined
|
|||
FROGGS | o/ | 17:16 | |
timotimo | o/ | 17:20 | |
17:25
domidumont joined
|
|||
jnthn | FROGGS: Don't suppose you've got a list of the platforms you've done MoarVM portability improvements for this month? Thought it'd be nice to put in the release blurb on the homepage for this month... :) | 18:11 | |
FROGGS | jnthn: do you have open office? | 18:12 | |
(or libre office) | |||
jnthn | Surely one of them | 18:14 | |
Libre | |||
FROGGS | froggs.de/perl6/platform_matrix.html | 18:16 | |
pass means nqp and rakudo pass their 'make test' | |||
ffi means that libffi is supported on that platform | |||
grey means, there is no such os/arch combination | 18:17 | ||
the qemu column means that there is a qemu system emulator available | |||
jnthn: does that help? | 18:18 | ||
[Coke] | this page is in maltese! | ||
FROGGS | [Coke]: the thing I just posted? O.o | 18:19 | |
psch guesses chrome offering to translate | |||
geekosaur | chrome here didn't see a problem | 18:20 | |
FROGGS | jnthn: I can give you a list of operating systems that needed help too | ||
but one can read that in the commits too | |||
[Coke] | psch: ayup | 18:21 | |
FROGGS: ayup | |||
japhb | FROGGS: Is it your intent that any os/arch that has *both* qemu and ffi support should be supportable by MoarVM? | 18:22 | |
FROGGS | japhb: qemu support doesnt matter, but makes it easier for me | 18:25 | |
japhb: every os that is supported by libuv, libffi, libatomic_ops etc and which has a modern enough arch with enough ram is a valid target | |||
and I try to get rakudo there if I can | 18:26 | ||
example: m68k is most likely not a desirable target | 18:30 | ||
japhb | FROGGS: A laudable goal ... do you have support lists for libuv and libatomic_ops as well? Or are they just "try them and see if they compile and pass tests"? | ||
jnthn | FROGGS: Yes, thanks :) | 18:32 | |
What does "ffi" in a column mean? That ffi support is the blocker? | 18:33 | ||
lizmat | jnthn: is there a reason why nqp::split is generating a list_o rather than a list_s ? | 18:34 | |
timotimo | maybe it means we have to use libffi instead of dyncall? | 18:35 | |
jnthn | lizmat: To save another loop, I guess | ||
lizmat | another loop ? | ||
timotimo | did y'all know our index and rindex ops don't actually do boyer-moore? | 18:36 | |
jnthn | lizmat: In most cases we need to hand back boxed strings; it'd take another iteration to do that. | ||
lizmat | ok | 18:37 | |
jnthn | I'm not sure whether the Perl 6 split actually uses nqp::split though? | 18:38 | |
Since it can potentially work lazily | |||
timotimo | right, probably uses index instead | ||
lizmat | split( Str(Cool) ) uses nqp::split | 18:40 | |
and returns a fully reified list | 18:41 | ||
jnthn | Ah, OK | ||
That's...probably often faster | |||
m: say 'omg'.split(/m/).WHAT | |||
camelia | rakudo-moar b5aa3c: OUTPUTĀ«(List)ā¤Ā» | ||
jnthn | m: say 'omg'.split('m').WHAT | ||
lizmat | well, if the string is 2G, then probably not | ||
camelia | rakudo-moar b5aa3c: OUTPUTĀ«(List)ā¤Ā» | ||
jnthn | Good, it's consistent | ||
True :) | 18:42 | ||
jnthn is a tiny bit surprised that we didn't return a Seq there | |||
m: say 'omg'.comb(/m/).WHAT | |||
camelia | rakudo-moar b5aa3c: OUTPUTĀ«(List)ā¤Ā» | ||
jnthn | Ah, consistent with that also :) | ||
(if the string is 2G) depends how many pieces it breaks up in to... :) | 18:43 | ||
bbi30 | 18:44 | ||
FROGGS | jnthn: ffi means that libffi is available according to the libffi.org page | 19:03 | |
jnthn: though, that does not mean that the other deps, namely libuv, are available | |||
jnthn: I either fixed compilation or fixed issues in tests for linux on: arm, aarch64(arm64), mips, mips64, ppc, ppc64, s390x, x32 and for solaris@x86_64, as well as making moarvm and nqp build on aix@ppc | 19:11 | ||
japhb: there is github.com/libuv/libuv/issues/983 | 19:13 | ||
japhb: and libatomic_ops runs almost everywhere I think, that includes hpux, true64, irix, ... | 19:16 | ||
jnthn: ahh, btw, the aix changes are still in a branch | 19:49 | ||
19:50
domidumont joined
|
|||
dalek | href="https://moarvm.org:">moarvm.org: c87d9cc | jnthn++ | / (2 files): Update website for 2016.11 release. |
20:27 | |
jnthn | Our 35th release. | 20:28 | |
Time flies... | 20:29 | ||
FROGGS | wow | 20:38 | |
looks like I can get nqp on aix test clean quite easily | 21:31 | ||
the weird test failures I had yesterday were about a too recent libuv | |||
jnthn | Nice! | ||
FROGGS | it only fails two tests, and these two were about inf/neginf... I hacked something up quickly so that moar builds | 21:32 | |
and I just need to fix that | |||
Stage parse : MoarVM panic: Memory allocation failed; could not allocate 16384 bytes | 21:47 | ||
gmake: *** [CORE.setting.moarvm] Error 1 | |||
:~( | |||
22:59
MrJones joined
|
|||
MrJones | hi | 23:00 | |
can moarvm be used as a static library out of a C program which then launches it on some runtime-provided bytecode blob? |