»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
timotimo 0xdfdfdfdfdf 00:00
mornfall openbsd malloc has a tendency to junk everything it can, so if you read memory that was free'd you tend to get dfdfdf :p
timotimo that's amusing
you usually get that from doing multithreaded stuff carelessly, but there could of course also be a bug 00:01
reproducing stuff that happened in the repl could be difficult though?
mornfall it happens rather reliably for me
timotimo ok then, time to apply some env vars 00:02
will MVM_SPESH_DISABLE=yes cause it to no longer crash?
mornfall nope, still dies in flames 00:03
also with JIT disabled
timotimo cool
disabling spesh will force jit to be disabled as well
mornfall okay
timotimo what most other langs call jit we call "spesh and then jit" 00:04
mornfall it's dying in uv_free_cpu_info :\ 00:05
timotimo oh
mornfall called from MVM_platform_cpu_count
seriously
timotimo that was just fixed
| * 6455d1f6a - Fix double free in platform/sys.c (2 days ago) <Ben Davies>
mornfall good, don't mind me then (grabbed 2018.11 by tag, IIRC) 00:06
timotimo aye, it got fixed post release 00:07
in all the time it has been in there, nobody has triggered it; maybe it only ever "fails" on some systems and not on others 00:08
oh, time to look at today's advent calendar post 00:09
mornfall i clearly got late to the game :p
timotimo glad to have you, tho
it's always good to have people who can sniff out rare bugs, as much as it sucks for them to find bugs all the time :(
00:10 kensanata left
timotimo also always good to have people read the docs and tutorials afresh to tell us what's bad 00:12
we try to "torture the implementors for the benefit of the users", but some things the devs just can't reliably access
00:13 john_parr_ joined, sena_kun left, lizmat_ joined, p6bannerbot sets mode: +v lizmat_, p6bannerbot sets mode: +v john_parr_ 00:14 TimToady joined 00:15 mingdao_ joined, p6bannerbot sets mode: +v mingdao_, p6bannerbot sets mode: +v TimToady, tharkun_ joined, _kristia1 joined, p6bannerbot sets mode: +v _kristia1, Mikey_ joined 00:16 p6bannerbot sets mode: +v tharkun_, caa51h_ joined, mingdao_ left, p6bannerbot sets mode: +v Mikey_, mingdao_ joined, p6bannerbot sets mode: +v mingdao_ 00:17 p6bannerbot sets mode: +v caa51h_, agentzh_ joined, agentzh_ left, agentzh_ joined, p6bannerbot sets mode: +v agentzh_ 00:18 john_parr left, lizmat left, caa51h left, p6bannerbot sets mode: +v agentzh_, john_parr_ is now known as john_parr, mingdao_ is now known as mingdao 00:19 cjkinni joined
mornfall it's okay, i like the language and it's been a while since i had this much fun programming test scripts :p 00:19
00:19 felher joined 00:20 p6bannerbot sets mode: +v cjkinni, mingdao left
mornfall it's definitely a huge improvement over p5 despite the occasional sharp edge 00:20
00:20 p6bannerbot sets mode: +v felher 00:21 oodani left, m0ltar left, Mithaldu left 00:22 yqt joined 00:23 m0ltar joined, p6bannerbot sets mode: +v yqt, oodani joined 00:24 p6bannerbot sets mode: +v m0ltar, p6bannerbot sets mode: +v oodani, Mithaldu joined 00:25 p6bannerbot sets mode: +v Mithaldu, Guest18_ joined 00:26 p6bannerbot sets mode: +v Guest18_ 00:31 w_richard_w joined 00:32 p6bannerbot sets mode: +v w_richard_w 00:34 rindolf left 00:37 yqt left 00:45 zacts joined, p6bannerbot sets mode: +v zacts 00:46 pecastro left
SmokeMachine why this works? 00:55
class C { has $.a is rw }; C.^compose; my $c = C.new; nqp::bindattr(nqp::decont($c),$c.WHAT,q"$!a", Proxy.new: FETCH => -> $ { say "FETCH" }, STORE => -> $, $value is copy { say "STORE" }); say $c.a; $c.a = 42
m: class C { has $.a is rw }; C.^compose; my $c = C.new; nqp::bindattr(nqp::decont($c),$c.WHAT,q"$!a", Proxy.new: FETCH => -> $ { say "FETCH" }, STORE => -> $, $value is copy { say "STORE" }); say $c.a; $c.a = 42 00:56
camelia 5===SORRY!5=== Error while compiling <tmp>
Could not find nqp::decont, did you forget 'use nqp;' ?
at <tmp>:1
------> 3c = C.new; nqp::bindattr(nqp::decont($c)7⏏5,$c.WHAT,q"$!a", Proxy.new: FETCH => ->
SmokeMachine sorry, wrong test
00:56 atweiden-air joined
SmokeMachine m: use nqp; class C { has $.a is rw }; C.^compose; my $c = C.new; nqp::bindattr(nqp::decont($c),$c.WHAT,q"$!a", Proxy.new: FETCH => -> $ { say "FETCH" }, STORE => -> $, $value is copy { say "STORE" }); say $c.a; $c.a = 42 00:57
camelia FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
True
STORE
00:57 p6bannerbot sets mode: +v atweiden-air
SmokeMachine why this works ^^ ? 00:57
use nqp; class C { has $!a }; C.^add_multi_method: "a", method () is rw { return-rw self.^attributes.head.get_value: self }; C.^compose; my $c = C.new; nqp::bindattr(nqp::decont($c),$c.WHAT,q"$!a", Proxy.new: FETCH => -> $ { say "FETCH" }, STORE => -> | { say "STORE" }); say $c.a; $c.a = 42
m: use nqp; class C { has $!a }; C.^add_multi_method: "a", method () is rw { return-rw self.^attributes.head.get_value: self }; C.^compose; my $c = C.new; nqp::bindattr(nqp::decont($c),$c.WHAT,q"$!a", Proxy.new: FETCH => -> $ { say "FETCH" }, STORE => -> | { say "STORE" }); say $c.a; $c.a = 42
camelia FETCH
Cannot modify an immutable Bool (True)
in block <unit> at <tmp> line 1

True
FETCH
SmokeMachine and this doesn't ^^ ? 00:58
timotimo i assume get_value doesn't return-rw 01:01
01:04 w_richard_w left, ChoHag joined 01:05 zacts left, p6bannerbot sets mode: +v ChoHag, Kaypie left, Kaypie joined 01:06 p6bannerbot sets mode: +v Kaypie, zengargoyle joined 01:07 p6bannerbot sets mode: +v zengargoyle
zengargoyle p6: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[0]>>.Str).perl; 01:07
camelia ("A",)
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[1]>>.Str).perl;
evalable6 ("B",)
zengargoyle "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g);say (@($/)[0,1]>>.Str).perl;
evalable6 (" A ", " B ")
zengargoyle what????
timotimo that's individual items behaving like lists if you treat them list-like 01:09
m: say "a">>.Str.perl
camelia ("a",)
timotimo m: say "a".Str.perl
camelia "a"
zengargoyle why the spaces???
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say @/[0,1].perl 01:10
camelia Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5[0, 1]' (indicated by ⏏)
in block <unit> at <tmp> line 1
zengargoyle it seems the semantics of the regex match change to include the non-included...
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/.list[0,1].perl
camelia (Match.new(from => 3, pos => 6, list => (Match.new(hash => Map.new(()), orig => "Hey A is B duh", list => (), made => Any, pos => 5, from => 4),), made => Any, orig => "Hey A is B duh", hash => Map.new(())), Match.new(from => 8, pos => 11, made => Any…
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/.list[0,1].>>.Str
camelia ( A B )
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/.list[0,1].>>.Str.>>.perl 01:11
camelia (" A " " B ")
timotimo this output is barely readable in irc %)
zengargoyle i only wanted the A and B and not the H based on A and B being surrounded by spaces. couldn't make it work with the whole array, or a 0,1 slice. 01:12
01:13 Kaypie left
zengargoyle the spaces only show up if you take the whole array, if you take .[0] or .[1] the spaces aren't there (which is DWIMeant) 01:13
01:13 Kaypie joined
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/[0].list[0,1].>>Str 01:13
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing dot on method call
at <tmp>:1
------> 3[A..Z]>)\s]/,:g); say $/[0].list[0,1].>>7⏏5Str
expecting any of:
postfix
statement end
statement modifier
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/[0].list[0,1]>>.Str
camelia Use of Nil in string context
(A )
in block <unit> at <tmp> line 1
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/[0][0,1]>>.Str
camelia Use of Nil in string context
(A )
in block <unit> at <tmp> line 1
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/[0,1][0]>>.Str 01:14
camelia (A)
timotimo m: "Hey A is B duh".match(/[\s(<[A..Z]>)\s]/,:g); say $/[0,1][0,1]>>.Str
camelia ( A B )
timotimo weird, but i can't go much deeper into this right now
01:14 p6bannerbot sets mode: +v Kaypie
zengargoyle no prob, i think it's a bug... i had to fall back to ($/.[0], $/.[1]) to get the matches without the spaces... like it's ignoring the non-capture [] and the capture () bits somehow. 01:16
timotimo it must be giving you the entire match object for both global matches
zengargoyle yeah. 01:17
timotimo however
there is a simpler solution here
use <( and )>
zengargoyle i'll have to look that up. :) (make this the global match???) 01:18
timotimo aye 01:19
it's like an inside-out lookahead/lookbehind 01:20
zengargoyle gotcha.
would observed behavior be a bug? it's been a while since i've done p6. trying to refresh my memory with Advent of Code challenges and this tripped me up for a bit. 01:21
01:21 lucasb left
timotimo sorry, i've got a bit of a headache. Data::Dump::Tree could probably help out here 01:22
fwiw, comb is sometimes a lot better than match :g :)
zengargoyle i used comb for almost everyting.... this was an attempt to not have to get rid of the inital Capital letter in the string. :) 01:23
screw parsing that string, just give me the digits. 01:24
take it easy, hope your headache goes away. 01:26
timotimo o/ 01:30
SmokeMachine timotimo: yes... probably... but this worked: 01:37
m: use nqp; class C { has $!a }; C.^add_multi_method: "a", method () is rw { nqp::getattr(self, self.WHAT, q"$!a") }; C.^compose; my $c = C.new; nqp::bindattr(nqp::decont($c),$c.WHAT,q"$!a", Proxy.new: FETCH => -> $ { say "FETCH" }, STORE => -> | { say "STORE" }); say $c.a; $c.a = 42
camelia FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
FETCH
True
STORE
timotimo yeah, get_value is not used by rakudo itself
it's only for metaprogramming situations 01:38
well, at least it isn't used for regular class attributes
not such a big surprise that it behaves differently
it's probably barely tested
want to send a pullrequest that makes get_value use return-rw and be an "is rw" method? 01:40
SmokeMachine I think Ill try 01:41
01:45 Thaeus left 01:51 kurahaupo left
Kaypie m: my @a = [1,2,3]; my $a = @a.shift if @a.first == 2; say @a 01:57
camelia [1 2 3]
01:57 Kaypie is now known as Kaiepi
Kaiepi ok so the if gets evaluated before .shift 01:57
good
timotimo well, yeah, otherwise it wouldn't be much of an "if" :D 01:58
01:58 kurahaupo joined 01:59 p6bannerbot sets mode: +v kurahaupo
SmokeMachine timotimo: it's working! spec testing 01:59
timotimo: if all the tests pass, Im committing it... ok? 02:04
timotimo it's probably fine 02:05
pull requests sometimes take long to be merged
but in this case it's probably better for others to look over it and say if it's a sensible change or if the behavior was perhaps even intended
SmokeMachine ok... PRing then... 02:11
02:16 atweiden-air left 02:27 molaf left 02:31 coet left
SmokeMachine timotimo: t/spec/S32-str/utf8-c8.t is broken on line 95... Im testing again without my change... 02:38
yes. without my change its broken too...
02:39 molaf joined 02:40 p6bannerbot sets mode: +v molaf
SmokeMachine its always broken here... 02:41
Im PRing...
timotimo: github.com/rakudo/rakudo/pull/2526 02:46
03:10 w_richard_w joined 03:11 p6bannerbot sets mode: +v w_richard_w 03:28 ufobat_ joined, p6bannerbot sets mode: +v ufobat_ 03:31 ufobat left 03:34 nivekuil` joined, nivekuil` left 03:36 zacts joined, p6bannerbot sets mode: +v zacts
Geth doc: ce78069b51 | (Richard Hainsworth)++ (committed using GitHub Web editor) | Makefile
Update Makefile

add comment mainly to trigger rebuild
03:40
03:43 finanalyst joined, p6bannerbot sets mode: +v finanalyst 03:46 w_richard_w left
finanalyst .tell moritz current failure due to old version of Pod::To::BigPage being used. Old version fails on Pod::Defn. Updated version has new handler. 03:48
yoleaux 7 Dec 2018 11:18Z <moritz> finanalyst: I've updated rakudo. Enjoy :)
finanalyst: I'll pass your message to moritz.
7 Dec 2018 21:55Z <[Coke]> finanalyst: can you merge github.com/perl6/perl6-pod-to-bigpage/pull/33 and publish it, on the assumption that it will let us fix the doc generation for the public site? the upgrade to rakudo has broken it until we get the fix in.
finanalyst [Coke}: are you online? 03:58
[Coke}: are you online? 03:59
[Coke]: are you online?
can anyone tell me why an old version of a module is being downloaded by zef? Is there another step needed after merging, eg. publishing 04:03
if so, how to publish?
04:20 Cabanossi left, Cabanoss- joined 04:21 p6bannerbot sets mode: +v Cabanoss-
Geth perl6-pod-to-bigpage: 6d01e65d5e | (Richard Hainsworth)++ (committed using GitHub Web editor) | META6.json
bump version to 0.4.1
04:25
finanalyst how often does zef update its module source lists? 04:28
.tell moritz zef now installing updated version of Pod::To::BigPage that will process Pod::Defn. Please upgrade Pod::To::BigPage on docs server, if this is not automatic 04:44
yoleaux finanalyst: I'll pass your message to moritz.
finanalyst .tell [Coke] new version of Pod::To::BigPage processes Pod::Defn on a local version of docs. zef now installing new version. 04:46
yoleaux finanalyst: I'll pass your message to [Coke].
04:49 finanalyst left 05:25 AlexDaniel left 05:29 Guest18_ left 05:49 sauvin joined, p6bannerbot sets mode: +v sauvin 05:53 [Sno] joined 05:54 Sgeo_ joined, p6bannerbot sets mode: +v [Sno], p6bannerbot sets mode: +v Sgeo_ 05:55 sno left 05:57 Sgeo left 06:31 zacts left 06:54 irdr joined, p6bannerbot sets mode: +v irdr
ufobat_ when have/use some module in a script can I get information from which CompUnit::Repository it was from, in order to access its META6 data? 07:17
and can i also access the %?RESOURCES of this module? 07:18
Geth perl6-pod-to-bigpage: 1561288c3b | (JJ Merelo)++ | META6.json
Bumps up version to account for Defn being handled now

It was done in #33 actually. This closes #31
08:06
perl6-pod-to-bigpage: 06ad9bf992 | (JJ Merelo)++ | 0 files
Changes author to Perl 6

And bumps up version to 0.5. It's using new block types, so it merits bumping up.
buggable New CPAN upload: Algorithm-LDA-0.0.5.tar.gz by TITSUKI modules.perl6.org/dist/Algorithm::L...an:TITSUKI 08:13
08:17 nige joined 08:18 p6bannerbot sets mode: +v nige
nige currently doing my advent entry for the 10th - have run in to a little problem - I'd like to use the output of the perl6 interpreter - however the colours are causing Terminal::Print trouble - is there a way to turn off colour output for the interpreter? 08:19
08:25 jjmerelo joined, p6bannerbot sets mode: +v jjmerelo
jjmerelo Hi 08:26
yoleaux 2 Dec 2018 13:08Z <tbrowder> jjmerelo: i've edited your day 2 post a bit: adjusted the date/time published (p6 wp is on UTC, so you use the exact date an time of 00:01 which displays in the summary as 12:01 AM); also, removed the duplicate title and closed up some of the extra newlines inside obvious paras. you may want to tweak the content by hand some more. i would like you to completely update day 2 content later following the procedures i'm
jjmerelo .tell tbrowder thanks.
yoleaux jjmerelo: I'll pass your message to tbrowder.
jjmerelo .seen moritz
yoleaux I saw moritz 7 Dec 2018 22:17Z in #perl6: <moritz> can't we let travis build the site?
jjmerelo .seen AlexDaniel
yoleaux I saw AlexDaniel 02:08Z in #perl6-dev: <AlexDaniel> samcv: ↑
08:28 domidumont joined
moritz \o 08:28
yoleaux 03:48Z <finanalyst> moritz: current failure due to old version of Pod::To::BigPage being used. Old version fails on Pod::Defn. Updated version has new handler.
04:44Z <finanalyst> moritz: zef now installing updated version of Pod::To::BigPage that will process Pod::Defn. Please upgrade Pod::To::BigPage on docs server, if this is not automatic
jjmerelo moritz ^^^
I have just upgraded Pod::To::Bigpage to 0.5.0
08:28 p6bannerbot sets mode: +v domidumont
jjmerelo Can you please upgrade that and check? 08:29
moritz I can try
jjmerelo I no longer have access, for some reason.
Thanks.
moritz how so?
08:29 nige left
jjmerelo moritz: yesterday I tried with my desktop computer, whose public key was installed there. It didn't work. 08:30
moritz: today I'm marooned in the sofa with back pain, and I don't think this public key is there. I can send it to you if you would be so kind to install it there. 08:31
(I mean the laptop public key, not the sofa's public key)
moritz ===> Updating: Pod::To::BigPage:ver<0.5.0>:auth<Perl 6
jjmerelo: yesterday, hack was down. I've rebooted it 08:32
jjmerelo: but I'll happily add more SSH keys for you
jjmerelo moritz: ok, that must have been it. Please add the one I've emailed to you. 08:33
moritz jjmerelo: done
jjmerelo moritz++
samcv .
jjmerelo moritz: I'm in :-)
Hi, samcv ! 08:34
samcv hi
jjmerelo samcv: just saw this issue you solved about indexing % 08:38
samcv: there's a problem now with indexing %%. I don't know if what you did, changing it to its unicode name, would work for that
samcv: indexing of names is more or less OK, indexing of fragments is kind of broken and totally jury-rigged 08:39
samcv hmm 08:43
08:43 lizmat_ left
samcv wait i need an example 08:43
08:48 lizmat joined, p6bannerbot sets mode: +v lizmat
jjmerelo I would say that the docs.perl6.org is back to normal, right? 08:56
09:01 Sgeo_ left 09:06 kent\n left
Geth doc: e3fb0e6ffa | (JJ Merelo)++ | 2 files
Insert recommendations for make html and making docs

Since Defn is only interpreted after 2018.11, that's been the version recommended. It should work with prior versions, only they will not be rendered in the same way. Closes #2424
09:07
09:08 Sgeo joined 09:09 p6bannerbot sets mode: +v Sgeo, kent\n joined, p6bannerbot sets mode: +v kent\n 09:12 sena_kun joined 09:13 p6bannerbot sets mode: +v sena_kun
Geth Pod-To-HTML/master: 5 commits pushed by (JJ Merelo)++ 09:15
mornfall can i subscribe to file change notifications as a supply? 09:21
inotify/kqueue kind of stuff
oh yes, IO::Notification is it? 09:24
09:29 kurahaupo left
sena_kun yes 09:30
`watch-path`
mornfall oops, there's a bug? just doing empty 'whenever $watch' i get 'Use of uninitialized value of type Str in string context.' on every event? 09:33
sena_kun cannot reproduce on linux. :S 09:34
my code is: `react { whenever IO::Notification.watch-path('yaml.yml') { $_.say } }` from repl.
mornfall yeah, it'd be quickly caught
okay i was watching a directory 09:36
watching a single file seems to be okay
also docs say watching a directory watches the entire subtree but it doesn't :\ 09:37
okay it say 'file in that directory' but that also doesn't work :\ 09:38
files*
09:38 daxim joined 09:39 p6bannerbot sets mode: +v daxim
mornfall IO::Notification seems to be a rather thin wrapper around nqp::watchfile 09:39
so it seems nqp::watchfile just sends undef (Str) for the path if i watch a directory 09:44
Woodi mornfall: just Perl6 is in organic growth phase :) more users are needed 09:45
Geth Pod-To-HTML: 3eb562b7af | (JJ Merelo)++ | 2 files
Updates test to check for template filling

And also updates a bit the README.md to reflect the use of templates. Refs #35 but shouldn't be closed unless it's documented actually on the code.
Pod-To-HTML: a489b345a1 | (JJ Merelo)++ | 2 files
Adds small comment

