🦋 Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm Set by lizmat on 8 June 2022. |
|||
00:00
reportable6 left
00:03
reportable6 joined
|
|||
ugexe | it seems like that error means something is calling .indent($some-value-getting-BOOTInt), but I'm not seeing anything that jumps out at me | 00:08 | |
Geth | rakudo/main: aca81e9225 | (Nick Logan)++ | 2 files Remove unused transcode compiler option This appears to have only been used by Parrot. Every other backend has their apply_transcodings function in nqp return the original input without any modifications. This change stops passing the transcoding option. |
01:00 | |
rakudo/main: 7e552d4797 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files Merge pull request #5308 from rakudo/ugexe/remove-unused-transcode-option Remove unused transcode compiler option |
|||
nqp/main: 379bc81aa9 | (Nick Logan)++ | 4 files Remove unused apply_transcoding compiler function This appears to have only been used by Parrot. Every other backend has their apply_transcodings function in nqp return the original input without any modifications. This change removes the apply transcodings function, and the code that called it. |
01:01 | ||
nqp/main: 1a48ed20b9 | (Nick Logan)++ | 5 files Remove unused transcode compiler option This appears to have only been used by Parrot. This change stops passing the transcoding option. |
|||
nqp/main: 40f9ee383c | (Nick Logan)++ (committed using GitHub Web editor) | 9 files Merge pull request #804 from Raku/ugexe/remove-unused-transcode-option Remove unused apply_transcoding compiler function |
|||
01:45
evalable6 left,
linkable6 left
01:46
linkable6 joined
01:47
evalable6 joined
|
|||
MasterDuke | hm. should IO::Path (and maybe any other that make sense, like IO::Handle, et al.) get a `has Stat $.stat` attribute that's lazily constructed any time a method is called that currently uses nqp::stat. then any subsequent methods could just use that attribute | 01:56 | |
or should everything always make a new nqp::stat call, since the attribute may have gone stale? there are always race conditions, but maybe they'd be worse if we always cached the result of the first stat | 01:58 | ||
should stat caching default to opt-in or opt-out? | 02:01 | ||
ugexe | i think you'd only want to cache it in the sense of one "action". like if i call .open and it ends up doing 17 stats they should just reuse the one. if i make another request to .open i'd expect it to redo the stat though | 02:02 | |
MasterDuke | for open i definitely can see the argument to not cache. but for things like .(group|inode|dev|modified|e|<...>) it seems like caching would be fine (or at least, not unexpected) | 02:08 | |
ugexe | caching e wouldnt work | 02:09 | |
MasterDuke | you mean because of the way it's currently implemented? or for some other reason? | 02:10 | |
ugexe | rakudo used to cache .e .f and some others, and it was really broken for doing thing | 02:12 | |
like checking if a file exists before creating it is common, and now .e would be cached as false even though its created | 02:13 | ||
MasterDuke | hm. i don't really remember that. any idea more precisely when? | ||
well, the creation could re-do the stat and overwrite the cache | |||
ugexe | it could be created by a different call to "whatever/path".IO.open(...) | 02:14 | |
like you had to be super aware of the difference between different IO::Path objects even if they pointed to the same thing | 02:15 | ||
i believe lizmat removed the cache in IO::Path sometime before 6.c | |||
MasterDuke | btw, why isn't IO::Path a value type? | 02:16 | |
it sounds like you're suggesting not even adding an attribute to IO:* and just doing any caching "manually" where appropriate (i.e., in individual methods which right now make multiple nqp::stat calls)? | 02:18 | ||
ugexe | github.com/rakudo/rakudo/commit/0c...45487a2183 here is the commit where it was added initially i think | 02:19 | |
MasterDuke | i wonder if i should still make a new Stat (name could be bikeshed) class that users could have access to. i.e., something like `my Stat $s = "foo".IO.stat`, which just has accessors for the different fields | 02:20 | |
ugexe | github.com/rakudo/rakudo/commit/8d...018a71fc45 -- a commit i made updating the aforementioned cache | 02:22 | |
having a .IO.stat seems like a decent idea to me | 02:23 | ||
or an IO::Path.stat rather | |||
MasterDuke | 76f71878da61731f33b457e84c7b0e801c64af66 is where $!e was removed, by zoffix in 2017 | 02:26 | |
76f71878da61731f33b457e84c7b0e801c64af66 is where $!e was removed, by zoffix in 2017 | 02:27 | ||
02:27
linkable6 left
|
|||
ugexe | ah yep | 02:28 | |
japhb | The "explicit caching" variant we ended up with was methods like .rwx, so people could at least check multiple mode bits at once. Still not the same as the _ pseudo-file in Perl that literally meant "use the last cached value". | ||
Not entirely clear on why we can't just say if you want to use a cached stat structure, you have to be explicit. | 02:29 | ||
02:30
linkable6 joined
|
|||
MasterDuke | except those don't actually check multiple bits "at once", they still perform multiple stat calls | 02:30 | |
japhb | Lots of stuff with filesystem atomicity tricks will only work if there are no implicit caching. | ||
I meant the API | |||
As in, we designed a partial, limited API that *could* do a single stat call, but there are lots of ways you'd want to look at a single stat structure that those don't cover. | 02:31 | ||
*a single stat call for very particular combinations | |||
MasterDuke | sure, but i'm not entirely happy about offering the api when we don't actually do what we say/imply we're doing | ||
japhb | Oh totally agreed with that. | ||
MasterDuke | huh. i've done a bunch of Perl, but didn't know about _ | 02:32 | |
japhb | Probably not exactly easy to search for .... | 02:33 | |
MasterDuke | we could say you have to be explicit about caching. but if 99.9% of the users/use-cases would want it...maybe it should be the default? (of course, maybe it's closer to 60%, which isn't so compelling) | 02:34 | |
japhb | Whatever we do, it should be as easy as we can manage to reason about it, because screwing up handling of file permissions and operations seems to be an evergreen class of security bugs. | 02:42 | |
MasterDuke | afk, but thanks all for the discussion (and others can feel free to chime in). still haven't really made any changes to rakudo yet, but getting a clearer picture of what i think i want to do | 03:03 | |
03:30
linkable6 left,
evalable6 left
03:31
linkable6 joined
03:33
evalable6 joined
04:33
bloatable6 left,
statisfiable6 left,
greppable6 left,
evalable6 left,
linkable6 left,
committable6 left,
reportable6 left,
bisectable6 left,
sourceable6 left,
coverable6 left,
quotable6 left,
squashable6 left,
releasable6 left,
tellable6 left,
notable6 left,
nativecallable6 left,
unicodable6 left,
benchable6 left,
shareable6 left,
shareable6 joined,
linkable6 joined,
benchable6 joined,
bloatable6 joined
04:34
sourceable6 joined,
releasable6 joined,
reportable6 joined,
coverable6 joined,
unicodable6 joined,
quotable6 joined,
committable6 joined,
tellable6 joined,
bisectable6 joined,
greppable6 joined
04:35
squashable6 joined,
statisfiable6 joined,
nativecallable6 joined
04:36
evalable6 joined,
notable6 joined
05:02
squashable6 left
05:04
squashable6 joined
06:00
reportable6 left
06:03
reportable6 joined
08:45
sena_kun joined
|
|||
Geth | rakudo/main: d520abb7f5 | (Elizabeth Mattijsen)++ | 2 files RakuAST: handle C<> / V<> / <> better - fix C<> / V<> handling if they were *not* the outer markup code - flatten letterless markup (aka any balanced <foo> inside a < >) at parse time, making it no longer visible to renderers (as it probably should have been from the start). |
10:21 | |
roast: be855d47a6 | (Elizabeth Mattijsen)++ | S26-documentation/08-formattingcodes.t Fix faulty C<> rendering test C<> means verbatim semantics, so leading spaces *should* be in there. This is fixed with RakuAST |
10:36 | ||
10:49
evalable6 left,
linkable6 left,
evalable6 joined,
linkable6 joined
|
|||
Geth | rakudo/main: f0be6ea866 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 Small shortcut for uninterpretable versions As Version.new is the same as $v |
10:55 | |
rakudo/main: 1b764648e8 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 Dehug closing parentheses No changes, but hopefully a better readable diff with future changes to the Version logic |
11:05 | ||
rakudo/main: 4f07e0e1a9 | (Elizabeth Mattijsen)++ | 2 files Remove Version $!whatever attribute - not documented - not tested - not used |
11:31 | ||
ugexe | i think thats breaking the api | 11:39 | |
lizmat | ah> | 11:40 | |
? | |||
ugexe | there used to be a Version.new candidate with 4 positional arguments. now there is not | ||
i'd be surprised if anyone was using that candidate, but we shouldn't assume it isn't used just because it isn't used in the core | 11:41 | ||
lizmat | oddly, no tests were hurt in that commit | ||
but I will add it back as a non-functional | |||
ugexe | did it not function before? | ||
lizmat | it was stored in the object, but the attribute wasn't used anywhere | 11:42 | |
at least not in the core | |||
and was not documented | |||
neither was the 4 positional .new | |||
ugexe | if it wasn't working then it is a little more reasonable to break the api | 11:44 | |
lizmat | I'll add it back in just in case | 11:45 | |
ugexe++ for the spot | |||
ugexe | it looks like Version used to have a method whatever() { nqp::hllbool($!whatever) } | 11:47 | |
oh right, that was removed in that commit as well | 11:48 | ||
lizmat | I guess I need to add that back again as well then | ||
ugexe | removing the whatever method is probably more likely to break things | ||
m: say (v1.0).whatever; say (v1.0).plus; say (v1.0.*).whatever; # someone might use something like this to detect if a version if a range or not | 11:50 | ||
camelia | False False True |
||
lizmat | yeah... | ||
12:00
reportable6 left
12:03
reportable6 joined
|
|||
Geth | rakudo/main: ea4912ec79 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 Restore Version.whatever - add the optional positional arg back in, without any function - add method whatever back in, but make it lazy by letting it look at the parts and return True if any of the parts is Whatever |
12:44 | |
rakudo/main: 1045f1b292 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 Don't store a Whatever instance, but a type object * is a Whatever.new. By storing a Whatever type object, we can simplify the test in .whatever to a =:= comparison |
12:54 | ||
rakudo/main: 69bb5ea327 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 Make Version.ACCEPTS a bit faster By using =:= comparisons for Whatever |
13:08 | ||
13:13
jgaz left
13:20
jgaz joined
14:54
squashable6 left
14:57
squashable6 joined
16:08
linkable6 left,
evalable6 left
16:09
evalable6 joined
16:10
linkable6 joined
|
|||
Geth | rakudo/main: 6f8bb0a346 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 NQPify Version.ACCEPTS For speed because it is used a lot, and will get to do a bit more soon. |
17:02 | |
timo | i asked nine recently how there can be a race condition in the exprjit and now i rememeber what he meant, this is about not being able to write access to something in a way that is compatible with some kind of atomic operation we need | 17:11 | |
so it's not that the exprjit compiler has a race condition in it, it's that it generates code for a specific situation that is racy | |||
17:32
linkable6 left,
evalable6 left
17:34
evalable6 joined
17:35
linkable6 joined
18:00
reportable6 left
18:02
reportable6 joined
|
|||
Geth | rakudo/main: 73d07b4b58 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 Add support for Version.new("1,2,3-") This adds support for Version objects that will accept any Version equal or **before** a given Version object. say Version.new("1.2.3") ~~ Version.new("1.2.4-"); # True say Version.new("1.2.4") ~~ Version.new("1.2.4-"); # True ... (19 more lines) |
18:27 | |
nine | timo: right | 18:38 | |
Geth | rakudo/main: d37e6e8315 | (Elizabeth Mattijsen)++ | src/core.c/Version.pm6 Make v1.2 eqv v1.2.0.0.0 True As originally envisioned and TODO tested for |
18:42 | |
roast: e7385eac9b | (Elizabeth Mattijsen)++ | S02-literals/version.t Untodo v1.2 eqv v.1.2.0.0.0 tests |
18:43 | ||
rakudo/main: a04661369b | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp RakuAST: add support for v1.2- |
18:52 | ||
roast/master: 5 commits pushed by (Elizabeth Mattijsen)++ | 19:05 | ||
roast: 5f971928b5 | (Elizabeth Mattijsen)++ | S02-literals/version.t RakuAST: add tests for v1.2- |
19:10 | ||
20:15
Voldenet_ joined
20:16
Voldenet left,
Voldenet_ is now known as Voldenet
21:17
Voldenet_ joined,
Voldenet left,
Voldenet_ is now known as Voldenet
21:21
sena_kun left
23:35
Util joined
|