00:27
hungrydonkey joined
00:46
cognominal joined
01:34
sena_kun left
01:49
sena_kun joined
02:08
Xliff left
03:34
sena_kun left
03:47
sena_kun joined
04:40
epony left
04:47
epony joined
05:34
sena_kun left
05:35
hungrydonkey left
05:38
hungrydonkey joined
05:51
sena_kun joined
05:58
hungrydonkey left,
hungrydonkey joined
05:59
hungrydonkey left
06:00
hungrydonkey joined
06:01
hungrydonkey left
07:34
sena_kun left
07:48
domidumont joined,
sena_kun joined
08:04
epony left,
hungrydonkey joined
08:07
hungrydonkey left
08:09
hungrydonkey joined
08:13
hungrydonkey left
08:14
hungrydonkey joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | Files=1302, Tests=111141, 236 wallclock secs (31.62 usr 9.57 sys + 3185.71 cusr 320.96 csys = 3547.86 CPU) | 08:14 | |||||||||||||||||||||||||||||||||||||
hmmm...second day in a row this high? | |||||||||||||||||||||||||||||||||||||||
08:15
epony joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | ah, no, pebkab | 08:16 | |||||||||||||||||||||||||||||||||||||
08:17
hungrydonkey left
08:18
hungrydonkey joined
08:20
hungrydonkey left,
hungrydonkey joined
|
|||||||||||||||||||||||||||||||||||||||
sena_kun | releasable6: status | 08:24 | |||||||||||||||||||||||||||||||||||||
releasable6 | sena_kun, Next release in ≈5 days and ≈10 hours. 3 blockers. 0 out of 215 commits logged | ||||||||||||||||||||||||||||||||||||||
sena_kun, Details: gist.github.com/227b7e905f79e4304a...016b0ab5d6 | 08:25 | ||||||||||||||||||||||||||||||||||||||
nine | Re-posting here, so it will also show up in the log search: | 08:29 | |||||||||||||||||||||||||||||||||||||
Whenever the contents of any of the repositories in the $*REPO chain changes (i.e. installing or uninstalling a module or changing source code in a -I or $PERL6LIB directory), this could mean that a precompiled file needs an update. | |||||||||||||||||||||||||||||||||||||||
To check whether we really need to compile, we need to resolve the dependencies again, i.e. get from Foo::Bar to the actually resolved full name Foo::Bar:auth<me>:api<1>:ver<0.1.2>. | |||||||||||||||||||||||||||||||||||||||
Resolving such dependencies involves EVALing the dependency specification serialized into precomp files to get to an actual object. EVAL is slow because our compiler is so darn slow. | 08:30 | ||||||||||||||||||||||||||||||||||||||
Since EVAL is so slow (and resolving a DependencySpecification is not exactly free either) we really only want to do that if a repository actually changed. | |||||||||||||||||||||||||||||||||||||||
So when we do actually resolve dependencies, we also save the full contents of all active repositories in the form of a SHA hash into a .repo-id file accompanying the precomp file. | |||||||||||||||||||||||||||||||||||||||
I.e. precompilation itself saves (purely made up numbers) about 80 % of the time and the .repo-id files save some 19 % and we only actually have to pay 1 % when nothing happened in the repositories. | |||||||||||||||||||||||||||||||||||||||
So yes, it's perfectly safe to delete .precomp dirs containing just .repo-id files. Deleting .precomp (not "precomp" without the period) is always safe, you will just pay for it by waiting longer. Or not in the case of the errantly created ones. | |||||||||||||||||||||||||||||||||||||||
Btw. in case other precomp/module loading related questions comp up and I'm not around: while I suck at writing tests, I really try to document the full reasoning behind whatever I do in my commit messages. So reading the git history of the stuff I wrote will tell you the whole story. | 08:31 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 1a6f83c6af | (Elizabeth Mattijsen)++ | 2 files Rename $!storage to $!eigenstates in Junction This has bothered me for years: $!storage is typically the name that is being used for hash-like structures, and at least in the current implementation of Junctions, the eigenstates are *not* stored in a hash. So change the name to the more descriptive '$!eigenstates`, also to prevent false positives when searching the Rakudo code base for '$!storage`. |
08:49 | |||||||||||||||||||||||||||||||||||||
08:51
jmerelo joined
|
|||||||||||||||||||||||||||||||||||||||
jmerelo | m: say % .classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | 08:51 | |||||||||||||||||||||||||||||||||||||
camelia | {even => [0 2 4 6 8], odd => [1 3 5 7 9]} | ||||||||||||||||||||||||||||||||||||||
jmerelo | What would you call this? "Bare sigil" syntax? "Sigil-as-context"? | 08:52 | |||||||||||||||||||||||||||||||||||||
It's not documented, BTW. That's why I ask. | |||||||||||||||||||||||||||||||||||||||
m: say @ .push: "papers" | |||||||||||||||||||||||||||||||||||||||
camelia | [papers] | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: say .push: "papers" | ||||||||||||||||||||||||||||||||||||||
camelia | [papers] | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: say @.push: "papers" | 08:53 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable @.push used where no 'self' is available at <tmp>:1 ------> 3say @.push: "papers"7⏏5<EOL> |
||||||||||||||||||||||||||||||||||||||
jmerelo | m: say .classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | ||||||||||||||||||||||||||||||||||||||
camelia | No such method 'classify-list' for invocant of type 'Any' in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | .tell timotimo after 1a6f83c6af I forgot to change direct attribute in the Optimizer, but it did *not* trigger any spectest/ make test failure! | 08:57 | |||||||||||||||||||||||||||||||||||||
linkable6 | (2020-02-17) github.com/rakudo/rakudo/commit/1a6f83c6af Rename $!storage to $!eigenstates in Junction | ||||||||||||||||||||||||||||||||||||||
jmerelo | I guess sigil-as-context is the thing. Maybe document it within contexts... | 08:59 | |||||||||||||||||||||||||||||||||||||
m: $_ = "a"; say .succ | 09:01 | ||||||||||||||||||||||||||||||||||||||
camelia | b | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: $_ = "a"; say $ .succ | 09:02 | |||||||||||||||||||||||||||||||||||||
camelia | No such method 'succ' for invocant of type 'Any'. Did you mean 'sum'? in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
jmerelo | m: $_ = "a"; say @ .succ | ||||||||||||||||||||||||||||||||||||||
camelia | No such method 'succ' for invocant of type 'Array'. Did you mean any of these? sec sech sum uc in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
jmerelo | Hum | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 911cac4e95 | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp Fix missed rename of Junction attribute The fact that this omission did *not* show up in any spectest or other test, leads me to suggest that the Junction optimizer is currently dead code. |
09:03 | |||||||||||||||||||||||||||||||||||||
lizmat | m: @.succ | 09:04 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable @.succ used where no 'self' is available at <tmp>:1 ------> 3@.succ7⏏5<EOL> expecting any of: statement list term |
||||||||||||||||||||||||||||||||||||||
lizmat | m: @ .succ | ||||||||||||||||||||||||||||||||||||||
camelia | No such method 'succ' for invocant of type 'Array'. Did you mean any of these? sec sech sum uc in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | he | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: my @mapper = [['1a','1b','1c'],['2a','2b','2c'],['3a','3b','3c']];say % .classify-list: @mapper, 1,2,1,1,2,0; | 09:15 | |||||||||||||||||||||||||||||||||||||
camelia | {1a => {1b => {1c => [0]}}, 2a => {2b => {2c => [1 1 1]}}, 3a => {3b => {3c => [2 2]}}} | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: my @mapper = [['1a','1b'],['2a','2b']];say % .classify-list: @mapper, 1,0,1,1,1,0; | 09:19 | |||||||||||||||||||||||||||||||||||||
camelia | {1a => {1b => [0 0]}, 2a => {2b => [1 1 1 1]}} | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: my @mapper = [['1a','1b'],['2a','2b','2c']];say % .classify-list: @mapper, 1,0,1,1,1,0; | ||||||||||||||||||||||||||||||||||||||
camelia | mapper on classify-list computed to an item with different number of elements in it than previous items, which cannot be used because all values need to have the same number of elements. Mixed-level classification is not supported. in block <unit>… |
||||||||||||||||||||||||||||||||||||||
jmerelo | m: my @mapper = [['1a','1b'],['2a','2b'],['3a','3b'];say % .classify-list: @mapper, 1,0,1,1,1,0; | ||||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Cannot use variable @mapper in declaration to initialize itself at <tmp>:1 ------> 032b'],['3a','3b'];say % .classify-list: @7⏏5mapper, 1,0,1,1,1,0; expecting any of: argument … |
||||||||||||||||||||||||||||||||||||||
jmerelo | m: my @mapper = [['1a','1b'],['2a','2b'],['3a','3b']];say % .classify-list: @mapper, 1,0,1,1,1,0; | 09:20 | |||||||||||||||||||||||||||||||||||||
camelia | {1a => {1b => [0 0]}, 2a => {2b => [1 1 1 1]}} | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: my @mapper = [['1a','1b'],['2a','2b'],['3a','3b']];say % .classify-list: @mapper, 1,0,1,1,1,0,2; | ||||||||||||||||||||||||||||||||||||||
camelia | {1a => {1b => [0 0]}, 2a => {2b => [1 1 1 1]}, 3a => {3b => [2]}} | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: my @mapper = [<1a 1b>, <2a 2b 2fail>];say % .classify-list: @mapper, 1,0,1,1,1,0; | 09:24 | |||||||||||||||||||||||||||||||||||||
camelia | mapper on classify-list computed to an item with different number of elements in it than previous items, which cannot be used because all values need to have the same number of elements. Mixed-level classification is not supported. in block <unit>… |
||||||||||||||||||||||||||||||||||||||
jmerelo | lizmat: so, what do you think? contex-inducing sigil? | 09:28 | |||||||||||||||||||||||||||||||||||||
lizmat | no, it's not a context | ||||||||||||||||||||||||||||||||||||||
m: dd @.new | 09:29 | ||||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable @.new used where no 'self' is available at <tmp>:1 ------> 3dd @.new7⏏5<EOL> expecting any of: argument list term |
||||||||||||||||||||||||||||||||||||||
lizmat | m: dd @ .new | ||||||||||||||||||||||||||||||||||||||
camelia | Array element = [] | ||||||||||||||||||||||||||||||||||||||
jmerelo | lizmat: "bare sigil"? | ||||||||||||||||||||||||||||||||||||||
lizmat | m: dd @ .new(1,2,3) | ||||||||||||||||||||||||||||||||||||||
camelia | Array element = [1, 2, 3] | ||||||||||||||||||||||||||||||||||||||
lizmat | m: dd % .new(1,2,3,4) | ||||||||||||||||||||||||||||||||||||||
camelia | Hash element = {("1") => 2, ("3") => 4} | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: say .classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | ||||||||||||||||||||||||||||||||||||||
camelia | No such method 'classify-list' for invocant of type 'Any' in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
jmerelo | m: say % .classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | 09:30 | |||||||||||||||||||||||||||||||||||||
camelia | {even => [0 2 4 6 8], odd => [1 3 5 7 9]} | ||||||||||||||||||||||||||||||||||||||
jmerelo | lizmat: what about the case above? | ||||||||||||||||||||||||||||||||||||||
lizmat: your two examples can be interpreted as casting, but in the case above, % is providing context for .classify-list, which wouldn't work without it. | 09:31 | ||||||||||||||||||||||||||||||||||||||
lizmat | m: say Hash.classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | ||||||||||||||||||||||||||||||||||||||
camelia | assign requires a concrete object (got a Hash type object instead) in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | m: say Hash.new.classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | 09:32 | |||||||||||||||||||||||||||||||||||||
camelia | {even => [0 2 4 6 8], odd => [1 3 5 7 9]} | ||||||||||||||||||||||||||||||||||||||
lizmat | the % is just short for Hash.new, the @ is short for Array.new | ||||||||||||||||||||||||||||||||||||||
09:33
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
jmerelo | Hum | 09:33 | |||||||||||||||||||||||||||||||||||||
lizmat | I wouldn't call it context, but I'm not sure *what* I would call it... | ||||||||||||||||||||||||||||||||||||||
perhaps jnthn has some ideas | |||||||||||||||||||||||||||||||||||||||
jmerelo | sigil-shortcut? | ||||||||||||||||||||||||||||||||||||||
sigil-new? | |||||||||||||||||||||||||||||||||||||||
but it's not exactly that, it's more like .new and then ==> | 09:34 | ||||||||||||||||||||||||||||||||||||||
m: say %.classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | |||||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable %.classify-list used where no 'self' is available at <tmp>:1 ------> 3ist: { $_ %% 2 ?? 'even' !! 'odd' }, ^107⏏5; |
||||||||||||||||||||||||||||||||||||||
jmerelo | m: say % .classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | ||||||||||||||||||||||||||||||||||||||
camelia | {even => [0 2 4 6 8], odd => [1 3 5 7 9]} | ||||||||||||||||||||||||||||||||||||||
jmerelo | m: say Hash.new ==> .classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | 09:35 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Only routine calls or variables that can '.push' may appear on either side of feed operators. at <tmp>:1 ------> 3say Hash.new ==> 7⏏5.classify-list: { $_ %% 2 ?? 'even' !! ' |
||||||||||||||||||||||||||||||||||||||
jmerelo | No, not that either... | ||||||||||||||||||||||||||||||||||||||
m: say Hash.new .classify-list: { $_ %% 2 ?? 'even' !! 'odd' }, ^10; | |||||||||||||||||||||||||||||||||||||||
camelia | {even => [0 2 4 6 8], odd => [1 3 5 7 9]} | ||||||||||||||||||||||||||||||||||||||
jmerelo | Gee, I don't know | 09:36 | |||||||||||||||||||||||||||||||||||||
lizmat | afk for a few hours& | 09:39 | |||||||||||||||||||||||||||||||||||||
jmerelo | But above you're calling new on new... % .new(1,2,3,4) | 09:40 | |||||||||||||||||||||||||||||||||||||
lizmat: have fun | 09:41 | ||||||||||||||||||||||||||||||||||||||
09:42
sena_kun joined
|
|||||||||||||||||||||||||||||||||||||||
sena_kun | bisectable6, role Foo[\] { }; class Bar { proto method baz($ --> Bool:D) {*}; multi method baz(::T: $ where Foo[T] --> True) { }; multi method baz($ --> False) {} }; say Bar.baz: Foo[Bar] | 09:42 | |||||||||||||||||||||||||||||||||||||
bisectable6 | sena_kun, Bisecting by output (old=2015.12 new=911cac4) because on both starting points the exit code is 1 | 09:43 | |||||||||||||||||||||||||||||||||||||
sena_kun, bisect log: gist.github.com/d830f870eb79f19c0e...861a23d7fd | |||||||||||||||||||||||||||||||||||||||
sena_kun, (2016-03-02) github.com/rakudo/rakudo/commit/fd...7e379b5038 | |||||||||||||||||||||||||||||||||||||||
sena_kun | rba, ping. | 09:51 | |||||||||||||||||||||||||||||||||||||
rba | sena_kun: hi | 09:52 | |||||||||||||||||||||||||||||||||||||
sena_kun | rba, o/ | ||||||||||||||||||||||||||||||||||||||
I hazily remember we discussed using the release-related server to do release-related spectesting, is it still on map? I don't want to be annoying, but sometimes I just am. | 09:53 | ||||||||||||||||||||||||||||||||||||||
rba | sena_kun: What can I do. We haven't discussed the details yet. | 09:54 | |||||||||||||||||||||||||||||||||||||
sena_kun: plz let me know what you need. | |||||||||||||||||||||||||||||||||||||||
sena_kun | rba, zscript and system modules which are required to build rakudo (I think when I tried that, make was missing, so build-essentials and maybe something else) will be more than enuogh. | 09:55 | |||||||||||||||||||||||||||||||||||||
s/rakudo/whole rakudo stack/ | |||||||||||||||||||||||||||||||||||||||
so basically github.com/perl6/z and `z init R` (or some other dir, I am used to R) and `z z` passing clean. | 09:56 | ||||||||||||||||||||||||||||||||||||||
09:57
cognomin_ joined
10:00
cognominal left
|
|||||||||||||||||||||||||||||||||||||||
rba | sena_kun: On the way to install zscript... | 11:04 | |||||||||||||||||||||||||||||||||||||
11:27
Guest4508 left
11:31
jmerelo left
11:32
Altai-man_ joined
11:34
sena_kun left
11:50
Altai-man_ is now known as sena_kun
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 470f7fd093 | (Elizabeth Mattijsen)++ | src/core.c/Junction.pm6 Make Junction creation about 3.5x as fast |
11:53 | |||||||||||||||||||||||||||||||||||||
timotimo | lizmat: perhaps we should run the coverage tool against the spec test suite and check on the optimizer's "score" for this purpose | 12:06 | |||||||||||||||||||||||||||||||||||||
lizmat | feels like a plan, but /me wouldn't know how to do that | ||||||||||||||||||||||||||||||||||||||
12:09
Guest1277 joined
|
|||||||||||||||||||||||||||||||||||||||
timotimo | first step is just to set an env var, then moar will spit out a boatload of text files with filename, line number entries | 12:10 | |||||||||||||||||||||||||||||||||||||
that can get pretty big, so should probably filter it down to optimizer lines only relatively early | 12:11 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | hm. roast specs that you can create an Encoding for a whole bunch of encodings (even if the backend doesn't support them) github.com/perl6/roast/blob/master....t#L7-L19. so if you wrap github.com/rakudo/rakudo/blob/mast...ry.pm6#L18 in `#?if jvm` you get a better error from | 12:41 | |||||||||||||||||||||||||||||||||||||
`"x".encode("utf32") on moarvm, but the test fails | |||||||||||||||||||||||||||||||||||||||
this error message github.com/MoarVM/MoarVM/blob/mast...ps.c#L2825 should at least say something like 'for MoarVM'. otherwise it has the exact same text as github.com/rakudo/rakudo/blob/mast...132-L2137, but it's a different error | 12:43 | ||||||||||||||||||||||||||||||||||||||
jnthn | We could just implement utf32 on MoarVM; it's probably not so hard :) | 12:47 | |||||||||||||||||||||||||||||||||||||
|Tux| |
|
12:48 | |||||||||||||||||||||||||||||||||||||
MasterDuke | are all the other ones implemented already? | 12:50 | |||||||||||||||||||||||||||||||||||||
jnthn | I think so | 12:53 | |||||||||||||||||||||||||||||||||||||
12:59
patrickb joined
13:01
lucasb joined,
thundergnat joined
|
|||||||||||||||||||||||||||||||||||||||
thundergnat | Regarding utf32: See issue R#3293 | 13:02 | |||||||||||||||||||||||||||||||||||||
linkable6 | R#3293 [open]: github.com/rakudo/rakudo/issues/3293 utf32 encode documented but not implemented | ||||||||||||||||||||||||||||||||||||||
13:03
thundergnat left
|
|||||||||||||||||||||||||||||||||||||||
rba | sena_kun: I have installed build essential, newest moarvm using rakudobrew, zscript from repo and did the init. Do you like to take over now? | 13:13 | |||||||||||||||||||||||||||||||||||||
sena_kun | rba, logged and trying it out. Seems like it is all great, will ping if something will be out. Thanks a lot! | 13:15 | |||||||||||||||||||||||||||||||||||||
rba | sena_kun: "z init ~/R" throwed an error.. give me a sec. | ||||||||||||||||||||||||||||||||||||||
sena_kun | I am doing `z z` (which builds the whole stack) right now, so might be related... | 13:16 | |||||||||||||||||||||||||||||||||||||
rba | You can attache as blin using "tmux a" | ||||||||||||||||||||||||||||||||||||||
sena_kun | `z z` has ended with a failure: `Unhandled exception: While looking for 'perl6.moarvm': no such file or directory`, `Makefile:810: recipe for target 'blib/CORE.d.setting.moarvm' failed`. | 13:18 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 7a561d63a8 | (Elizabeth Mattijsen)++ | src/core.c/Junction.pm6 Make Junction.defined between 4.5x and 6x as fast - 4.5x if the first eigenstate matches - 6x if none of the eigenstate match - separate private methods for better optimization options |
||||||||||||||||||||||||||||||||||||||
rba | sena_kun: Is this a missing build dependency? | 13:22 | |||||||||||||||||||||||||||||||||||||
sena_kun | rba, not really sure yet, trying again. doesn't seem so to me, at least. | 13:24 | |||||||||||||||||||||||||||||||||||||
rba | sena_kun: I guess this is because we both run z commands as blin user at the same time. I loggout out as blin. In case I have left over a undefined state you might "rm ~/R" and "z init ~/R" again. | 13:25 | |||||||||||||||||||||||||||||||||||||
sena_kun | rba, yes, might be it. anyway, if I have a raku installation there and system packages installed, we're doing good. | ||||||||||||||||||||||||||||||||||||||
rba | patrickb: We will have status call thuesday evening at 20:15 CEST about raku-infra. Are you interessted to join? | 13:26 | |||||||||||||||||||||||||||||||||||||
sena_kun: ping me if you need something else. | 13:27 | ||||||||||||||||||||||||||||||||||||||
sena_kun | rba, sure. Thank you very much. | ||||||||||||||||||||||||||||||||||||||
>+++ Rakudo installed succesfully! | |||||||||||||||||||||||||||||||||||||||
yay | |||||||||||||||||||||||||||||||||||||||
patrickb | rba: Interested! | 13:28 | |||||||||||||||||||||||||||||||||||||
rba | patrickb: Plese pm me your email. I will send you the invitation. We will use jitsi.org/ | 13:31 | |||||||||||||||||||||||||||||||||||||
13:32
Altai-man_ joined
|
|||||||||||||||||||||||||||||||||||||||
rba | sena_kun: Great to hear! | 13:32 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 423d9ad87c | (Elizabeth Mattijsen)++ | src/core.c/Junction.pm6 Argh, forgot to check for .defined in Junction!defined-any This skewed the benchmarks significantly, but was *not* picked up by testing. I guess the tests only use truthy values for the Junction.defined tests. The correct improvement numbers are: - 15% faster if none of the eigenstates match - 40% faster if the first of the eigenstates match |
||||||||||||||||||||||||||||||||||||||
Altai-man_ | is make spectest smart enough to determine number of threads to use? | 13:33 | |||||||||||||||||||||||||||||||||||||
13:34
sena_kun left
13:44
hungrydonkey left
13:45
hungrydonkey joined
13:46
jmerelo joined
14:14
jmerelo left
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | it looks like right here github.com/rakudo/rakudo/blob/mast....nqp#L2964 is sometimes a QAST::Stmts, but with only one statement inside that would likely pass the rest of the conditions | 14:26 | |||||||||||||||||||||||||||||||||||||
*$qast-block[1] is a lot of the timesa QAST::Stmts | 14:27 | ||||||||||||||||||||||||||||||||||||||
anybody want to help me figure out where it's codegenned? | 14:28 | ||||||||||||||||||||||||||||||||||||||
ok, if i add an `if nqp::istype($qast[1], QAST::Stmts && @($qast[1]) == 1) { $qast[1] := $qast[1][0]; }` it actually gets into this body a couple times github.com/rakudo/rakudo/blob/mast...2972-L2998 | 14:35 | ||||||||||||||||||||||||||||||||||||||
is that a safe thing to do in general? if a QAST::Stmts only has one thing inside, remove the wrapping QAST::Stmts? | 14:36 | ||||||||||||||||||||||||||||||||||||||
well, that passes `make m-test m-spectest` | 14:38 | ||||||||||||||||||||||||||||||||||||||
and this `sub a($a where 1|2|4) { say "hi" }; a(2)` gets into the body of that optimization | |||||||||||||||||||||||||||||||||||||||
[Coke] | spectest can use multiple instances, but not multiple threads. | 14:54 | |||||||||||||||||||||||||||||||||||||
TEST_JOBS=3 make spectest | |||||||||||||||||||||||||||||||||||||||
back when I was running this regularly, I'd put the definition of TEST_JOBS in my bashrc, or if it was automated, in whatever was kicking off the test run | 14:58 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | hm, but that optimization doesn't seem to help much. `sub a($a where 1|2|3|4|5|6|7|8|9|0) { $a }; my $b; my $s = now; $b = a(0) for ^500_000; say now - $s; say $b` takes the same amount of time whether the opt is happening or not | 14:59 | |||||||||||||||||||||||||||||||||||||
oh ha, the opt is for non-concrete eigenstates, it was returning out of the body right away, no wonder there was no difference | 15:02 | ||||||||||||||||||||||||||||||||||||||
now some real results. `sub a($a where Str|Rat|Complex|Array|Hash|Encoding|Int) { $a }; my $b; my $s = now; $b = a(2) for ^500_000; say now - $s; say $b` takes ~1.8s before, ~0.12s after | 15:06 | ||||||||||||||||||||||||||||||||||||||
putting the `Int` first in the list drops the before time to 0.39s, but the after time is unchanged (so still faster at ~0.12s) | 15:13 | ||||||||||||||||||||||||||||||||||||||
15:21
sena_kun joined
15:23
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: MasterDuke17++ created pull request #3488: Hack to fix "any" Junction inlining optimization |
15:24 | |||||||||||||||||||||||||||||||||||||
MasterDuke | jnthn, timotimo, lizmat, nine: ^^^ some questions there you might have answers to | 15:29 | |||||||||||||||||||||||||||||||||||||
15:32
Altai-man_ joined
15:34
sena_kun left
15:37
Xliff joined
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | oh, this is doing something to QAST::Stmts github.com/rakudo/rakudo/blob/mast...2865-L2887 | 15:40 | |||||||||||||||||||||||||||||||||||||
lizmat | notable6: weekly | 15:44 | |||||||||||||||||||||||||||||||||||||
notable6 | lizmat, 2 notes: 2020-02-11T18:24:02Z <lizmat>: fluca1978.github.io/2020/02/10/Per...nge47.html ; 2020-02-12T20:45:35Z <Doc_Holliwood>: www.perlmonks.org/?node_id=11112794 | ||||||||||||||||||||||||||||||||||||||
lizmat | notable6: weekly reset | 15:46 | |||||||||||||||||||||||||||||||||||||
notable6 | lizmat, Moved existing notes to “weekly_2020-02-17T15:46:04Z” | ||||||||||||||||||||||||||||||||||||||
Kaiepi | so in my `is cached` pr and Trait::Traced, the two traits reuse some code from NativeCall to finish compiling the routine being wrapped and replace its $!do with that of the wrapper | 16:12 | |||||||||||||||||||||||||||||||||||||
but this doesn't seem to be the right approach | |||||||||||||||||||||||||||||||||||||||
the wrapped routine's outer context has the correct symbols in it, but their values end up being their compile-time values, not the values they have when the routine is called | 16:13 | ||||||||||||||||||||||||||||||||||||||
what would i need to do to fix this? | |||||||||||||||||||||||||||||||||||||||
i already tried using nqp::forceouterctx from the wrapper but that didn't work | 16:14 | ||||||||||||||||||||||||||||||||||||||
16:14
domidumont left
|
|||||||||||||||||||||||||||||||||||||||
jnthn | Why not just use .wrap, which should do things more properly? | 16:15 | |||||||||||||||||||||||||||||||||||||
Kaiepi | because rakudo expects multi methods to be Code instances in some places | ||||||||||||||||||||||||||||||||||||||
jnthn | Not sure I follow | 16:16 | |||||||||||||||||||||||||||||||||||||
Multi methods will be of type Method? | 16:17 | ||||||||||||||||||||||||||||||||||||||
Kaiepi | they'll end up being the class .wrap uses instead of Code | ||||||||||||||||||||||||||||||||||||||
s/being/\0 instances of/ | 16:18 | ||||||||||||||||||||||||||||||||||||||
that's the only reason i'm not using .wrap though. would it be worth looking into ways to make it so multi methods work with .wrap? | 16:19 | ||||||||||||||||||||||||||||||||||||||
jnthn | m: class C { method m() { say 1 } }; C.^lookup('m').wrap(-> { say 0; callsame; say 2 }); C.m. say C.^lookup('m').^name | 16:20 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3-> { say 0; callsame; say 2 }); C.m. say7⏏5 C.^lookup('m').^name expecting any of: infix infix stopper statement end… |
||||||||||||||||||||||||||||||||||||||
jnthn | m: class C { method m() { say 1 } }; C.^lookup('m').wrap(-> { say 0; callsame; say 2 }); C.m; say C.^lookup('m').^name | ||||||||||||||||||||||||||||||||||||||
camelia | Too many positionals passed; expected 0 arguments but got 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
jnthn | oh, right | ||||||||||||||||||||||||||||||||||||||
m: class C { method m() { say 1 } }; C.^lookup('m').wrap(-> | { say 0; callsame; say 2 }); C.m; say C.^lookup('m').^name | |||||||||||||||||||||||||||||||||||||||
camelia | 0 1 2 Method+{Routine::Wrapped} |
||||||||||||||||||||||||||||||||||||||
jnthn | m: class C { method m() { say 1 } }; C.^lookup('m').wrap(-> | { say 0; callsame; say 2 }); C.m; say C.^lookup('m') ~~ Method | 16:21 | |||||||||||||||||||||||||||||||||||||
camelia | 0 1 2 True |
||||||||||||||||||||||||||||||||||||||
jnthn | It's a subclass of Method | ||||||||||||||||||||||||||||||||||||||
Kaiepi | m: class C { multi method foo() { 0 }; BEGIN $?CLASS.^find_multi_method('foo').code.wrap: { 1 }; }; say C.foo | ||||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> An exception occurred while evaluating a BEGIN at <tmp>:1 Exception details: No such method 'find_multi_method' for invocant of type 'Perl6::Metamodel::ClassHOW'. Did you mean 'add_multi_method'… |
||||||||||||||||||||||||||||||||||||||
Kaiepi | oh right | ||||||||||||||||||||||||||||||||||||||
jnthn | Ah, yes, you can't do this until the class is composed... | ||||||||||||||||||||||||||||||||||||||
Kaiepi | m: class C { multi method foo() { 0 }; BEGIN $?CLASS.^multi_methods_to_incorporate.first({ .name eq 'foo' }).code.wrap: { 1 }; }; say C.foo | 16:22 | |||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> An exception occurred while evaluating a BEGIN at <tmp>:1 Exception details: Type check failed in binding to parameter 'value'; expected Any but got MultiToIncorporate (?) in code at <tmp… |
||||||||||||||||||||||||||||||||||||||
jnthn | Well, you can like that I guess... | ||||||||||||||||||||||||||||||||||||||
Kaiepi | m: class C { multi method foo() { 0 }; BEGIN for $?CLASS.^multi_methods_to_incorporate { if .name eq 'foo' { .code.wrap: { 1 }; last } } }; say C.foo | 16:23 | |||||||||||||||||||||||||||||||||||||
camelia | Cannot invoke object with invocation handler in this context in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Kaiepi | there we go | ||||||||||||||||||||||||||||||||||||||
jnthn | Ah, that... | ||||||||||||||||||||||||||||||||||||||
Yeah, it's be better to fix that than mess with `$!do` in module space. | |||||||||||||||||||||||||||||||||||||||
Kaiepi | aight | 16:24 | |||||||||||||||||||||||||||||||||||||
jnthn | Though it's probably not an easy fix :( | ||||||||||||||||||||||||||||||||||||||
Kaiepi | i'll give it a shot, there's not much i can do for my grant until after this release gets made | 16:25 | |||||||||||||||||||||||||||||||||||||
16:48
hungrydonkey left
16:54
hungrydonkey joined
17:15
patrickb left
|
|||||||||||||||||||||||||||||||||||||||
Kaiepi | ugh this has been bugging me long enough | 17:16 | |||||||||||||||||||||||||||||||||||||
on openbsd, gdb is ancient and doesn't always work with rakudo, but the gdb you install as a package/port is called egdb, so rakudo-gdb-m isn't very helpful | 17:17 | ||||||||||||||||||||||||||||||||||||||
17:17
pyrimidine left
|
|||||||||||||||||||||||||||||||||||||||
Kaiepi | would adding a rakudo-egdb-m script that only gets installed on openbsd be the right way to go about allowing egdb to be used? | 17:18 | |||||||||||||||||||||||||||||||||||||
lizmat | wouldn't an environment variable allowing to change the name of the gdb to be used, make more sense? | 17:26 | |||||||||||||||||||||||||||||||||||||
17:28
patrickb joined
|
|||||||||||||||||||||||||||||||||||||||
Kaiepi | that sounds reasonable, openbsd probably isn't the only case stuff like this would happen | 17:29 | |||||||||||||||||||||||||||||||||||||
17:30
domidumont joined,
domidumont left
17:33
sena_kun joined
17:35
Altai-man_ left
17:47
pyrimidine joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/02/17/2020-...eblessing/ | 17:55 | |||||||||||||||||||||||||||||||||||||
nine | lizmat: I wonder if your Weekly summaries of core developments would actually be the better source for the changelogs of my rakudo packages | 18:01 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: Kaiepi++ created pull request #3489: Allow debuggers to be specified by environment variables |
||||||||||||||||||||||||||||||||||||||
18:02
hungrydonkey left
18:06
CIAvash left,
unclechu left,
AlexDaniel` left
18:07
rba[m] left
|
|||||||||||||||||||||||||||||||||||||||
patrickb | rba: Can you update rakubrew.org (latest commit in the repo) and release rakubrew v3 (patszim.volans.uberspace.de/patclo...LQDZcjbf)? | 18:14 | |||||||||||||||||||||||||||||||||||||
patrickb is looking forward to not having to nag rba about this | 18:15 | ||||||||||||||||||||||||||||||||||||||
rba has no problem to update on demand of patrickb | 18:17 | ||||||||||||||||||||||||||||||||||||||
patrickb | :-) | ||||||||||||||||||||||||||||||||||||||
18:24
CIAvash joined
18:46
AlexDaniel` joined,
rba[m] joined
|
|||||||||||||||||||||||||||||||||||||||
releasable6 | Next release in ≈4 days and ≈23 hours. 3 blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft | 19:00 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo: 82bd76f187 | (Ben Davies)++ | src/core.c/Channel.pm6 Make Channel.list around 16x faster Channel.list was coercing the channel to a Seq and then a list. This is a pretty roundabout way of creating a list from the channel's iterator, so use List.from-iterator instead. |
19:23 | |||||||||||||||||||||||||||||||||||||
rakudo: b2962b1fb8 | (Vadim Belman)++ | src/core.c/Signature.pm6 Don't use raku method where it's not available Return type might not have `raku` method on it in certain cases like when class composition isn't over yet. In such cases use metamodel `name` method. |
19:26 | ||||||||||||||||||||||||||||||||||||||
rakudo: 56ccd1320a | (Vadim Belman)++ | src/Perl6/bootstrap.c/BOOTSTRAP.nqp Make Signature instantiate_generic not skipping return type It must be instantiated too. |
|||||||||||||||||||||||||||||||||||||||
rakudo: 17f7c5ade7 | (Vadim Belman)++ (committed using GitHub Web editor) | 2 files Merge pull request #3484 from vrurg/rakudo_3483 Properly support generic types in Signature 'returns' attribute. |
|||||||||||||||||||||||||||||||||||||||
rakudo/master: 6 commits pushed by (Vadim Belman)++ | 19:27 | ||||||||||||||||||||||||||||||||||||||
19:32
Altai-man_ joined
19:35
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
rba | patrickb: rakubrew.org update | 19:41 | |||||||||||||||||||||||||||||||||||||
patrickb: rakubrew.org updated. | 19:42 | ||||||||||||||||||||||||||||||||||||||
patrickb | Thank you! | ||||||||||||||||||||||||||||||||||||||
19:46
AlexDaniel` left,
rba[m] left
19:47
CIAvash left
20:16
cognominal joined
20:18
unclechu joined
20:19
cognomin_ left
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | any reason this "any" Junction inlining couldn't be done for concrete literals also? | 20:33 | |||||||||||||||||||||||||||||||||||||
m: sub a($a where 1|2|3|4|5|6|7|8|9|0) { $a }; my $b; my $c = 10.rand.Int * 0; my $s = now; $b = a($c) for ^100_000; say now - $s; say $b | 20:34 | ||||||||||||||||||||||||||||||||||||||
camelia | 1.44387877 0 |
||||||||||||||||||||||||||||||||||||||
MasterDuke | m: sub a($a where $a == 1 || $a == 2 || $a == 3 || $a == 4 || $a == 5 || $a == 6 || $a == 7 || $a == 8 || $a == 9 || $a == 0) { $a }; my $b; my $c = 10.rand.Int * 0; my $s = now; $b = a($c) for ^100_000; say now - $s; say $b | ||||||||||||||||||||||||||||||||||||||
camelia | 0.17998453 0 |
||||||||||||||||||||||||||||||||||||||
MasterDuke | it's a bit more complex, but seems like we could start just supporting e.g., literal numbers and strings, and the compiler could just bail if it gets anything else | 20:36 | |||||||||||||||||||||||||||||||||||||
20:38
patrickb left
20:40
AlexDaniel` joined,
rba[m] joined,
CIAvash joined
20:41
patrickb joined
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | hm, those aren't used too terribly much in the ecosystem, but then again perl6-all-modules was last updated almost a year ago... | 20:48 | |||||||||||||||||||||||||||||||||||||
Kaiepi | releasable6, status | 20:49 | |||||||||||||||||||||||||||||||||||||
releasable6 | Kaiepi, Next release in ≈4 days and ≈22 hours. 3 blockers. 0 out of 230 commits logged | ||||||||||||||||||||||||||||||||||||||
Kaiepi, Details: gist.github.com/23f29f29d1f12b05fe...9bedbec5ef | |||||||||||||||||||||||||||||||||||||||
MasterDuke | greppable6: / where\s+(\d+|("[^"]+"))\s*\|/ | ||||||||||||||||||||||||||||||||||||||
greppable6 | MasterDuke, Found nothing! | ||||||||||||||||||||||||||||||||||||||
MasterDuke | greppable6: help | ||||||||||||||||||||||||||||||||||||||
greppable6 | MasterDuke, Like this: greppable6: password # See wiki for more examples: github.com/Raku/whateverable/wiki/Greppable | ||||||||||||||||||||||||||||||||||||||
MasterDuke | greppable6: where\s+(\d+|("[^"]+"))\s*\| | 20:50 | |||||||||||||||||||||||||||||||||||||
greppable6 | MasterDuke, 24 lines, 8 modules: gist.github.com/4c907ba02f4069b7f5...bdeed861ef | ||||||||||||||||||||||||||||||||||||||
Kaiepi | is it alright if i add a $.path parameter to IO::Socket::INET and multis for creating unix sockets before the next release? | 20:52 | |||||||||||||||||||||||||||||||||||||
s/parameter/attribute/ | |||||||||||||||||||||||||||||||||||||||
they're created with :$host/:$localhost atm, which doesn't feel right since they don't have hosts | 20:53 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 6844be9dd9 | (Elizabeth Mattijsen)++ | src/core.c/Junction.pm6 Some minor cleanup in Junction - remove unncessary nqp::clone - add return type |
20:56 | |||||||||||||||||||||||||||||||||||||
MasterDuke | hm, explicitly creating a subset first and then typing the parameter to that doesn't trigger the optimization | 20:59 | |||||||||||||||||||||||||||||||||||||
m: subset Foo of Any where Str|Rat|Complex|Array|Hash|Encoding|Int; sub a(Foo $a) { $a }; my $b; my $c = 10.rand.Int; my $s = now; $b = a($c) for ^100_000; say now - $s; say $b | |||||||||||||||||||||||||||||||||||||||
camelia | 0.917596 5 |
||||||||||||||||||||||||||||||||||||||
MasterDuke | that takes 1/10 the time when not expressed as a subset (when github.com/rakudo/rakudo/pull/3488 is applied) | 21:01 | |||||||||||||||||||||||||||||||||||||
Xliff | I have a class with two methods that have the same signature, however one is marked as :U: | 21:22 | |||||||||||||||||||||||||||||||||||||
Why does rakudo complain about an ambiguous call when I invoke via Class::Name.this-should-be-a-class-method($a, $b) | 21:23 | ||||||||||||||||||||||||||||||||||||||
m: class A { method aa(A:U: $a) { say 'Class'; }; method asa($a) { say 'Not classed!' }; }; A.aa | 21:24 | ||||||||||||||||||||||||||||||||||||||
camelia | Too few positionals passed; expected 2 arguments but got 1 in method aa at <tmp> line 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Xliff | m: class A { method aa(A:U: $a) { say 'Class'; }; method aa($a) { say 'Not classed!' }; }; A.aa | ||||||||||||||||||||||||||||||||||||||
camelia | 5===SORRY!5=== Error while compiling <tmp> Package 'A' already has a method 'aa' (did you mean to declare a multi-method?) at <tmp>:1 |
||||||||||||||||||||||||||||||||||||||
Xliff | m: class A { multi method aa(A:U: $a) { say 'Class'; }; multi method aa($a) { say 'Not classed!' }; }; A.aa | ||||||||||||||||||||||||||||||||||||||
camelia | Cannot resolve caller aa(A:U: ); none of these signatures match: (A:U: $a, *%_) (A: $a, *%_) in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Xliff | m: class A { multi method aa(A:U: $a) { say 'Class'; }; multi method aa(A:D: $a) { say 'Not classed!' }; }; A.aa | ||||||||||||||||||||||||||||||||||||||
camelia | Cannot resolve caller aa(A:U: ); none of these signatures match: (A:U: $a, *%_) (A:D: $a, *%_) in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Xliff | ^^ That should not be a conflict, right? | ||||||||||||||||||||||||||||||||||||||
m: class A { multi method aa(A:U: $a) { say 'Class'; }; multi method aa(A:D: $a) { say 'Not classed!' }; }; A.aa(1) | 21:25 | ||||||||||||||||||||||||||||||||||||||
camelia | Class | ||||||||||||||||||||||||||||||||||||||
Xliff | m: class A { multi method aa(A:U: $a) { say 'Class'; }; multi method aa($a) { say 'Not classed!' }; }; A.aa(1) | ||||||||||||||||||||||||||||||||||||||
camelia | Ambiguous call to 'aa(A: Int)'; these signatures all match: :(A:U: $a, *%_) :(A: $a, *%_) in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Xliff | :/ | ||||||||||||||||||||||||||||||||||||||
OK. Well that's a solution. | |||||||||||||||||||||||||||||||||||||||
21:33
sena_kun joined
21:34
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: patrickbkr++ created pull request #3490: Fix Rakudo running in unicode paths on Windows again |
21:39 | |||||||||||||||||||||||||||||||||||||
rakudo: Kaiepi++ created pull request #3491: Add a $.path attribute and PF_UNIX multis to IO::Socket::INET |
21:59 | ||||||||||||||||||||||||||||||||||||||
roast: Kaiepi++ created pull request #619: Update IO::Socket::INET UNIX sockets tests to use the new API |
22:00 | ||||||||||||||||||||||||||||||||||||||
22:05
Kaiepi left,
Kaiepi joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 4c6cd03522 | (Patrick Böker)++ | src/vm/moar/runner/main.c Fix Rakudo running in unicode paths on Windows again This broke during a refactor some months ago. |
22:18 | |||||||||||||||||||||||||||||||||||||
rakudo: 1cc43c892a | (Patrick Böker)++ (committed using GitHub Web editor) | src/vm/moar/runner/main.c Merge pull request #3490 from patrickbkr/fix-unicode-paths-windows Fix Rakudo running in unicode paths on Windows again |
|||||||||||||||||||||||||||||||||||||||
22:18
patrickb left
|
|||||||||||||||||||||||||||||||||||||||
Geth | roast/6.d-errata: 559ba86279 | (Daniel Green)++ (committed by Altai-man) | S32-num/expmod.t Use better negative power exptmod tests The previous tests used values that used to hang. After the hang was fixed, they started to silently give the wrong answer because errors in libtommath functions in MoarVM were ignored. Now that errors are being handled, check that those values die. Also add some other tests with negative powers that shouldn't die. |
23:11 | |||||||||||||||||||||||||||||||||||||
roast/6.d-errata: 6fd361bd03 | (Elizabeth Mattijsen)++ (committed by Altai-man) | S12-attributes/smiley.t Typecheck on default value for attribute changed with github.com/rakudo/rakudo/commit/d8e859d000 |
|||||||||||||||||||||||||||||||||||||||
roast/6.d-errata: 02d638be72 | (Vadim Belman)++ (committed by Altai-man) | S05-metasyntax/regex.t Make correct Bool matchers :attr(? *) instead of just :attr |
|||||||||||||||||||||||||||||||||||||||
sena_kun | releasable6, status | 23:16 | |||||||||||||||||||||||||||||||||||||
releasable6 | sena_kun, Next release in ≈4 days and ≈19 hours. 3 blockers. 0 out of 233 commits logged | ||||||||||||||||||||||||||||||||||||||
sena_kun, Details: gist.github.com/35b9f38e427252846e...8af6eac20b | |||||||||||||||||||||||||||||||||||||||
23:32
Altai-man_ joined
23:35
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
Altai-man_ set up blin and sleep & | 23:36 |