As a matter of fact, the whole module is not documented, but that's another completely different topic. Bumps up version to reflect the templating change and closes #35
mornfall okay it goes all the way down to moar
mornfall MVM_OP_watchfile 09:46
Woodi probably libuv is at the bottom...
mornfall yes, but i sort of expect libuv to work 09:47
though so far i only found layers of wrappers
*sigh* this is ugly 09:49
Woodi mornfall: Rakudo implementation of v6 is based on nqp with Moar backend which uses libuv. becouse Moarvm replaces Parrot and we needed something working *fast* :)
and at least we have something working on uncompatible oses like nixes and windowses 09:51
there was some talks about replacing libuv some years ago 09:53
but, imo, we should just have NativeCalls libraries of every os specific features... 09:54
09:54 rindolf joined
mornfall no, platform abstraction is good and useful 09:55
it just sucks when it breaks, because it's usually ugly
09:55 p6bannerbot sets mode: +v rindolf
Woodi magical i/o is like ORM - it's stops be magicall at some point 09:55
but, yes, Perl usually is full of batteries by defult :) 09:56
mornfall yey, a null pointer comes as the filename into the uv_fs_event_start callback 09:57
don't i just love my life?
Woodi mornfall: you just doing something good :>
mornfall that'd be the on_changed function in src/io/filewatchers.c in moar
Woodi mornfall: do you try Perl6 grammars already ? I'm interested in your usability evaluation :) 10:00
Woodi </cynic mode> :)
mornfall not yet, but i'll get to that
10:01 jjmerelo left
mornfall moar has a newer libuv bundled than my system, but when i use that the moar binary just dies of SIGTRAP very quickly, in MVM_frame_try_return 10:02
okay those two problems are unrelated 10:08
all new builds of moar SIGTRAP for me :\
Woodi mornfall: you are on OpenBSD ? do you run nqp tests ?
mornfall yes, openbsd
currently i can no longer build moar after i updated to 6.4, presumably due to compiler changes
Woodi hmm, Moar do a lot of asm code generation... I remember prediction from some time ago that OpenBSD will not be jit friendly... but no details in memory... 10:13
mornfall yes, JIT broke between 6.3 and 6.4 10:15
(openbsd, that is)
oh god. 10:17
timotimo: you know what? i hit that double free in MVM_platform_cpu_count again, in a completely different way :p
Woodi OpenBSD disabled hyper-threading ? 10:18
mornfall by default, yes 10:19
how interdepedent moar, nqp and rakudo are? 10:23
everything fell apart :( i guess i have to rebuild nqp with the new moar? 10:24
Bytecode validation error at offset 604, instruction 95:
branch targets offset 552 within instruction 86
okay nope
moar is just busted
Woodi separate code repositories/projects :) but they are rather depended on each other... 10:25
mornfall okay i apparently ended up on some god-forsaken branch of moarvm (i just used the commitid timotimo mentioned as fixing the double free) 10:26
cherry-picked that into master, let's see how that goes
10:28 rindolf left
mornfall so the jitter destroys a retguard cookie \o/ 10:29
i don't think that should actually be happening btw 10:34
anyway, disabling retguard gives me back perl6 that can jit
so i'm where i started, libuv is sending null pointers for filenames because why not but at least i can run stuff 10:35
the double free seems to be gone, so there's that
10:42 rindolf joined 10:43 nige joined, p6bannerbot sets mode: +v rindolf 10:44 p6bannerbot sets mode: +v nige 10:47 jjmerelo joined, p6bannerbot sets mode: +v jjmerelo 10:55 lucasb joined, p6bannerbot sets mode: +v lucasb 10:56 nige left, nige joined 10:57 p6bannerbot sets mode: +v nige
mornfall are you kidding me /o\ ... libuv has bloody syscall numbers in it? sprunge.us/LDGUVv 11:02
11:09 nige left, nige_ joined 11:10 p6bannerbot sets mode: +v nige_
Geth Pod-To-HTML: 5b4e4d326c | (JJ Merelo)++ | 3 files
Changes template to non-URI-encode headers

And also adds tests for it; changes main template too. Closes #50
11:37
Pod-To-HTML: 340b36bc4f | (JJ Merelo)++ | META6.json
Bumps up to 0.4.0

It should have probably beem bumped before, but the fact that it now uses templates and changes interface merits a new minor, at least.
11:45 kensanata joined, p6bannerbot sets mode: +v kensanata 11:50 pmurias left 11:52 pmurias joined, p6bannerbot sets mode: +v pmurias
mornfall *sigh* creating a pull request for one patch is a 5 minute enterprise with git(hub) :\ 11:54
create a branch (figure out how to do that), cherry-pick the patch, push the new branch to the fork, hub pull-request
11:58 Actualeyes left
timotimo you can do it way easier than that 11:58
11:58 pmurias left
Woodi sending patches by email had some clarity in it ;) 11:58
mornfall timotimo: hmm, how?
11:58 pmurias joined, p6bannerbot sets mode: +v pmurias
mornfall just doing a pull request off master wanted to include an earlier patch (which makes sense) 11:59
which wasn't merged yet
timotimo find the file on github, click the "pencil" icon, change the code in the on-line editor or just copy-paste your edited code in, enter a commit message and description, then enter pull request text
Geth doc: c14b44c58f | (JJ Merelo)++ | META6.json
Upgrades Pod::To::HTML to make definition lists work.

Actually, upgrades to 0.4.0 since that fixed Pod-To-HTML#50. Closes #2503
11:59 pmurias left
mornfall that involves a lot of clicking :\ 11:59
timotimo hah
anyway, hub also has a fork subcommand
mornfall probably would take longer than mucking around with branches
yes, i already own a fork
the first pull-request was a lot easier 12:00
timotimo but yeah, if you've never gitted, it's not trivial
mornfall because i could just do it off master
(and if it was merged, i could have just rebased master and re-use that, presumably)
making branches in git is kinda expensive
timotimo you think? 12:01
Woodi it's improvement from CVS :) 12:02
timotimo branches are one of the cheapest things git has to offer :)
12:03 pmurias joined, p6bannerbot sets mode: +v pmurias
timotimo it's implemented literally as a file in the right place with a sha1 in it, plus optionally (but usually) a piece of config that tells git where you want it pushed to and pulled from by default 12:05
mornfall it's kinda funny how i can cherry-pick what to commit 'for free' (commit -p) but i can't make a cherry-picked branch in one go like that
timotimo you can, but it's a scary incantation :D 12:06
git rebase --onto master next topic
where next is the branch or commit sha1 that has the initial change, and topic has the changes you want on top of next
mornfall i know how git is implemented :p i wrote a git-fast-{import,export} parser/serializer in haskell at one point
timotimo OK 12:07
mornfall okay, didn't know rebase can create branches
timotimo in my experience learning about how a git repo looks on the inside helped me grok git a lot better, but of course if you don't use git you wouldn't know where to look
12:08 aindilis left
mornfall i have a pretty good idea how it works under the hood, though the github-specific parts not so much 12:08
it's the user interface that gets me every time :\
12:08 aindilis joined
timotimo the separation is much closer towards github than you perhaps realize 12:08
12:08 pecastro joined 12:09 jw358 joined, p6bannerbot sets mode: +v jw358, p6bannerbot sets mode: +v aindilis
mornfall yeah, it's mostly just metadata 12:09
but 'just metadata' can be a lot of stuff
timotimo yeah, the user interface is not quite well structured
12:09 p6bannerbot sets mode: +v pecastro
mornfall timotimo: i don't think your rebase command works in my git? 12:10
says no such branch/commit topic
timotimo well, yeah, you need to put the right name in there
in your case, HEAD will probably be correct 12:11
mornfall if i have to create the branch by hand, it's not better than cherry-pick
timotimo you do not
hm
though it might complain that it doesn't have a name for the new thing in that case
mornfall but 'topic' is supposed to be the new branch?
timotimo no, topic is the branch that will be replaced
mornfall i work on master, since i want to actually use the resulting thing
timotimo in that case your master is topic and my master is origin/master 12:12
mornfall so when i have multiple patches i want all of them to build, but for the sake of upstream, i also want to separate out the changes
12:13 aindilis left
timotimo i'm not sure that workflow is very well supported 12:14
but a shell alias shouldn't be too hard to make
mornfall hmm, i can't figure out the correct rebase command... i managed to erase the commit though \o/ :p 12:15
mornfall cherry-picks it back from the topic branch
timotimo hah
you can always get your old stuff back with "git reflog"
mornfall i think i stick to cherry-pick, that's at least safe-ish
rebase i use for normal rebase stuff
(i have diverged and want to put my commits on top of current upstream) 12:16
(i think that works quite well, at least in my experience)
(unless the divergence becomes large, then it starts to flake)
(had to maintain a divergent branch for many months and rebase it regularly, it was getting painful... that was at old job though, good riddance :p) 12:17
12:19 Manifest0 left
mornfall apart from the crummy commandline interface, my main pet peeve with git is that branches are its go-to hammer; i know they are cheap implementation-wise, but they are not cheap for a human to keep track of... 12:21
but enough of that, the pull request is done, i want to forget all about it :p 12:22
timotimo that's fair 12:23
mornfall i would improve the docs but i'm confused as to where they live? 12:25
src/core/IO/Notification.pm6 has the implementation
but there's no pod in there, even though p6doc shows me the docs for it
timotimo there's a repo "perl6/docs" i think? docs.perl6.org has a link to it on every non-generated page
mornfall oh the docs live in another repo? :( 12:26
is that because those classes are part of the language instead of part of the stdlib? 12:27
timotimo yes
hm, i suppose? 12:28
mornfall or is the stdlib a spec also, and rakudo just tries to implement that?
timotimo language/compiler/stdlib is a rather muddy definition, IMO
mornfall (that would explain differences in behaviour from the docs, at least)
but it seems odd, this ties all the way into libuv behaviour 12:29
timotimo perl6 is specified by the test suite, and that has stuff for all those classes
mornfall or rather into the kernel if you will
timotimo file system notifications are absolute and utter garbage :)
especially when you look at it from a cross-platform perspective
mornfall great :p 12:30
yes, i noticed it's just 4 layers of wrapers around kevent :p
on openbsd anyway, it's probably 4 layers of wrappers around inotify on linux
timotimo i don't think i want to look :D
mornfall none of them appear to make any attempt at unifying behaviour across platforms
timotimo i think on at least one platform - could be linux - you actually need one fd for every file or directory you're monitoring, so have fun with directory trees i guess 12:31
mornfall let me see, there's libuv which wraps kevent/inotify, then there's MVM_op_watchfile, then nqp::watchfile then IO::Notify?
timotimo MVM_op_watchfile is most probably 1:1 equivalent with nqp::watchfile
mornfall yes that's normal, it's like that on all (?) platforms re descriptors
maybe OSX has something different, there's a special fsevents blob of code in libuv for OSX 12:32
pardon me, macOS :p
you are right, it seems the thing passes right through nqp on moar and throws an exception on jvm :) 12:34
12:34 coet joined, p6bannerbot sets mode: +v coet
mornfall anyway i think i can make it work, we'll see 12:35
timotimo a very big portion of nqp::blah maps 1:1 to MVM_OP_*
some have a little bit of extra code in the compiler
mornfall yeah when i noticed there's an MVM_OP_ for it, i went straight there to check what is coming out of libuv... but i wouldn't want to write a VM for rakudo to run on :P the opcode list is awfully long 12:36
timotimo more and more of those ops are for optimization purposes :) 12:37
12:37 pmurias left
Kaiepi morning 12:37
timotimo everything starting with sp_ only ever gets emitted by the specializer, and some of those are copies of other ops that don't do checks etc
Woodi all that becouse nqp is our "abstract" layer, it allows eg. backends in Java and Java Script. everything below nqp probably should be invisible to not-devs
12:37 pmurias joined, p6bannerbot sets mode: +v pmurias
mornfall Woodi: abstractions leak 12:38
like the libuv stuff :-)
some leak less, some leak more
Woodi that's not leak, it's realy good wrapped :)
mornfall but apart from a tiny subset, all abstractions leak
Kaiepi i've ran into several issues with libuv on openbsd
not as bad as node's though 12:39
mornfall libuv *is* node?
Kaiepi yeah
timotimo we'd have a very, very hard time not making the filesystem watcher abstraction leak ... we'd probably have to offer kernel modules for all OSes we target :)
Kaiepi the only problems i've encountered with the jvm is how unbearably long it takes to build 12:40
haven't tested the js vm yet, but i should since node's the language i'm second most experienced in 12:41
Geth Pod-To-HTML: 901c9b8513 | (JJ Merelo)++ | 5 files
Improves documentation a bit by adding examples refs #49
12:42
Pod-To-HTML: f5ea68c2bb | (JJ Merelo)++ | 4 files
Adds pointer in README.md

