Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-04-08

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:08 ZofBot joined #moarvm
00:10 ZofBot joined #moarvm
00:20 ZofBot joined #moarvm
00:25 ZofBot joined #moarvm
00:27 ZofBot_ joined #moarvm
00:27 ZofBot joined #moarvm
00:30 ZofBot joined #moarvm
00:31 ZofBot joined #moarvm
00:36 ZofBot joined #moarvm
00:37 ZofBot joined #moarvm
00:38 ZofBot joined #moarvm
00:42 ZofBot joined #moarvm
00:51 samcv timotimo, i need appveyor. pls
00:51 ZofBot joined #moarvm
01:49 ilbot3 joined #moarvm
01:49 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
02:43 vendethiel joined #moarvm
05:54 samcv ok got appveyor doing its thing i think
07:16 TimToady joined #moarvm
07:30 domidumont joined #moarvm
07:36 domidumont joined #moarvm
08:53 camelia joined #moarvm
08:57 cognominal joined #moarvm
08:58 nine joined #moarvm
08:59 camelia joined #moarvm
09:10 AlexDaniel joined #moarvm
09:52 domidumont joined #moarvm
10:47 AlexDaniel joined #moarvm
13:08 ZofBot joined #moarvm
14:44 mojca1 joined #moarvm
14:44 mojca1 How can I force the usage of a specific compiler when building MoarVM?
14:44 mojca1 The file build/setup.pm seems to have it pretty hardcoded
14:45 jnthn --cc
14:45 jnthn See perl Configure.pl --help
14:45 timotimo jnthn: i shouldn't be able to get two strings with different nqp::chars output because of different handling of \r\n, right?
14:45 mojca1 jnthh: thank you, will try not
14:45 mojca1 not => now
14:46 jnthn timotimo: Shouldn't :)
14:46 jnthn timotimo: If that happens something failed to normalize
14:46 timotimo i wonder if is_concat_stable got broken in this respect?
14:47 jnthn I'd hope not, it was there entirely to handle cases like this
14:47 jnthn m: my $a = "\r"; my $b = "\n"; say "$a$b".chars
14:47 camelia rakudo-moar 50aea2: OUTPUT: «1␤»
14:47 jnthn m: my $a = "\r"; my $b = "\n"; say ($a, $b).join.chars
14:47 camelia rakudo-moar 50aea2: OUTPUT: «1␤»
14:49 timotimo fantastic
14:49 timotimo i added a custom case for \r\n into JSON::Fast and that made things work again
14:49 timotimo i'll try to golf this properly later today
14:52 mojca1 do nqp and rakudo also need a C compiler or just perl?
14:53 timotimo not nqp, but rakudo has some extops that need to be compiled
14:53 timotimo but rakudo ought to take the c compiler that moarvm was configured with i think
14:53 jnthn Yeah, pretty sure that's how it's set up.
14:53 timotimo m: use nqp; say nqp::backendconfig<cc>
14:53 camelia rakudo-moar 966a7e: OUTPUT: «gcc␤»
14:53 jnthn Long term, I'd rather Rakudo didn't have those, but it was expedient to do it that way :)
14:55 timotimo yeah, it'd be nice if all rakudo needed to compile was nqp
14:55 timotimo we might have to write our own C compiler in nqp
14:56 timotimo BBL
14:56 mojca1 timotimo: I'm not sure what you wanted to tell/explain me
15:03 timotimo mojca1: sorry, what was that in reference to?
15:20 zakharyas joined #moarvm
15:21 mojca1 timotimo; I assumed that "m: use nqp; say nqp::backendconfig<cc>" was for me, but maybe I was wrong
15:21 timotimo oh, yeah it was
15:22 timotimo it shows you that you can access "what c compiler was used for moar" from an nqp op
15:28 timotimo timo@schmetterling ~> perl6 -e '"\\\\r\\\\n".trans(["\\\\r", "\\\\n"] => ["\\r", "\\n"]).chars.say'
15:28 timotimo 2
15:28 timotimo timo@schmetterling ~> perl6 -e '"\\\\r\\\\n".trans(["\\\\r\\\\n"] => ["\\r\\n"]).chars.say'
15:28 timotimo 1
15:32 timotimo https://github.com/MoarVM/MoarVM/issues/575 - samcv, this might be related to our recent work on making is_concat_stable better
15:35 timotimo huh, this b0rks way back
15:36 timotimo bisectable6: "\\r\\n".trans(["\\r", "\\n"] => ["\r", "\n"]).chars == "\\r\\n".trans(["\\r\\n"] => ["\r\n"]).chars
15:36 bisectable6 timotimo, On both starting points (old=2015.12 new=94a6909) the exit code is 0 and the output is identical as well
15:36 bisectable6 timotimo, Output on both points: «WARNINGS for /tmp/9vKTNfKPBJ:␤Useless use of "==" in expression ".chars == \"\\\\r\\\\n\".trans([\"\\\\r\\\\n\"] => [\"\\r\\n\"]).chars" in sink context (line 1)»
15:36 timotimo duh
15:36 timotimo bisectable6: say "\\r\\n".trans(["\\r", "\\n"] => ["\r", "\n"]).chars == "\\r\\n".trans(["\\r\\n"] => ["\r\n"]).chars
15:36 bisectable6 timotimo, On both starting points (old=2015.12 new=94a6909) the exit code is 0 and the output is identical as well
15:36 bisectable6 timotimo, Output on both points: «False»
15:36 timotimo fasdadsefadsefsa?!?
15:40 Zoffix m: dd "\\r\\n".trans(["\\r", "\\n"] => ["\r", "\n"]).chars
15:40 camelia rakudo-moar 94a690: OUTPUT: «2␤»
15:40 Zoffix m: dd "\\r\\n".trans(["\\r", "\\n"] => ["\r", "\n"]).comb.join.chars
15:40 camelia rakudo-moar 94a690: OUTPUT: «1␤»
15:40 Zoffix The thing that makes \r\n a grapheme seems to be sleeping on the job?
15:40 timotimo yeah
15:41 timotimo this caused me quite a bit of grief when trying to fix my stuff for HTTP::MultiPart::Parser
15:43 timotimo s: "", trans, \(["a", "b"] => ["c", "d"])
15:43 SourceBaby timotimo, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Undeclared routine:␤    trans used at line 6. Did you mean 'rand', 'tanh', 'srand'?␤␤
15:43 timotimo s: "" trans \(["a", "b"] => ["c", "d"])
15:43 SourceBaby timotimo, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Unable to parse expression in argument list; couldn't find final ')' ␤at -e:6␤------>     put sourcery( ""<HERE> trans \(["a", "b"] => ["c", "d"]) )[1];␤    expecting any of:␤        infix␤        infix stopper␤
15:44 timotimo i can't get sourcebaby's format into my head
15:44 timotimo s: "", "trans", \(["a", "b"] => ["c", "d"])
15:44 SourceBaby timotimo, Sauce is at https://github.com/rakudo/rakudo/blob/38c40bb/src/core/Str.pm#L2261
15:45 Zoffix Callable, Optional args (in a Capture)
15:45 Zoffix Object, method name (in a string), Optional args (in a Capture)
15:45 Zoffix P.S.: you're literally feeding arguments to a Perl 6 routine
15:46 Zoffix &, Capture $?
15:46 Zoffix $, Str, Capture $?
15:46 timotimo mhm
15:49 timotimo m: say nqp::join("", ["\r", "\n"])
15:49 camelia rakudo-moar 94a690: OUTPUT: «===SORRY!=== Error while compiling <tmp>␤Could not find nqp::join, did you forget 'use nqp;' ?␤at <tmp>:1␤------> say nqp::join("", ["\r", "\n"])⏏<EOL>␤»
15:49 timotimo m: use nqpj say nqp::join("", ["\r", "\n"])
15:49 camelia rakudo-moar 94a690: OUTPUT: «===SORRY!=== Error while compiling <tmp>␤Could not find nqp::join, did you forget 'use nqp;' ?␤at <tmp>:1␤------> use nqpj say nqp::join("", ["\r", "\n"])⏏<EOL>␤»
15:50 timotimo m: use nqp; say nqp::join("", ["\r", "\n"])
15:50 camelia rakudo-moar 94a690: OUTPUT: «This type (Array) does not support elems␤  in block <unit> at <tmp> line 1␤␤»
15:50 timotimo m: use nqp; say nqp::join("", nqp::list("\r", "\n"))
15:50 camelia rakudo-moar 94a690: OUTPUT: «
15:50 timotimo m: use nqp; say nqp::chars(nqp::join("", nqp::list("\r", "\n")))
15:50 camelia rakudo-moar 94a690: OUTPUT: «1␤»
15:50 timotimo m: use nqp; say nqp::chars(nqp::join("", nqp::list("\r", "", "\n")))
15:50 camelia rakudo-moar 94a690: OUTPUT: «2␤»
15:50 timotimo aha!
15:50 timotimo that's it!!
15:50 timotimo m: use nqp; say nqp::chars("\r" ~ "" ~ "\n")
15:50 camelia rakudo-moar 94a690: OUTPUT: «1␤»
15:52 timotimo m: use nqp; say nqp::chars(nqp::join("", nqp::list("\r", "", "\n"))) == nqp::chars(nqp::join("", nqp::list("\r", "\n")))
15:52 camelia rakudo-moar 94a690: OUTPUT: «False␤»
15:52 timotimo bisectable6: use nqp; say nqp::chars(nqp::join("", nqp::list("\r", "", "\n"))) == nqp::chars(nqp::join("", nqp::list("\r", "\n")))
15:52 bisectable6 timotimo, On both starting points (old=2015.12 new=94a6909) the exit code is 0 and the output is identical as well
15:52 bisectable6 timotimo, Output on both points: «False»
15:59 timotimo got a fix
16:03 Zoffix \o/
16:03 tomboy64 joined #moarvm
16:03 timotimo t/01-sanity/53-transpose.t ............... Dubious, test returned 14 (wstat 3584, 0xe00)
16:04 timotimo :<
16:04 Zoffix What's the error?
16:04 Zoffix t/fudgeandrun t/01-sanity/53-transpose.t
16:04 timotimo Failed tests:  1-3, 5-7, 9-11, 13-15, 22-23
16:06 timotimo oh, of course.
16:10 mojca joined #moarvm
16:23 timotimo i've got nothin'
16:28 timotimo oh
16:28 timotimo i might have something
16:28 timotimo it doesn't look very pretty
16:28 timotimo let me run spectests
16:41 timotimo nana nana nana nana nana nana nana nana SPEC TEST!
16:42 timotimo huh, a spec test failure from "address already in use", eh?
16:44 timotimo 5002? that's a port i use for ssh forwarding some stuff!
16:44 timotimo how dare you
16:44 timotimo okay, freeing up that port makes spec tests pass
16:47 Geth ¦ MoarVM/join_handle_empty_string_and_sep: bf0d5fc8d4 | (Timo Paulssen)++ | src/strings/ops.c
16:47 Geth ¦ MoarVM/join_handle_empty_string_and_sep: join: extra check for empty string + empty sep
16:47 Geth ¦ MoarVM/join_handle_empty_string_and_sep:
16:47 Geth ¦ MoarVM/join_handle_empty_string_and_sep: this could cause \r and \n to be kept as two graphemes
16:47 Geth ¦ MoarVM/join_handle_empty_string_and_sep: when they were joined with an empty string in between and
16:47 Geth ¦ MoarVM/join_handle_empty_string_and_sep: the empty string as the separator.
16:47 Geth ¦ MoarVM/join_handle_empty_string_and_sep: review: https://github.com/MoarVM/MoarVM/commit/bf0d5fc8d4
16:55 Geth ¦ MoarVM: timo++ created pull request #576: join: extra check for empty string + empty sep
16:55 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/pull/576
17:04 mojca joined #moarvm
17:15 domidumont joined #moarvm
18:15 zakharyas joined #moarvm
18:49 Ven joined #moarvm
19:00 samcv good *
19:00 samcv morning o/
19:03 AlexDaniel joined #moarvm
19:04 samcv nice timotimo looks like that bugs been around a while
19:04 Zoffix \o
19:04 samcv fun stuff
19:08 yoleaux joined #moarvm
19:20 timotimo oh yeah
19:20 timotimo wanna give that pullrequest a little look-over if it's good?
19:20 timotimo and if you think it's good, you can merge it
19:34 yoleaux joined #moarvm
19:51 Ven joined #moarvm
20:00 samcv will take a look after i finish eating lunch :)
20:01 timotimo cool, bon appetit!
20:06 samcv timotimo, can you take another look at my memmem PR?
20:07 timotimo oh
20:07 samcv see if there's anything i missed. it should be ready to merge unless anybody sees anything
20:07 timotimo i haven't had a look at all yet, tbh
20:07 timotimo and somehow i'm still procrastinating the UCD stuff, too
20:07 samcv kk. please do. passes on appveyor and macos and windows
20:07 samcv that's okay lol
20:14 timotimo huh
20:14 timotimo what is three byte memmem for?
20:15 timotimo like, we don't have 24bit numbers i don't think?
20:16 timotimo i find it strange that this shows up as "freebsd" in the license file
20:22 samcv what should i put timotimo
20:22 samcv it's from freebsd
20:23 samcv timotimo, if you search for three codepoints that are in 8 bits
20:23 samcv then that's 24bit total
20:38 timotimo oh
20:38 timotimo i see
20:42 timotimo samcv: you think for short needles we should just convert the needle up to 32bit if the haystack is 32bit?
20:42 samcv yeah. that is planned
20:43 timotimo cool
20:43 timotimo i wonder how safe alloca is?
20:43 samcv i've never used it
20:43 timotimo you know how it works?
20:44 samcv yeah it's like malloc but in the stack right
20:44 timotimo yeah
20:44 samcv and so deallocs when the stack frame is gone
20:44 timotimo and it has no corresponding explicit free
20:44 samcv yep
20:44 samcv also. there's no dealloca?
20:45 samcv what if you want to remove it from the stack frame?
20:45 samcv or nobody cared enough to add that function :P
20:45 timotimo can't. but you can just reuse the space for another thing if the size is right
20:45 geekosaur the stack frame doesn;t have heap management metadata, you can only extend it not track free chunks
20:46 timotimo yeah
20:46 timotimo alloca is 100% vulnerable to internal fragmentation
20:47 samcv less costly than malloc probably right?
20:47 samcv than a malloc and dealloc
20:47 geekosaur yes, it's just subtracting the alignment-adjusted size from %sp and returning that value to you as a pointer
20:47 samcv yeah
20:48 timotimo yeah, it can't be beat in performance, but of course it enforces its own lifetime management on you
20:48 timotimo i was just thinking, if alloca is fine to use inside moarvm, we should use that for a 32bit-converted needle
20:48 timotimo with a sensible upper size limit where we use malloc/free instead
20:49 samcv yeah
20:50 timotimo i see a problem with your code
20:51 samcv i don't see any turn_8bit_into_32bit function like we have turn_32bit_into_8bit_unchecked
20:51 timotimo right, i made tat function up on the spot
20:51 samcv yeah. i assumed we might not have one
20:51 timotimo you're changing start_ptr, but not start, so the length of the string can become incorrect
20:51 samcv was just looking
20:52 samcv ooo
20:52 timotimo when we hit the case where we've got a not-properly-aligned grapheme
20:52 samcv very good catch
20:52 samcv :-)
20:52 timotimo yay!
20:52 samcv i almost want there to be something inside mvm that signals home to notify us if that ever indeed occurs
20:52 samcv heh
20:52 samcv cause i really am curious how likely it is in practice to get triggered
20:52 timotimo i think there's no other problems with the code
20:53 timotimo we could just put an irc client in there
20:53 timotimo when that case happens, it connects to freenode, joins #moarvm, and says "ha! told you so!"
20:53 samcv heh
20:53 samcv lol.
20:53 samcv ya
21:18 samcv ok fixed now timotimo
21:18 samcv https://github.com/MoarVM/MoarVM/pull/574/commits/d9278fddc0ff6087ad0e217337a3b74072d66111
21:19 timotimo wait
21:20 timotimo that's outside the loop, though?
21:20 samcv if the conditional gets triggered then it moves startptr and changes hlength
21:20 timotimo oh
21:20 samcv idk is that conditional abuse. lol.
21:21 timotimo what if hlength becomes 0 here, that'd immediately abort, but i guess that'd be okay?
21:21 timotimo but
21:21 timotimo then it'd think it succeeded
21:21 samcv yeah but that's also not possible
21:21 timotimo good!
21:21 timotimo because then it'd have returned null, right?
21:21 samcv but i can move them back if it makes anybody feel better
21:21 samcv yeah
21:22 samcv it would have
21:22 timotimo maybe what we really want to have is a "end_of_string" pointer
21:22 timotimo instead of decreasing hlength by "how far did memmem move forward" just re-calculate the proper length every time?
21:23 samcv hmm
21:25 samcv uh not sure how that's helpful. because if it is on a boundary. we need to know how far it moved forward. unless you want me to subtract how much it moved forward from the end pointer
21:25 samcv instead of adding it to the start pointer
21:25 samcv which is fine with me if you think that is smarter
21:26 samcv ugh but then that doesn't make that much sense. idk we get back where it left off. so shouldn't we just keep going where it left off and not recalculate more things?
21:27 samcv err or you mean
21:27 samcv calculate the end of the string pointer and subtract where we left off to get `hlength`
21:27 timotimo yeah
21:27 timotimo that's what i meanted
21:27 samcv kk
21:27 samcv i can do that
21:28 timotimo i hope it makes the code a bit clearer
21:28 samcv cool. sounds good
21:29 samcv does add an extra variable. but that's fine if it gets clearer
21:29 samcv less prone to errors etc
21:30 timotimo do we need to keep hlength around? i think it's only needed in the actual memmem call itself?
21:31 samcv yes we do
21:31 samcv i think. hold on
21:31 samcv i'll look
21:31 samcv yeah we do
21:31 samcv since it changes if we have to continue from where we left off
21:32 samcv hlength = (hgraphs - start) * sizeof(MVMGrapheme32); on the first run
21:32 samcv on the 2nd run it'd be hlength = (char*)end_of_string_ptr - (char*)mm_return_32)
21:32 samcv unless i calculate it from end_of_string_ptr...
21:32 samcv that colud work
21:34 timotimo i thought that was my suggestion :D
21:34 samcv very good :)
21:34 timotimo i was clearly not communicating well enough
21:35 samcv ah sorry
21:35 timotimo but you seem to have come to a similar conclusion and that means it's all good
21:35 samcv :-)
21:44 samcv ok round 2 https://github.com/MoarVM/MoarVM/pull/574/commits/fe2f151d0d3f313f2e58e3aaff70ffe0c05a3272
21:47 timotimo hm, we don't have to (char *) the start_ptr before adding sizeof(MVMblah) * (blah - blah)?
21:48 samcv yeah i am doing that now
21:48 samcv msvc was very nonplussed about that ;)
21:49 timotimo i feared as much
21:51 samcv ok and how do we setup appveyor as a org
21:51 timotimo no clue
21:52 samcv i mean i can build it
21:52 samcv idk maybe it's activated https://ci.appveyor.com/project/samcv/moarvm-35u74
21:53 samcv i think it sholud work with PR. but how do we get it to show up on github
21:53 samcv oh hey. it is
21:53 samcv if you go here https://github.com/MoarVM/MoarVM/commits/master
21:53 samcv nice.
21:53 samcv wooo
21:54 samcv or is it not automatic...
21:54 samcv cause i hit start build
21:54 timotimo the link for the hook has to be put in in github
21:55 samcv well at least it's building my fork
21:55 samcv so that's helpful
21:55 samcv automatically that is
21:56 samcv it's nice appveyor has 32bit
21:56 timotimo yup
21:56 samcv traviisssssssssssss whyyyyyyyyy
21:57 samcv you could even make a fake 32bit since it's containers
21:57 samcv it's not that hard
21:57 * samcv grumbles
21:57 timotimo is it giving you spurious failures?
21:57 samcv no
21:57 samcv it should allow me to build under 32 bit on the matrix tho :X
22:00 samcv if i paid enough for travis i got unlimited parallell builds
22:00 samcv i would build in 100 configurations
22:01 timotimo mhh
22:01 timotimo you do have access to hack.p6c.org, right?
22:01 samcv ok there's only 10 concurent builds
22:01 samcv no i don't
22:02 timotimo if you want, just send me your ssh pubkey
22:04 samcv https://cry.nu/pubkey
22:04 samcv https://cry.nu/pub_key errr this <-
22:05 samcv ok no really this https://cry.nu/ssh_pubkey
22:05 samcv argh chrome kept changing the url in my address bar
22:05 samcv when i went there
22:05 samcv i guess it dl'd the file and then the url went back to the failed one
22:06 timotimo ah, hehe.
22:06 timotimo yeah, it'll do that
22:07 timotimo username samcv?
22:07 samcv uhm
22:07 samcv yeah
22:07 samcv sounds good
22:09 timotimo give it a try please
22:10 timotimo we also have irc.p6c.org for running screens/tmuxes with irssi/weechat in them
22:10 timotimo and www.p6c.org where you can have a virtual host on perl6.org or p6c.org for stuff
22:17 timotimo you'll probably want me to lock your password
22:17 timotimo or do you want to set one upon login?
22:23 timotimo well, i just expired it so you'll have to make a new one
22:23 timotimo if you don't want to, i can just delete it afterwards and you can put in some random string or whatever
22:27 samcv ok login and set a password?
22:28 samcv it wants a password connecting to samcv@www.p6c.org
22:34 samcv wow travisci is so expensive
22:34 samcv 69 dollars a month for only one concurrent job
22:36 samcv i would never pay for travis ci
22:37 samcv it has no customization
22:38 timotimo i didn't make an account on www.p6c.org yet
22:38 timotimo if you want one, i'll set it up real quick
22:38 samcv i do
22:39 timotimo one sec
22:39 samcv even the basic plan here semes much nicer https://codeship.com/features/basic
22:39 samcv you can ssh in to the build if you want
22:39 samcv and debug things that went wrong
22:39 timotimo DAYUM!
22:39 timotimo that sounds *really* good
22:39 samcv and the level up from that can have fully customizer docker images
22:39 samcv "Works out of the box, dependencies preinstaled"
22:39 samcv lol opposite of travis
22:40 samcv "We never install anything, handle all dependencies yourself! it is fun! so fun! also we're always super out of date!" Travis CI
22:40 samcv travis is nice for free though
22:41 timotimo okay, try www.p6c.org now
22:41 timotimo actually, we're supposed to have one user per "web app"
22:41 timotimo not sure if user accounts make sense
22:41 timotimo we do have public_html support on hack
22:41 samcv yay
22:41 samcv it worked
22:41 timotimo cool
22:42 samcv i i7 core nehalem 2399.996MHz
22:43 samcv no what do i do with this
22:43 timotimo when things are going weird, check out collect.p6c.org which will give you some stats
22:43 samcv nice
22:45 samcv oh i can get codeship based with 100 builds a month free
22:45 timotimo another thing that exists, but is hardly linked from anywhere, is p6c.org/stats/
22:46 timotimo and now is time for vidya games
22:46 timotimo one thing that occured to me on the walk home:
22:47 timotimo in addition to jnthn's perl6-to-WiX, we could totally have a module that builds appimages from a perl6 application
22:47 samcv ugh codeship.com why can't i find what platforms you support
22:47 timotimo jnthn: ^
22:47 samcv true
22:47 jnthn appimages? :)
22:47 jnthn New to me
22:47 samcv oh i could use it for uh. roast statistics
22:47 samcv though i could always do that on my server... but
22:48 samcv i don't trust it
22:48 timotimo appimage is a thing you just ./ and it'll have everything a user might need in it
22:48 samcv wait that makes no sense. trying to figure out what i meant
22:48 timotimo also works for gui applications
22:48 samcv they're binaries that include all the everything
22:48 timotimo there's also the thing ubuntu has, which is called "snap"
22:48 samcv a perl 6 appimage would be totes cool
22:48 jnthn I was already hesitant enough throwing the wix installer maker out there :)
22:48 timotimo yeah, they are mounted as isos with fuse
22:48 samcv ew snap
22:49 jnthn Maintaining those kinds of things is basically the opposite of fun for me :)
22:49 timotimo mhm
22:49 jnthn It's one of the few things I've put out with an up-front "if you find bugs/missing features that's for you to deal with" notice :P
22:49 samcv can we have a binary if perl 6 is a script
22:49 samcv .o0( hmm)
22:49 samcv i don't know much about appimages
22:50 timotimo pretty sure it can just run a shell script, too
22:50 samcv but they are super cool
22:50 timotimo if not, it'd be easy enough to compile a .c file that does the exact same thing the shell script would do
22:55 samcv uh can we make moar statically linked
22:55 samcv would that allow us to run it without the system's dependencies?
22:55 samcv i think that would work but. what do i know. i can try it
23:01 samcv get an error when building rakudo
23:01 samcv gcc  -L/home/samantha/appimage/lib -shared -fPIC -O3 -DNDEBUG  -O3 -DNDEBUG -lm -lpthread -lrt -ldl -o dynext/libperl6_ops_moar.so dynext/perl6_ops.o dynext/container.o -lmoar
23:01 AlexDaniel joined #moarvm
23:01 samcv when i have moar be static
23:09 samcv also if we statically link in glibc then the licensing police may be on our tail right?
23:11 geekosaur glibc is specifically permitted for such linking as long as you're linking to the system-provided library
23:11 timotimo remember rakudos extops also link against libmoar
23:11 timotimo but the extops get dloaded in
23:12 samcv well i was talking about static linking
23:12 timotimo they may not be able to get statically complied separately
23:12 timotimo but you can probably build a moar that already has rakudos extops in it
23:12 samcv yeah. for sure
23:12 samcv hmm
23:12 geekosaur note however that there are aspects of glibc that break when linked statically; for example, the NSS modules and locale modules are only available dynamically and must match version against a static glibc, so you may need to ship both with the static executable
23:12 samcv sounds like more work. would be good if it can be as close to the normal build as possible
23:13 samcv but is it not allowed to statically link? or only dynamicaly link
23:13 samcv (for distribution at least)
23:13 geekosaur [08 23:11:19] <geekosaur> glibc is specifically permitted for such linking as long as you're linking to the system-provided library
23:13 samcv that sounds like dynamic linking
23:13 geekosaur no
23:13 samcv ok so static is ok as long as its the system one
23:14 geekosaur it sounds like linking against the system provided library and not source
23:14 geekosaur or a private build
23:15 geekosaur (private builds are a gray area, if it's bundled then you have potential license issues)
23:15 samcv yeah
23:16 geekosaur especially with (L)GPL3 which is much stricter about such things; GPL2 could be interpreted as permitting a bundled unmodified build without requiring the whole license to be GPL2
23:33 timotimo we can link statically against everything except glibc
23:33 timotimo but the point of appimages is that you don't have to statically link
23:33 timotimo anything
23:33 samcv well glibc is kind of
23:33 samcv excepted
23:33 timotimo it's expected .. to be there :)
23:33 samcv *expected
23:34 samcv if you don't have glibc. you probably want to compile from source anyway
23:34 samcv but we can dynamically link. inside the appimage right? and just have it be mostly normal? hmm i wanna look into this
23:34 timotimo mh yes
23:34 samcv if we had appimages that could increase uptake of perl6 right
23:35 samcv lower barrier to entry
23:35 timotimo yeah, similar to our docker image
23:35 timotimo we can make an appimage of rakudo star, it should be possible to define some place where a user can install whatever other modules they want
23:35 timotimo CUR is very pluggable for a good reason
23:36 timotimo it'd be cool if we had a bit of a GUI, even if it's "just" a web app
23:37 samcv does perl 6 have any dependencies. other than libc..
23:37 samcv well we have 3rdparty but aside from that
23:37 samcv like stuff expected to be on the users system
23:37 timotimo hmm. well ...
23:38 timotimo pthread, that isn't part of libc
23:38 geekosaur depends on the libc
23:38 timotimo libdl, libm, librt
23:38 samcv well we fail this test
23:38 timotimo right, other libc can have that
23:38 geekosaur but those are generally considered "part of" libc
23:38 samcv Your binary, myapp, must not contain any hardcoded paths that would prevent it from being relocateable. You can check this by running strings MyApp.AppDir/usr/bin/myapp | grep installdirname
23:39 timotimo yes, we fail that
23:39 samcv https://github.com/limbahq/binreloc
23:39 samcv we can use this
23:40 samcv and i guess you can also patch the binary using sed
23:40 samcv i'm reading this https://github.com/probonopd/AppImageKit/wiki/Creating-AppImages
23:41 timotimo no i don't think you can patch the binary using sed, unless the string that's already there has enough null bytes at the end to hold the "new" path
23:41 samcv well that's what it says
23:42 samcv i guess i'll find out
23:48 timotimo it's cool that i could activate your enthusiasm for appimages
23:48 timotimo but can you also review and perhaps merge my pullrequest for join and stability? :)
23:49 samcv well. i want to help perl6
23:49 samcv oh. yes
23:49 samcv will do that now
23:50 timotimo yay
23:57 samcv why is it "The Empty String" not "an empty string"
23:59 timotimo it's a trademark

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary