»ö« 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: "exCCx81")? | 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 "exCCx81".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 "exCCx81".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
|