And removes example to the former examples dir to the new one. Refs #49
12:42 Manifest0 joined
mornfall timotimo: it doesn't have to leak nearly as much though... at least within the unix family, it should all mostly work with libuv, you'd just have to forget about the pathname attribute 12:43
12:43 p6bannerbot sets mode: +v Manifest0
mornfall the fact that inotify will lose events if there are too many is harder to hide, i guess 12:44
i don't know how kevent handles that situation
basically the abstraction that i think would be available mostly everywhere is 'this directory changed, go figure it out' and 'this file was modified, go figure it out' 12:46
the specific types of changes are a lot more variable, as is the extra data available with them
12:46 xlat joined, p6bannerbot sets mode: +v xlat, pmurias left
mornfall (for directory changes, inotify on linux sends the name of the file that appeared/disappeared, but kevent does not, or if it does, libuv throws that away) 12:46
12:48 pmurias joined, p6bannerbot sets mode: +v pmurias, pmurias left
Kaiepi i need to look through libuv's source code at some point 12:49
i feel a bit out of my depth with this convo lo
*lol
12:51 literal joined
mornfall okay even if kqueue doesn't lose events, libuv does \o/ 12:52
12:52 p6bannerbot sets mode: +v literal
mornfall it operates filesystem kevents in one-shot mode and puts them back after they fire (creating a race window) 12:52
i also made the mistake of using --prefix ~/prog/rakudo and now i have a directory called '~' :\ 12:54
(on linux, i wanted to check how IO::Notification behaves there)
rm -rf ~ sounds like a great way to get rid of that dir :p 12:55
anyway, i need to go for a walk before i go crazy... sorry that i use this place as a rubber duck, i hope you folks don't mind too much 12:56
lucasb in '--prefix ~/prog/rakudo' the shell should have expanded that tilde, no?
if you wrote '--prefix=~/prog/rakudo', then no :) 12:57
mornfall yes of course you are right (isn't the = required? i don't know) 12:58
i usually say $HOME when talking to configure scripts, i just slipped 12:59
lucasb yeah, it may be required, idk. me too uses --foo="$HOME/..."
13:08 pmurias joined, p6bannerbot sets mode: +v pmurias
Kaiepi that reminds me 13:11
i was never able to get $HOME to work properly when using config.default
ufobat_ is there a way to get the %?RESOURCES of a nother name that you know by callframe? 13:12
s/name/module/
Kaiepi %?RESOURCES? 13:13
tbrowder \o #perl6 13:14
yoleaux 08:26Z <jjmerelo> tbrowder: thanks.
ufobat_ it would be most likly different module, not that one i am currently in?
timotimo m: .name.say for $*REPO.^methods 13:15
camelia BUILD
writeable-path
can-install
name
upgrade-repository
install
uninstall
script
files
resolve
need
resource
id
short-id
loaded
distribution
installed
precomp-store
precomp-repository
repo-chain
load
path-spe…
pmurias Kaiepi: I'm afraid rakudo on js takes longer to build then on the jvm :(
timotimo e: .name.say for $*REPO.resolve("JSON::Fast") 13:16
evalable6 (exit code 1) Type check failed in binding to parameter '$spec'; expected CompUnit::DependencySpecification but got Str ("JSON::Fast")
in block <unit> at /tmp/zzf0tFTaeq line 1
timotimo oops
well, something in that general direction
lucasb Haskell to Perl 6 doc page mentioned in the news... :)
Kaiepi pmurias it's also even more annoying because node likes to try to use the really old version of gcc that comes with openbsd to build cpp code
13:17 kensanata left
Kaiepi CC=egcc CPP=eg++ CXX=ec++ npm install 13:18
tbrowder being slow, i’m starting to work on my 2019 advent post and need some help from santa’s elves. what i need immediately is to vote on a choice of names from a list. if you are willing to do that AND keep it secret, please message me privately 13:19
13:20 pmurias left
lucasb tbrowder: let's setup a private mailing list for all authors? 13:20
ufobat_ timotimo, but the information i need for the github.com/rakudo/rakudo/blob/mast...cation.pm6 are not obtainable from the CallFrame, are they?
timotimo hm, probably not
have you tried if you can access %?RESOURCES literally through the callframe?
13:20 pmurias joined, p6bannerbot sets mode: +v pmurias
ufobat_ not yet 13:21
tbrowder lucasb: but that wouldn’t solve my immediate problem since discussion would be shared with the group. as someone pointed out recently, the p6 group is quite small. 13:22
Kaiepi OH
i completely forgot what %?RESOURCES was
lmao
m: say %?RESOURCES.^methods 13:23
camelia (new Numeric Str sink AT-POS AT-KEY BIND-POS BIND-KEY ASSIGN-POS ASSIGN-KEY STORE push append unshift prepend FALLBACK ords chrs chop chomp iterator Set SetHash Bag BagHash Mix MixHash gist)
ufobat_ timotimo, i dont know how, because CallFrame.my is for the lexical scoped ones 13:24
i am actually just toying around in order to figure out a way to access %?RESOURCES of some $module, in order to provide this functionality as a module ;) 13:25
jjmerelo tbrowder: I can help you with whatever 13:26
13:26 Kaiepi left 13:27 Kaiepi joined 13:28 p6bannerbot sets mode: +v Kaiepi
tbrowder jmerelo: thanks! i’ll email you soon 13:30
Kaiepi m: %?RESOURCES.BIND_KEY('test', anon sub { %?RESOURCES.new }); %?RESOURCES<test>() 13:32
camelia Cannot find method 'Nil' on object of type List
in block <unit> at <tmp> line 1
Kaiepi m: say %?RESOURCES.WHAT 13:33
camelia Nil
Kaiepi m: %?RESOURCES .= new: foo => { &die = &say }(); say %?RESOURCES 13:35
camelia Cannot modify an immutable Sub (&die)
in block <unit> at <tmp> line 1
Kaiepi m: %?RESOURCES .= new: foo => { &die := &say }(); say %?RESOURCES
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use bind operator with this left-hand side
at <tmp>:1
------> 3RESOURCES .= new: foo => { &die := &say 7⏏5}(); say %?RESOURCES
timotimo that'll have to be => or have a -> in front
er, what are you trying to do?
Kaiepi that was a pretty bad attempt, but i was trying to see how i could construct new instances of %?RESOURCES 13:37
i should just read the source code
timotimo %?RESOURCES is just a Hash i believe
13:48 pmurias left 13:54 kurahaupo joined 13:55 p6bannerbot sets mode: +v kurahaupo 13:59 pmurias joined 14:00 p6bannerbot sets mode: +v pmurias
Kaiepi m: $*VM.platform-library-name('ssl'.IO) 14:02
camelia ( no output )
Kaiepi m: say $*VM.platform-library-name('ssl'.IO)
camelia "libssl.so".IO
Kaiepi m: say qx[stat /usr/lib/libssl.so] 14:03
camelia stat: cannot stat '/usr/lib/libssl.so': No such file or directory
Kaiepi m: say qx[ldconfig -r | grep libssl] 14:04
camelia ldconfig: option requires an argument -- 'r'
Try `ldconfig --help' or `ldconfig --usage' for more information.
Kaiepi odd
mornfall weird, installing rakudo-star 2018.10 on linux gets me Aborting due to test failure: zef:ver<0.5.3>:auth<github:ugexe>:api<0> (use --force-test to override)
timotimo i thought camelia uses the restricted setting ...
Kaiepi anyway my question is i have three different versions of libssl on my system 14:05
mornfall that's about as much detail as it gives me
Kaiepi how does perl decide which version to pick?
timotimo unless you give it some stuff in the dependency spec, it'll take the newest, or complain when there's ambiguity
mornfall Kaiepi: the right fix for that is to use the base c++ (which is clang 6 at this point), re openbsd g++ 14:06
Kaiepi right fix for what? 14:07
oh building the js vm? 14:08
mornfall Kaiepi: +Kaiepi | CC=egcc CPP=eg++ CXX=ec++ npm install
eg++ is gcc 4.9 or something, pretty ancient too
Kaiepi ah
14:09 kerframil joined, p6bannerbot sets mode: +v kerframil, jjmerelo left
mornfall i don't think node runs on any platforms that still use gcc in base 14:09
14:24 rfold joined, p6bannerbot sets mode: +v rfold
pmurias Kaiepi: what ops do you want to implement on node.js? 14:29
14:30 lizmat left
Kaiepi i'm not sure, i haven't taken a very good look at it 14:30
one thing that really irks me though is how exports are handled
iirc it's most optimal to export everything in a module as one object with module.exports instead of using exports, which is what node core does 14:31
14:42 Kaiepi left 14:43 Kaiepi joined 14:44 p6bannerbot sets mode: +v Kaiepi 14:46 kurahaupo left 14:47 kurahaupo joined 14:48 p6bannerbot sets mode: +v kurahaupo, Kaiepi left, Kaiepi joined 14:49 p6bannerbot sets mode: +v Kaiepi
Kaiepi m: anon sub { say 1 } 14:59
camelia WARNINGS for <tmp>:
Useless use of anonymous sub, did you forget to provide a name? (line 1)
Kaiepi what does anon do?
m: do anon sub { say 1 }
camelia ( no output )
Kaiepi m: anon sub { say 1 }() 15:00
camelia 1
15:18 lizmat joined, p6bannerbot sets mode: +v lizmat
dogbert17 .seen moritz 15:19
yoleaux I saw moritz 08:33Z in #perl6: <moritz> jjmerelo: done
15:25 vike left 15:29 kurahaupo left
mornfall can i react to a dynamically changing supply? 15:29
15:29 kurahaupo joined
mornfall i'm playing with the IO notifications 15:30
but i would like to add and remove files as they come/go
the problem is mainly stop watching when things disappear
15:30 p6bannerbot sets mode: +v kurahaupo
mornfall i think .merge on a supply kinda does what i want, but there is no unmerge? 15:30
the expression in whenever only seems to be evaluated once, so doing react whenever $watch and then replacing $watch does nothing 15:31
maybe i could forcibly quit watches... hmm 15:32
15:32 vike joined 15:33 p6bannerbot sets mode: +v vike
mornfall maybe not, doesn't seem to be possible to do that without the supplier 15:33
okay migrate might be the one 15:34
though that has builtin data races :( 15:36
15:36 Kaiepi left 15:37 Kaiepi joined 15:38 p6bannerbot sets mode: +v Kaiepi
b2gills You could create a merged supply with the `supply` block which is exactly the same as a `react` block, except that it intercepts `emit` messages 15:44
mornfall yeah i thought about that
but that's not going to cut it either, i think
it's all a little complicated
b2gills m: my $supply = supply { whenever Supply.interval(1) { .emit; last when (2) }; }; react whenever $supply { .say } 15:46
camelia 0
===SORRY!===
1
2
last without loop construct
15:46 aindilis joined
mornfall yes, that's going to be a building block, but i'll have to wrap this up in a class 15:46
15:47 p6bannerbot sets mode: +v aindilis
mornfall method Supply() would be somewhat idiomatic, right? 15:47
b2gills m: say (1,2,3).Supply 15:48
camelia Supply.new
mornfall m: (1,2).Supply.tap( { .say } )
camelia 1
2
b2gills The way we generally do type coercions is with a method of that name 15:49
m: say (1,2,3).Capture
camelia \(1, 2, 3)
b2gills m: class Foo { method Str () { say 'Str method called' }}; ~Foo 15:52
camelia Str method called
WARNINGS for <tmp>:
Useless use of "~" in expression "~Foo" in sink context (line 1)
15:54 kurahaupo left, kurahaupo joined, kurahaupo left, kurahaupo joined 15:55 p6bannerbot sets mode: +v kurahaupo
lucasb do you think would make sense to have recursive coercion types? like Foo(Bar(Baz)) :) 15:57
sub f(Foo(Bar(Baz)) $x) {...} would coerce the Baz argument with the methods 'my Foo $x = arg.Bar.Foo' 15:58
15:58 kurahaupo left, kurahaupo joined 15:59 p6bannerbot sets mode: +v kurahaupo 16:14 kurahaupo left 16:15 kurahaupo joined 16:16 p6bannerbot sets mode: +v kurahaupo
Geth doc: uzluisf++ created pull request #2504:
Whitespace and minor improvements
16:18
16:24 uzl joined 16:25 p6bannerbot sets mode: +v uzl
timotimo prevents the sub from being installed in the lexical pad 16:26
16:27 _uzl joined 16:28 p6bannerbot sets mode: +v _uzl 16:29 __uzl joined, __uzl left, _uzl left, uzl left 16:30 rindolf left
lucasb A minor doc detail, I see 2 styles with regard spacing after period: put one or two spaces after it, "EOL. BOL" vs "EOL. BOL". Should the docs follow one style or another? Is this testable? 16:31
16:31 uzl joined
lucasb I mean, I accept both styles, I'm fine. I don't see as relevant removing extra spaces after periods, IMO. 16:31
16:32 p6bannerbot sets mode: +v uzl
uzl weekly: Haskell to Perl 6 -> news.ycombinator.com/item?id=18625749 16:35
notable6 uzl, Noted!
16:40 domidumont left
mornfall the supply block won't fix my problems 16:57
can i add 'is Supply' on a class and emit stuff that way?
hm
or rather is Supplier?
16:59 _uzl joined, uzl left, _uzl left
Kaiepi uhhh 17:00
zef just nuked half my packages and a good chunk of the project i was working on
timotimo whoa, how did it do that? 17:01
Kaiepi i don't know
timotimo like, it really shouldn't do that :D 17:02
Kaiepi i was pretty well spamming zef install . --force-install because i was having issues fixing a minor bug when it happened
ik i can do perl6 -Ilib, not sure why i wasn't doing it
timotimo yeah but still, how did that nuke things? :o 17:03
17:04 Ven`` joined
Kaiepi i don't know 17:04
17:05 p6bannerbot sets mode: +v Ven``
mornfall the filesystem gave up :p 17:05
(i'm only like 90% joking)
it's not nfs is it? 17:06
timotimo like, the place where it installs stuff is meant to be immutable
so if it just overwrote something with an older version or so, it'll still be there
mornfall yeah, looks pretty hash-y to me
would need to be a major screwup for things to actually disappear
oh! the supply block doesn't need to have whenevers in it 17:09
is it a while loop by itself?
i mean, is supply just an async forever { ... }?
timotimo supply without whenever needs at least emit to do anything :) 17:10
mornfall reads the concurrency page once again
timotimo and it will only do something once it's tapped
mornfall sure, that's fine
my problem is that whenever is too strict
timotimo strict how?
mornfall (in the sense that the whenever guard is evaluated too eagerly for my purposes)
timotimo what do you mean by "whenever guard"? 17:12
17:12 cibs left
mornfall whenever foo() only calls foo() once 17:12
timotimo yes
mornfall it is not re-evaluated after firing
timotimo it's meant to get a supply
mornfall which means that i can't swap the supply
timotimo or a promise
in that case, just have:
sub subscribe-foo { whenever foo { do-the-thing; subscribe-foo } } inside your supply block 17:13
mornfall hmm! tail recursion is optimized away?
17:14 cibs joined, rindolf joined
timotimo not quite 17:14
17:14 p6bannerbot sets mode: +v cibs
timotimo whenever is asynchronous. there is not actually a call stack involved there 17:14
mornfall m: Supply.zip( supply { emit 1; }, Supply.from-list( 1, 2, 3 ) ).tap( { .say } ) 17:15
camelia (1 1)
17:15 p6bannerbot sets mode: +v rindolf
mornfall m: Supply.zip( supply { sub e { emit 1; e } }, Supply.from-list( 1, 2, 3 ) ).tap( { .say } ) 17:15
camelia ( no output )
mornfall m: Supply.zip( supply { sub e { emit 1; e }; e }, Supply.from-list( 1, 2, 3 ) ).tap( { .say } )
camelia ( no output )
mornfall nvm, i'll figure it out
sub inside the supply you say
oh i need whenever inside the sub 17:16
17:16 silug left
timotimo oh, that too 17:16
hm 17:17
17:24 Ven`` left 17:28 silug joined 17:29 p6bannerbot sets mode: +v silug 17:30 kurahaupo left 17:33 kurahaupo joined, Khisanth left 17:34 p6bannerbot sets mode: +v kurahaupo
Kaiepi ok i lost the test module 17:38
how do i install it again?
timotimo that comes from rakudo itself
so just "make install" in rakudo again
Kaiepi i tried rebuilding rakudo and it still isn't available 17:39
timotimo wrong --prefix maybe?
Kaiepi wait i think i'm missing something from my $PATH 17:40
17:40 jw358 left
Kaiepi no, that wasn't it 17:42
i'll try rebuilding rakudo again since i forgot to configure it beforehand from when i was testing stuff
Geth doc: e4d0c13db7 | (Luis F. Uceta)++ | doc/Language/py-nutshell.pod6
Whitespace and minor improvements
17:44
doc: 88b116e8d5 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Language/py-nutshell.pod6
Merge pull request #2504 from uzluisf/master

Whitespace and minor improvements. Refs #2354
17:47 Khisanth joined 17:48 p6bannerbot sets mode: +v Khisanth
mornfall timotimo: i don't think your trick quite works... the old whenever's remain active? 17:49
timotimo yes 17:50
unless you "last" them
17:51 Kaiepi left
mornfall do you mean done? says here using 'last' is an error 17:51
or maybe it's last in supply but done in react
timotimo oh, i thought done would finish the supply rather than the whenever
mornfall you mean last inside the whenever block? 17:52
but the whenever block doesn't know it's getting obsolete :\
timotimo m: react { whenever Supply.interval(0.1) { .say; last if $_ > 4 } }
camelia 0
===SORRY!===
1
2
3
4
5
last without loop construct
timotimo m: react { whenever Supply.interval(0.1) { .say; done if $_ > 4 } }
camelia 0
1
2
3
4
5
mornfall either way says ... exactly that
17:53 Ven`` joined
timotimo m: react { whenever Supply.interval(0.1) { .say; done if $_ > 4 }; whenever Supply.interval(0.2) { say $_ xx 2; done if $_ > 4 } } 17:53
camelia 0
(0 0)
1
2
(1 1)
3
(2 2)
4
5
mornfall and the done shuts the whole supply block indeed
so not a solution either :\
17:53 p6bannerbot sets mode: +v Ven``
timotimo i'm just a little confused here 17:53
17:58 kurahaupo left, kurahaupo joined, leont joined
timotimo i mean 17:59
m: react { my $tap-one = whenever Supply.interval(0.1) { .say; $tap-one.close if $_ > 4 }; my $tap-two = whenever Supply.interval(0.2) { say $_ xx 2; $tap-two.close if $_ > 4 } }
camelia 5===SORRY!5===
Word 'whenever' interpreted as a listop; please use 'do whenever' to introduce the statement control word
at <tmp>:1
------> 3react { my $tap-one = whenever7⏏5 Supply.interval(0.1) { .say; $tap-one.c
Unexpected block i…
17:59 p6bannerbot sets mode: +v kurahaupo
timotimo m: react { my $tap-one = do whenever Supply.interval(0.1) { .say; $tap-one.close if $_ > 4 }; my $tap-two = do whenever Supply.interval(0.2) { say $_ xx 2; $tap-two.close if $_ > 4 } } 17:59
17:59 Ven`` left, p6bannerbot sets mode: +v leont
camelia (timeout)0 17:59
timotimo m: react { my $tap-one = (whenever Supply.interval(0.1) { .say; $tap-one.close if $_ > 4 }); my $tap-two = (whenever Supply.interval(0.2) { say $_ xx 2; $tap-two.close if $_ > 4 }) } 18:00
camelia (timeout)0
timotimo i'm somewhat certain there's something simple to close these taps 18:01
b2gills mornfall: Does knowing that the following works help? `supply { sub foo ($s) { whenever $s { foo($_) }}; foo $a }` 18:02
18:03 tharkun_ left, tharkun_ joined, cherryh.freenode.net sets mode: +v tharkun_, p6bannerbot sets mode: +v tharkun_, tharkun_ is now known as tharkun
b2gills Also I think that `last` inside of a `whenever` shouldn't generate an error 18:03
mornfall sprunge.us/Yqnpg9 this is what i currently have, and it sort of works
but it's really ghastly
timotimo bisectable6: react whenever Supply.interval(0.01) { last }
bisectable6 timotimo, Bisecting by output (old=2015.12 new=dd03014) because on both starting points the exit code is 1
18:03 yqt joined
bisectable6 timotimo, bisect log: gist.github.com/44ee154696be8f7a83...6ebe4f3a8a 18:04
timotimo, (2016-09-27) github.com/rakudo/rakudo/commit/22...0f14b9c05c
18:04 p6bannerbot sets mode: +v yqt
mornfall it also has a race condition and i don't like that :( 18:05
or at least i think it does
timotimo only one whenever inside the supply will ever run at the same time
mornfall sure, but what happens to the events that were never consumed in those supplies? 18:06
timotimo at what point?
mornfall when $watch does a 'done'
then $events gets thrown away and new .watch calls start new supplies
timotimo when you "done", they get dropped; otherwise it would be like "break" in a loop running another two or three iterations just for fun 18:07
mornfall anything unprocessed will be lost
yeah
which means this is not a good solution :\
timotimo mhh
mornfall a supply with no taps will get GCed, right? 18:10
i'll need to manage the taps explicitly 18:11
timotimo if there's no taps and nothing holds on to the variable, it'll get GCd 18:13
18:13 Kaiepi joined 18:14 p6bannerbot sets mode: +v Kaiepi
timotimo supplies from supply blocks have the property that whenever they get tapped, the code in the block runs to set everything up 18:14
well, many supplies act like that, for example server sockets will only listen once they get tapped 18:15
mornfall okay i think i can work with that (and shoving my taps into a map and closing them as needed) 18:19
18:21 random_yanek left
Kaiepi got test installed, but i had to do it manually by making a fake meta6.json file 18:24
b2gills mornfall: I am not sure why you have multi layered `supply` blocks. 18:30
gist.github.com/b2gills/8e0187f873...2e30229c82
18:33 random_yanek joined 18:34 p6bannerbot sets mode: +v random_yanek
mornfall b2gills: never mind that, i'm rewriting it with explicit taps 18:35
b2gills Show me when your done. I'll show you how it could be re-written in terms of `supply` 18:36
Kaiepi is there a way to strip out ansi escape codes from the output of Proc::Async? 18:37
timotimo i think Terminal::ANSIColor has a function to strip output of codes? 18:38
hopefully more than just color
Xliff If I have the following nativecall def: sub a(&func:(int32, Pointer)) { * }, what's the best way to set &func to NULL? 18:40
timotimo probably call it with "Callable"?
Xliff Ah!
18:40 zakharyas joined
timotimo ask it what exact type it has, maybe it needs to be Callable[something] 18:40
Xliff How are you doing, timotimo? 18:41
18:41 p6bannerbot sets mode: +v zakharyas
timotimo i'm okay, how about you? 18:42
mornfall b2gills: sprunge.us/a425r1 knock yourself out... (this version presumably leaks filedescriptors like crazy, or elsewise doesn't work so well, but it's much clearer what's going on to me) 18:45
(i'm trying to debug, without much luck yet) 18:46
b2gills You could have `has Supplier $.supplier .= new;` 18:48
mornfall yeah i never did objects before sorry 18:49
Xliff timotimo: Glad to hear it! I'm getting over a cold, otherwise not too bad.
mornfall yeah the $ich.taps{ $root } is really a funny typo, never mind that :p 18:50
timotimo ugh, colds are really annoying
mornfall i mean it's funny because it compiles just fine
i just stopped writing mid-line and forgot about it
El_Che The latest Rust release may be interesting for some people here: hacks.mozilla.org/2018/12/rust-2018-is-here/ (e.g., their release strategy) 18:57
mornfall async/await 19:00
i'm living in a perpetual state of déjà vu
El_Che reservation of keywords, not yet implementation if I understand it correctly
19:01 abraxxa joined 19:02 p6bannerbot sets mode: +v abraxxa
timotimo why is perl6 still the only language that has await 19:03
El_Che ?
I thought it's pretty common? 19:04
JS, C#
timotimo no, JS has async/await
i think it's the same with C# maybe?
19:04 pmurias_ joined, p6bannerbot sets mode: +v pmurias_
mornfall timotimo: python has await too 19:05
19:05 abraxxa left
timotimo it looks like it also only has async/await 19:05
mornfall i probably don't know what you mean by await 19:06
timotimo well
when you add an async, do you have to also add a five thousand line patch adding "async" to about fifty different files?
mornfall async def can call normal routines 19:07
await is for calling async defs 19:08
so if you turn a def into an async def, all its callers need to be async too
pmurias_ mornfall: what timotimo was asking why aren't all functions async as in perl 6
timotimo it's like python's generators 19:09
you can't easily "yield" in a function you want to have called by an "oblivious" function
mornfall pmurias_: in perl6 not all functions are async? what do you mean by a function being async?
timotimo i mean, python has a "functional programmers keep out" attitude, so it's not as bad i guess
pmurias_ mornfall: functions aren't async by default in js 19:10
mornfall pmurias_: function calls are synchronous by default in just about everything
pmurias_: an async function call is just 'start'?
pmurias_ mornfall: async as in 'async function foo() {...}' 19:11
mornfall pmurias_: what's 'async function foo()' though?
sorry i don't speak js
Ulti I can attest to async def/await in Python being miserable to work with
timotimo it's "a function you are allowed to call await in, or call async functions from"
mornfall well, not anything newer than circa 2000 :p
Ulti my current contract work is all asyncio and its terrible 19:12
and makes me realise Rakudo and Perl 6 actually have huge value if people think the Python implementation is "cool"
mornfall Ulti: come on, it's okay? compared to node 'callbacks are nice' js
Ulti: the value in async def is that it's really hard to write a data race with it 19:13
Ulti its awful just my one test with the aiohttp test server broke 90 other tests
mornfall Ulti: and if you do, it's easy to fix
Ulti because it closed all of the threads
mornfall what threads :D
there's no threads in asyncio :p
pmurias_ mornfall: node.js has async/await nowadays
Ulti because thread management is totally craptastic combined with asyncio
mornfall: sure there is if you want them
mornfall Ulti: of course, python and threads don't mix
Ulti: i guess at your own peril at best 19:14
Ulti working out where and when to async is also really annoying you just have loads of trouble knowing for sure something is still concurrent or not
mornfall it's really very unsupported
Ulti its very supported
19:14 pmurias left
Ulti in the core of the language so not sure what you're saying 19:14
19:14 pmurias_ is now known as pmurias
Ulti its as supported as Perl 6 supports it 19:14
but its just really hard to use and reason about and feels utterly hacked on 19:15
mornfall Ulti: in perl6, async is based on threads... in python it's coroutines
timotimo in perl6.d it's also coroutines, partially
when you "await", a continuation is taken and the thread in the pool is freed up to do another task
19:16 Sgeo_ joined
mornfall timotimo: yes, but there is actual parallelism out of the box 19:16
which has its upsides and downsides
19:17 p6bannerbot sets mode: +v Sgeo_, pmurias left
Ulti mornfall I've so far not come across any asyncio code that wasnt also using ThreadPoolExecutor 19:18
which is basically the same as Perl 6 really
19:18 Sgeo left
Ulti is react/whenever as an idea unique to Perl 6 or has that been borrowed? 19:20
because I think having a nice event loop syntax helps a lot
timotimo Ulti: can you tell me why i'm imagining there's "last" support in whenever blocks? 19:21
19:21 abraxxa joined, pmurias joined, p6bannerbot sets mode: +v pmurias 19:22 p6bannerbot sets mode: +v abraxxa
Ulti because there is? or something like it, might have another name 19:22
pmurias timotimo: I would guess async/await are used a pair in other languages becuase they where added latter on
timotimo: and it made sense to have a distinction between the async part
Ulti if you mean phaser rather than like break
mornfall Ulti: okay i can't find the docs in question, but #python repeatedly told me to absolutely never use threads, especially not with asyncio :p i originally assumed that the asyncio event loop would dispatch to a thread pool, because that's the obvious thing to do 19:23
Ulti its done inside react/whenever to escape out
19:23 pmurias_ joined, p6bannerbot sets mode: +v pmurias_
mornfall Ulti: though there's GIL, so i don't think you can get too much parallelism out of a thread pool unless you call into C a lot 19:23
Ulti mornfall: docs.python.org/3/library/concurre...olExecutor
mornfall Ulti: yes i went through the docs again, i'm sure it mentioned "don't ever use threads unless you absolutely can't avoid blocking IO, but don't use it anyway" kind of thing :p 19:24
Ulti welcome to Python not 2.7 if only everyone would switch >:3 where have I heard this before
timotimo Ulti: yeah, LAST exists, but not last for some reason
Ulti timotimo: yeah its `done` ?
timotimo that kills the whole supply/react blokc 19:26
abraxxa .round(0.1) doesn't do what the docs say
I still get a number without any digits after the comma
Ulti timotimo: yeah 19:27
timotimo oh
Ulti so you mean just stops the whenever from being a thing?
timotimo i guess you could throw an exception in the whenever and CATCH { when KillWhenever { } } it in the supply thing?
yeah
like as if the source had "done"d
abraxxa it's a Rat I get back from round
mornfall Ulti: the remark was removed from 3.7 docs... 3.6 asyncio page says: „an interface for passing work off to a threadpool, for times when you absolutely, positively have to use a library that makes blocking I/O calls.“
Ulti: docs.python.org/3.6/library/asyncio.html 19:28
Ulti guess its good marketing to remove it and make everyone beliece your language can actually do that functionality easily...
mornfall Ulti: there are also multiple remarks in 3.7 library docs that most of asyncio is not threadsafe
Ulti its fine most people immediately break the concurrency and block anyway 19:29
thats why they all use the threads :D
mornfall it's stupid :p
i'm pretty sure asyncio was designed to run in a single thread 19:30
Ulti print('getting here 2016') WHOOOPS
mornfall *but* if you stick to a single thread and can keep your latencies reasonable, it works okay
Ulti yeah, my current contract is a fairly /interestng/ bespoke and abstract request framework 19:31
mornfall OS threads are a lot of trouble
Ulti it would be cool if it wasnt a little insane
it abstracts kafka and http :D
I should really poke at cro and see how easy it would be to add other protocols to it 19:32
mornfall timotimo: well, each whenever is a separate tap right? 19:33
timotimo aye
mornfall timotimo: if you could do my $foo = whenever ..., then you would be able to $foo.close :)
timotimo you can get the tap object, too
i thought so, too. except it didn't work when i tried it
mornfall interesting
anyway, back to my real problems... Unhandled exception in code scheduled on thread 4: no such file or directory 19:34
how do i get a backtrace from this? :(
timotimo you can overwrite the unhandled exception handler in the ThreadPoolScheduler, i think? 19:35
mornfall oh dear :)
$*SCHEDULER?
yeah that prevents the crash but i would also like where it came from :\ 19:36
Ulti another option is to try a fail instead of a throw maybe?
19:36 pmurias left, pmurias_ left
mornfall Ulti: it apparently originates in the bowels of rakudo 19:36
Ulti oh right
mornfall i don't think it has a backtrace attached :\ .say and .payload just say 'no such file or directory' and that's that 19:37
timotimo you'll get the exception object, it has a backtrace, hopefully
mornfall please tell me it's not coming from nqp
timotimo oh?
nqp also has exceptions that can have file/line no
worst case, perl6-gdb-m, break the line that does MVM_exception_throw_adhoc with the string in question, when it breaks do MVM_dump_backtrace(tc) 19:38
mornfall nope, no MVM_exception_throw_adhoc involved 19:41
timotimo it could be directly sending an uv_errstr or what it's called on 19:42
or did you break on MVM_exception_throw_adhoc itself?
mornfall it's not perror or strerror_r either
yes i did a break on that
timotimo ah, another thing to try is to pass --ll-exception to perl6
mornfall uv_strerr(_r) not involved either :\ 19:43
19:44 graphene left
mornfall (they are involved in other places though, along with MVM_exception_throw_adhoc, so the breakpoints work) 19:44
19:45 graphene joined 19:46 p6bannerbot sets mode: +v graphene
b2gills mornfall: I'm not sure why you are re-tapping, so I didn't do that. Anyway I think something like this would work (untested) gist.github.com/b2gills/8e0187f873...2e30229c82 19:46
mornfall b2gills: without retapping it's useless though... that's the whole point of the exercise? 19:47
b2gills: i mean, the idea is that if the file is replaced by another file, you need to .watch the new file 19:48
it's not watching by name
it opens the file and holds an inode reference 19:49
b2gills The taps are in %taps, so just call %taps{$path}.close
It will run the `LAST …` in the `whenever` 19:50
mornfall well i have two problems right now... one is that exceptions come from somewhere and i can't locate the source, the other is that .watch opens a descriptor and i don't know how to get rid of it 19:51
19:52 pmurias joined, p6bannerbot sets mode: +v pmurias
mornfall waiting for the GC turns out to be a bad strategy 19:52
19:52 pmurias_ joined, p6bannerbot sets mode: +v pmurias_
mornfall b2gills: alse your perl5 habits are leaking? $taps{$path} :) 19:54
b2gills I would like to note that `supply {…}` is actually a bare block `{…}` with the statement prefix operator `supply` (at least notionally) 20:01
mornfall cool, i crashed gdb :(
20:01 xlat left, graphene left 20:03 graphene joined
buggable New CPAN upload: PDF-ISO_32000-0.0.2.tar.gz by WARRINGD modules.perl6.org/dist/PDF::ISO_320...n:WARRINGD 20:03
20:03 p6bannerbot sets mode: +v graphene 20:04 pmurias left 20:05 pmurias joined, p6bannerbot sets mode: +v pmurias 20:06 pmurias left, pmurias_ left 20:08 pmurias joined, p6bannerbot sets mode: +v pmurias, Marcool joined 20:09 p6bannerbot sets mode: +v Marcool
Marcool Hi all, is there a way to parse the output of "dir" so that special characters (for example: é), don't show up as codepoints, such as: "e􏿽xCC􏿽x81")? 20:09
20:10 pmurias_ joined, p6bannerbot sets mode: +v pmurias_
Marcool These are files created by Finder on a macOS system… 20:11
El_Che is't it a terminal thing? 20:12
Marcool Strangely, if I do run("touch", 'é'); then my @files = dir, I have the unicode character in @files.gist…
El_Che: I don't know…
using iTerm with (usually) very good unicode support
no ssh involved or anything 20:13
El_Che when on osx I use iterm2, I remember some weird stuff with the normal terminal
mm
I don't have a mac handy to test is
Marcool El_Che: no pb, I'm just testing different things. The issue happens when I create the file or folder with Finder, then use dir, it garbles the name. If I create the file in the terminal or using perl6, it's fine when listed… 20:14
El_Che Marcool: in the same dir? (e.g. not one on hfs+ the other on AFS) 20:16
Marcool hum, no I'm testing all those different methods on same AFS disk 20:19
(in the same folder even)
El_Che ok
20:19 pmurias_ left, pmurias left
El_Che so "ls -al" gives utf8 output in the terminal for those finder files? 20:20
20:20 pmurias joined, p6bannerbot sets mode: +v pmurias
Marcool El_Che: here is a better illustration: framabin.org/p/?2c11cf4449213e7c#q...i/5FfhbnU= 20:22
El_Che: yes to the ls -al (my ls is aliased to gls --color -lah) 20:24
El_Che file -I file
file -I é
file -I tmp
20:25 pmurias_ joined, p6bannerbot sets mode: +v pmurias_
Marcool El_Che: "file -I é 20:25
é: inode/x-empty; charset=binary"
Same when created via Finder
and same for file -I tmp
El_Che and "$ locale" gives you all UTF-8? 20:26
Marcool El_Che: yup :/
en_US.UTF-8 all the way 20:27
El_Che I am looking at this ticket that sound similar: hacks.mozilla.org/2018/12/rust-2018-is-here/
oops
github.com/vgough/encfs/issues/316
that one
it's about EncFS, but they mention NFD normalization 20:28
or this one: github.com/gohugoio/hugo/issues/4853 20:29
Marcool ahah, yeah I see what you're getting at, this comment sounds informative: github.com/vgough/encfs/issues/316...-299574065
20:30 nige_ left
El_Che Marcool: there are pretty knowledgable people about utf8 here in the channel 20:30
stick around :)
Marcool El_Che: sure :) will do 20:31
do you think this UTF8-MAC
might be the issue?
El_Che eclecticlight.co/2017/07/05/high-s...relenting/
Marcool Damn that's a depressing read (even cursory)! 20:32
El_Che gitlab.com/gnachman/iterm2/issues/5469 20:33
Marcool p6: say "e􏿽xCC􏿽x81".decode('UTF8-MAC').Str 20:35
camelia No such method 'decode' for invocant of type 'Str'. Did you mean 'encode'?
in block <unit> at <tmp> line 1
Marcool p6: say "e􏿽xCC􏿽x81".encode('UTF8-MAC').Str
camelia Unknown string encoding 'UTF8-MAC'
in block <unit> at <tmp> line 1
Marcool ah, that solves that…
El_Che Marcool: www.iterm2.com/documentation-preferences.html <-- play with the preferences there and see if it's better 20:36
Marcool El_Che: there is an option to select a normalization, NFC or NFD of HFS+ but they don't make any difference to perl6, the terminal (like, when using ls) is rendering the caracter fine 20:38
it's the perl6 -e "say dir.Str" that mushes it
it's really in the dir routine/method I think, cos I can match the file name with unicode "é" for instance in the perl6 code 20:39
but the when I "dir" I get a messed up representation of the file name
I could probably fix this with a dump 'run("ls", :out)' or 'run("find", :out)' 20:40
El_Che Marcool: could you open an issue. it looks like something interesting for the urf8 people (and the core devs using macos)
Marcool El_Che: sure, can you point me to the right place?
rakudo on github?
El_Che yes
github.com/rakudo/rakudo/issues 20:41
mornfall can i explicitly destroy an object? 20:42
okay the fd leak is in moar :( 20:43
so destroying anything won't help
20:44 nige_ joined 20:45 p6bannerbot sets mode: +v nige_, graphene left 20:47 graphene joined
mornfall can i force a collection? there's a GC handler for the object in moar, it just doesn't close the fd 20:47
20:47 dogbert11 joined
mornfall (i probably can't test if that works without forcing collections quite often) 20:47
20:47 p6bannerbot sets mode: +v graphene 20:48 p6bannerbot sets mode: +v dogbert11 20:50 dogbert17 left
Marcool El_Che: ok, issue submited: github.com/rakudo/rakudo/issues/2528 20:52
El_Che Marcool++
Marcool El_Che: thanks for helping to look around this issue!
Must run now, all the best!
:)
El_Che will have a look on a mac, soonish :)
20:52 Marcool left 20:53 pmurias left 20:54 pmurias_ left 20:56 graphene left 20:57 graphene joined 20:58 p6bannerbot sets mode: +v graphene
ufobat_ how do i get the long form of a class name? .WHAT gives the short form, right? 20:58
21:00 sena_kun left 21:01 sena_kun joined, sena_kun left 21:02 quester joined, p6bannerbot sets mode: +v quester 21:04 abraxxa left, ufobat_ left
Xliff Has anyone seen this error using zef, before: No such method 'payload' for invocant of type 'X::Parameter::InvalidConcreteness' 21:05
I get it with 'zef install --deps-only .'
ufobat: .^name
m: class A::B { }; my $ab = A::B.new; say $ab.^name 21:06
camelia A::B
21:06 ufobat_ joined
Xliff ufobat: .^name 21:07
m: class A::B { }; my $ab = A::B.new; say $ab.^name
camelia A::B
21:07 p6bannerbot sets mode: +v ufobat_
ufobat_ Xliff, thx :) 21:09
Xliff Is this supposed to happen?
$ zef install --deps-only .
No such method 'payload' for invocant of type 'X::Parameter::InvalidConcreteness'
mornfall anyone understands the AsyncType repr things? SocketCancellation, TimerCancellation, FileWatchCancellation?
they don't seem to do anything at all, other than stand in for the AsyncTask?
timotimo that is correct 21:11
they are there to be passed to nqp::asynccancel or whatever it's called
mornfall that's the crucial bit i was looking for
(how to trigger the cancel() op on AsyncTask) 21:12
masak I just wanted to say it here again, even though I've pointed it out once before, because it's so freaky: 21:15
21:15 kerframil left
mornfall i have problems following the cancel_notify_queue code :\ 21:16
masak the corner case between macro injection and custom operators with precedence levels means you can have operators that *don't have comparable precedence*
mornfall is interp.c seriously a 6000 line switch? :( 21:17
El_Che mornfall: maybe you'll have more luch in #perl6-dev or #moarvm 21:20
mornfall timotimo: hmm, i don't think you can do that though... nqp::watchfile (and the rest of the family) take the type as a parameter... oh, but they return the object... which rakudo promptly throws away
timotimo yeah, if you want to cancel, you'll have to catch that 21:21
it could very well be, though, that it gets passed to the callbacks
21:21 success joined 21:22 success is now known as Guest46388
mornfall yes, i think i understand how it works now, i need to find a place to put the nqp::cancel though 21:22
timotimo you're working with a tappable, right?
it has a callback for when the tap is closed
21:22 p6bannerbot sets mode: +v Guest46388
mornfall (and actually add an implementation of cancel to the watchfile task) 21:22
timotimo: it's a normal Supply in IO::Notification, derived from a Supplier 21:23
masak but don't worry! unquoted operators will be counted as maximally loose, by Ven++'s argument here: github.com/masak/007/issues/334#is...-433910876
Xliff mornfall: Wow! You're right. Is there a better way to implement that though? 21:24
mornfall timotimo: do you mean i should call on-close on the Supply that watch-path returns?
Xliff Function dispatch table?
timotimo not entirely sure 21:25
mornfall timotimo: well, i'll figure it out, i'll start with patching through the task object into userland so i can nqp::cancel it manually 21:26
um, can i have output parameters? :D
timotimo "is rw" will do it 21:27
21:28 SqrtNegInf left
SmokeMachine Maybe what Marcool found is the reason why t/spec/S32-str/utf8-c8.t is broken on my Mac... 21:31
21:37 nige_ left 21:38 sena_kun joined, p6bannerbot sets mode: +v sena_kun
mornfall timotimo: am i supposed to put results of nqp::* into \variables? nqp::cancel doesn't like my scalar 21:41
lucasb I just read the issue, I'm trying to understand... so, if a "é" file is created in the shell, dir() returns ok, if it's created in mac's file manager, then it returns mangled?
mornfall oh, i can use a scalar but i have to use :=
but there isn't a 'bind-return' is there? 21:42
timotimo no 21:43
return-rw is for returning a scalar without decontainerizing the contents
mornfall or an unboxed tuple?
timotimo by tuples you mean..? 21:44
mornfall multiple return values
where the items would be binds
although
timotimo from nqp to nqp or from nqp to rakudo?
mornfall mabye nqp::decont will work 21:45
timotimo: in rakudo 21:46
timotimo ok, more like: user-facing or internals-facing? 21:47
mornfall (fwiw, decont doesn't help)
timotimo: oh, i'm just throwing things around for testing... the cancellation object shouldn't pass out of rakudo stdlib if i get it to work 21:48
timotimo in that case you can put the two things into an nqp::list(..,..)
mornfall *but* i managed to call through into the cancel handler i put in moar from inside stdlib, so things are progressing 21:49
is there a way to build rakudo in pieces, instead of rebuilding the CORE.setting blob? takes 2 minutes :\ 21:53
(i know, i need to get a faster computer...) 21:54
(it'd be an okay time if i knew what i was doing, which i don't)
21:55 DarthGandalf joined, p6bannerbot sets mode: +v DarthGandalf
timotimo you can copy-paste the code you're working on into a file and use that 21:55
Xliff What's the best way to specify native dependencies in META6.json? 21:56
timotimo worst case, just put your code in the existing classes via .wrap
Xliff "libname:from<native>" throws errors in zef
mornfall timotimo: good thinking, thanks 21:58
this also unmasked the origin of the 'no such file or directory', incidentally
\o/ it's worky 21:59
timotimo better worky than wonky
mornfall i no longer run out of descriptors after 10 seconds 22:00
okay now let's make this into patches
22:02 rindolf left, graphene left 22:04 atweiden-air joined, graphene joined, p6bannerbot sets mode: +v atweiden-air 22:05 p6bannerbot sets mode: +v graphene
timotimo BBL, cooking and such 22:05
22:06 kurahaupo left 22:07 kurahaupo joined, p6bannerbot sets mode: +v kurahaupo
mornfall can someone quickly remind me how i create a remote branch with git push? :\ 22:18
sena_kun git push origin my-new-branch? 22:19
22:19 zakharyas left
mornfall yeah turns out i'm on the wrong branch locally, sorry 22:19
sena_kun :) 22:20
mornfall *phew* 22:21
lizmat: /o\ mea culpa 22:30
22:31 wbn left 22:34 wbn joined 22:35 p6bannerbot sets mode: +v wbn 22:38 atweiden-air left 22:44 Ven`` joined 22:45 p6bannerbot sets mode: +v Ven``
masak mornfall: shouldn't matter which branch you're on when you push with `git push origin <branch-name>` 22:48
22:50 ufobat_ left
mornfall masak: yeah i only got up to origin 22:50
got a puzzling error message
you get a much better error message when you are on the right local branch :p
somehow it always bites me that creating a branch doesn't switch to that branch 22:51
i feel like i have to type in million commands to achieve really simple things :\ i'm more used to darcs than to git
El_Che git checkout -b newBranch 22:52
masak was gonna say
mornfall oh that... i knew there was a command for that? or vaguely remembered
masak I taught git earlier this week. our introduction course.
mornfall i used to use git more often you see
masak I mentioned *specifically* that I don't use `git branch <new-branch>` to create branches 22:53
mornfall but it was always painful :\ i much prefer systems with first-class changesets/patches instead of the branchy git approach
masak I use `git checkout -b <new-branch>`
sena_kun masak, `checkout -b` instead?
masak aye
sena_kun oh, goodness. :)
masak also, I made a git-upstream binary, because I got tired of re-typing the branch name just to push it up to `origin` :P 22:54
highly recommended
also, I have a custom branch visualization tool, which sorts my local branches in last-modified order, and shows ahead/behind information just like github does
frankly, I could give a one-day course just about the environment I've set up to make myself effective with git 22:55
mornfall yeah, it's a really sad state of affairs :p 22:56
masak I disagree
El_Che masak: vignette.wikia.nocookie.net/simpso...0516184134
masak what it is is a tool that invites customization
22:56 Sgeo_ left
masak El_Che: ;) 22:56
mornfall what, that it would take a day to just explain all the hacks you need on top of 'the' version control tool to be productive? yes, that's just sad 22:57
masak again, I disagree
I still think Git is better than all its predecessors and its modern-day competitors. it just happens to have a non-perfect UI by default
El_Che it does a lot more 22:58
masak the metaphors Git uses in its model are quite neat. no complaints there. the CLI subcommands are sometimes... lacking. unfortunate.
I used to be a big fan of `git stash`. this time when I taught it, I noticed that my habits have changed, and I use named branches for the same thing. half a year ago I might not have noticed that. 22:59
(named branches are a lot more visible than saved stashes)
22:59 Sgeo joined
El_Che my usage of stash is pretty much "damnit" followed by "git stash drop" 23:00
23:00 p6bannerbot sets mode: +v Sgeo
mornfall you know, if you could have unnamed branches and refer to them by fragments of commit messages that live on them, that'd be something :p 23:01
masak I'm sure that can be arranged
Kaiepi iirc mercurial isn't that bad 23:02
mornfall sure, but it's probably a day of programming
well, to me, many people's relationship to git seems a lot like stockholm syndrome :-) 23:03
also, i have to watch poor students fight it out with git... it's sad (and there's basically nothing i can do... i tried explaining the data model, but it doesn't help)
masak I'm Swedish, and I hate it when people invoke "Stockholm syndrome" on all kinds of IT stuff :/ 23:04
El_Che you don't need a lot of git knowledge to be productive
masak what they mean is usually "you've gotten used to this tool, and so you can't evaluate its negatives"
mornfall masak: which is not what i mean... people get upset when you say something bad about git 23:05
masak that might well be. I don't mean to be dogmatic about it. in the end it's just a tool. 23:06
El_Che masak: the .be governement (that fell today, good riddance) called themselves the "Swedish coalition": blue for liberals, yellow for nationalist populists and the cross for christian-democrats :)
masak I was an avid SVN user before I started using Git. Git fits my brain. I see a correlation between Perl programmers and Git users, too.
mornfall oh, belgium is without a government again? :-)
masak: remember svk?
El_Che we have a minority one now
mornfall i used svk
masak mornfall: I do remember it. 23:07
it was a proto-git in some ways, like cassette tapes
El_Che the populists saw an opportunity to set the agenda for the elections in may and stepped out. We'll be allright :)
mornfall masak: there's been half a dozen protogits before git
masak aye, most likely
El_Che svn is indeed pretty close
except when you're on a train 23:08
masak there was a power vacuum there, and Git hit the spot
mornfall masak: i'm fairly sure it was github that did it, not git
you barely see any git repos outside of the linux kernel, github and gitlab
El_Che mornfall: that's a weird statement 23:09
I think most people/companies repos are git today
masak mornfall: I respectfully disagree
El_Che there are lots of tooling for git
masak I mean, Github has been instrumental in Git's success and spread, but Git was already succeeding before Github
El_Che gitea, gitlabn ...
mornfall El_Che: the faculty gitlab instance went down for a few hours, and there was a clear sense of panic because obviously you can't get work done without gitlab running? 23:10
El_Che probably pipelines or other CI pieces?
mornfall El_Che: no, it wasn't even for code, just text
masak people depend on a centralized point in a decentralized system; news at 11 23:11
El_Che we use git with gitea as a webinterface, linked with Jenkins for CI en Artefactory for artefact (e.g. Docker images)
pretty sweet
however, I can perfectly work on the train without network on my local checkouts
mornfall i really don't remember cloning a git repo from a place other than hosted in one of those three systems... maybe glibc from sourceware.org? 23:12
i'm not saying people don't do that, but github is just huge
i also only see public stuff... in-house, the picture may well be different 23:13
El_Che even older projects that use svn for ever seem to have moved to git (like openldap) or present git mirrors 23:14
Kaiepi openbsd uses cvs 23:17
mornfall the thing that git doesn't solve (and delegates) that's pretty crucial is pull requests, or rather how people exchange patches... git send-email isn't that popular; this is much easier in a closed team of course, people just come to me and tell me 'i did some work, please pull' ... but this is the piece that github provides
you could probably do it through a bug tracker, but then everyone needs a public address for their git repo, etc. 23:18
masak indeed, and I've gradually started talking more about PRs and PR workflows in my teaching as well
it feels like the natural continuation to "here are the Git commands, here's how you use Git" 23:19
El_Che indeed, that's one of the reasons we're moving to gitea from redmine
PRs are very useful
mornfall unfortunately, the success of github prevented a distributed solution of both issue tracking and patch exchange :\ 23:21
Kaiepi i find it can be difficult to plan serious projects on github 23:22
23:22 kensanata joined, p6bannerbot sets mode: +v kensanata
Kaiepi it's easier just to rely on other services to do it 23:22
mornfall (i sometimes wonder if github one day follows sourceforge :p the first tiny hints that facebook might follow myspace are already there, even though the scale of the thing is completely different) 23:24
(but yeah, we veered way off topic...)
El_Che mornfall: what? We haven't mentioned Microsoft yet :) 23:25
mornfall (also, can i have my geocities webrings back now? thx :p)
timotimo anyone try fossil yet? 23:26
mornfall i think i fired up an instance for a few minutes once 23:27
Kaiepi what's fossil? 23:28
El_Che en.wikipedia.org/wiki/Fossil_(software)
timotimo old and dusty
mornfall fossil-scm.org
Kaiepi oh lol
El_Che Initial release2006; 12 years ago
mornfall it's neither old nor dusty :-)
El_Che not *that* old
mornfall latest commit is 2 days ago
and that's only because i just crossed midnight 30 minutes back 23:29
i can't bring myself to trust sqlite with anything important 23:30
El_Che fossil-scm.org/index.html/dir?ci=tip <-- if that is the code view, I am not impressed
timotimo aren't they the champions of reliability?
mornfall El_Che: look at the timeline, that's quite okay 23:31
23:32 Ven`` left
mornfall the interesting thing about fossil are that it has distributed everything... afaict even the forum is part of the normal distributed repo 23:32
Kaiepi at least they made their makefiles compatible with bsd make 23:34
mornfall but a database which by default ignores foreign constraints and which happily loses data when placed on nfs... doesn't inspire confidence in me 23:35
bdb is another of those things that's supposed to be resilient, but subversion nearly died due to bdb unreliability 23:36
El_Che mornfall: haven't you moved to hdb? 23:38
mornfall hdb? 23:39
(if that's re svn, i only remember fsfs?)
23:40 rfold left 23:41 Cabanoss- left, sena_kun left 23:42 Cabanossi joined 23:43 p6bannerbot sets mode: +v Cabanossi