🦋 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: ... | log inspection situation still under development | For MoarVM see #moarvm Set by lizmat on 22 May 2021. |
|||||||||||||||||||||||||||||||||||||||
00:03
reportable6 left
00:14
dogbert11 joined,
dogbert17 left
01:05
reportable6 joined
01:42
evalable6 joined
02:15
frost joined
03:21
Voldenet_ joined
03:22
Voldenet left,
Voldenet_ is now known as Voldenet
04:13
kjp left
04:15
kjp joined
04:41
linkable6 joined
05:41
evalable6 left,
linkable6 left
05:44
evalable6 joined
06:02
reportable6 left
06:04
reportable6 joined
07:18
unicodable6 left,
sourceable6 left,
releasable6 left,
bloatable6 left,
benchable6 left,
statisfiable6 left,
bisectable6 left,
notable6 left,
evalable6 left,
quotable6 left,
reportable6 left,
shareable6 left,
squashable6 left,
greppable6 left,
committable6 left,
nativecallable6 left,
tellable6 left,
coverable6 left,
squashable6 joined,
tellable6 joined
07:19
unicodable6 joined,
quotable6 joined,
sourceable6 joined,
bloatable6 joined,
greppable6 joined
07:21
shareable6 joined
07:42
linkable6 joined
08:19
benchable6 joined,
releasable6 joined
08:20
committable6 joined,
notable6 joined
08:21
statisfiable6 joined,
reportable6 joined
09:20
evalable6 joined
10:19
coverable6 joined,
bisectable6 joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/megamorphic-handlers: 85df0ba1a1 | (Jonathan Worthington)++ | src/vm/moar/dispatchers.nqp Use named constants for megamorphic thresholds |
10:23 | |||||||||||||||||||||||||||||||||||||
11:19
evalable6 left,
linkable6 left
11:20
nativecallable6 joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/master: 13 commits pushed by (Jonathan Worthington)++ review: github.com/rakudo/rakudo/compare/5...5adc06c3ff |
11:20 | |||||||||||||||||||||||||||||||||||||
11:22
evalable6 joined
12:02
reportable6 left
12:22
linkable6 joined
13:03
reportable6 joined
13:42
MasterDuke left
14:09
MasterDuke joined
14:40
vrurg left
14:42
vrurg joined
|
|||||||||||||||||||||||||||||||||||||||
[Tux] |
|
14:43 | |||||||||||||||||||||||||||||||||||||
Xliff_ | gist.github.com/Xliff/77534ec98cfb...7d2145149e | 14:54 | |||||||||||||||||||||||||||||||||||||
15:00
frost left
16:12
evalable6 left,
linkable6 left,
evalable6 joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | hmmm... should a "depends" field in META6.json be an array, or a hash? | 16:34 | |||||||||||||||||||||||||||||||||||||
ugexe | there are two forms, one is an array and one is a hash | ||||||||||||||||||||||||||||||||||||||
lizmat | github.com/CurtTilmes/raku-db/blob...6.json#L11 | 16:35 | |||||||||||||||||||||||||||||||||||||
aha | |||||||||||||||||||||||||||||||||||||||
ugexe | github.com/ugexe/zef/blob/master/t...-parsing.t | ||||||||||||||||||||||||||||||||||||||
lizmat | ugexe: but that's an array, in which the element can be a hash | 16:36 | |||||||||||||||||||||||||||||||||||||
the DB example, it's a hash on the outside | |||||||||||||||||||||||||||||||||||||||
ugexe | there are various formats | ||||||||||||||||||||||||||||||||||||||
lizmat | so there are 3 forms at least | ||||||||||||||||||||||||||||||||||||||
ugexe | github.com/ugexe/zef/blob/ba39127d...sing.t#L52 | ||||||||||||||||||||||||||||||||||||||
lizmat | aaah I see... | 16:37 | |||||||||||||||||||||||||||||||||||||
ugexe | there are two data types that can be used for depends. there are also two different ways to declare the items inside depends | ||||||||||||||||||||||||||||||||||||||
i.e. string "Foo:ver<1>" and hash `{ "name":"Foo", "ver":1 }` | |||||||||||||||||||||||||||||||||||||||
lizmat | ok, thanks for the examples | ||||||||||||||||||||||||||||||||||||||
ugexe: so there's no form of: depends: "Foo" | 16:41 | ||||||||||||||||||||||||||||||||||||||
aka, just a scalar value | |||||||||||||||||||||||||||||||||||||||
ugexe | no | ||||||||||||||||||||||||||||||||||||||
17:11
nine left
17:13
linkable6 joined
17:14
nine joined
17:15
nine left,
nine joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | nqp: 94a5440799 | (Elizabeth Mattijsen)++ | tools/templates/MOAR_REVISION Bump NQP to get the latest MoarVM fixes |
17:51 | |||||||||||||||||||||||||||||||||||||
18:02
reportable6 left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: a8329f6fd0 | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION Bump NQP to get the latest MoarVM fixes |
18:04 | |||||||||||||||||||||||||||||||||||||
lizmat | well... actually Rakudo of course :-( | 18:05 | |||||||||||||||||||||||||||||||||||||
if a module depends on NativeCall, should it be listed as a dependency? as it is always in a Raku distribution? | 18:07 | ||||||||||||||||||||||||||||||||||||||
or is NativeCall considered an implementation detail? | |||||||||||||||||||||||||||||||||||||||
github.com/tony-o/raku-fez/blob/ma...6.json#L11 # case in point | 18:08 | ||||||||||||||||||||||||||||||||||||||
ugexe | yes its a dependency | 18:10 | |||||||||||||||||||||||||||||||||||||
a strict code base would require e.g. versioning requirements on it etc | |||||||||||||||||||||||||||||||||||||||
plus if you want to do something like install all dependencies into a single external repo you have to list them all | 18:11 | ||||||||||||||||||||||||||||||||||||||
lizmat | but how would you install "NativeCall" ? | 18:44 | |||||||||||||||||||||||||||||||||||||
without installing Rakudo? | 18:45 | ||||||||||||||||||||||||||||||||||||||
you're basically saying that you're depending on Rakudo, but without Rakudo the whole thing would be pointless anyway | |||||||||||||||||||||||||||||||||||||||
ugexe | just get the distribution from a CURI (probably site) | 18:50 | |||||||||||||||||||||||||||||||||||||
and install it wherever | |||||||||||||||||||||||||||||||||||||||
my $dist = CURI.candidates(...). CURI.new(prefix => ...).install($dist) | 18:51 | ||||||||||||||||||||||||||||||||||||||
this is why i keep saying CURs are naive recommendation engines | 18:52 | ||||||||||||||||||||||||||||||||||||||
also why i think the core modules should be broken into individual distributions, but that would require updating all the build tooling to add the additional -I paths | 18:54 | ||||||||||||||||||||||||||||||||||||||
i cant really think of a single advantage of not treating them as dependencies | 19:00 | ||||||||||||||||||||||||||||||||||||||
lizmat | fair enough :-) | 19:02 | |||||||||||||||||||||||||||||||||||||
now, to create a fully qualified identity for NativeCall | 19:03 | ||||||||||||||||||||||||||||||||||||||
ugexe | its unfortunate we cant do that fully -- they are all versioned as e.g. 6.d | ||||||||||||||||||||||||||||||||||||||
lizmat | NativeCall:ver<*>:auth<core> ? | ||||||||||||||||||||||||||||||||||||||
ugexe | instead of 6.d.$foo | ||||||||||||||||||||||||||||||||||||||
the auth is still perl i believe | |||||||||||||||||||||||||||||||||||||||
lizmat | where is that mentioned ? | 19:04 | |||||||||||||||||||||||||||||||||||||
ugexe | the META6.json in lib | 19:05 | |||||||||||||||||||||||||||||||||||||
well i guess that gets generated at build time | |||||||||||||||||||||||||||||||||||||||
lizmat | doesn't seem to survive that ? | ||||||||||||||||||||||||||||||||||||||
ugexe | its inside install-core-dist or whatever script | ||||||||||||||||||||||||||||||||||||||
MasterDuke | github.com/rakudo/rakudo/blob/mast...t.raku#L47 i guess? | 19:06 | |||||||||||||||||||||||||||||||||||||
lizmat | ah, ok | ||||||||||||||||||||||||||||||||||||||
it's not an in-file meta | |||||||||||||||||||||||||||||||||||||||
maybe we should just add that to lib ? | |||||||||||||||||||||||||||||||||||||||
ugexe | it is after install | ||||||||||||||||||||||||||||||||||||||
but its some sha1 in a install repo | 19:07 | ||||||||||||||||||||||||||||||||||||||
and it wouldnt go in lib, it would go in lib/../, and it would look out of place there | |||||||||||||||||||||||||||||||||||||||
lizmat | what would be a reason against just adding a META6.json to the rakudo lib dir ? | ||||||||||||||||||||||||||||||||||||||
ugexe | because META6.json doesnt go in lib | ||||||||||||||||||||||||||||||||||||||
technically you could but i wouldnt do it | |||||||||||||||||||||||||||||||||||||||
lizmat | right, so it should be in the root dir | ||||||||||||||||||||||||||||||||||||||
so any reason to not put it in the root dir ? | 19:08 | ||||||||||||||||||||||||||||||||||||||
ah, I see now... | |||||||||||||||||||||||||||||||||||||||
different META6.json for different backend | |||||||||||||||||||||||||||||||||||||||
s | |||||||||||||||||||||||||||||||||||||||
do we have support for dependencies for different backends? | 19:09 | ||||||||||||||||||||||||||||||||||||||
ugexe | not really, that doesnt belong in META6.json which doesnt is not tightly coupled to an implementation that has backends... you could use like from<bin> to find an appropriate backend | 19:10 | |||||||||||||||||||||||||||||||||||||
similar to how you cant say you want a rakudo > 2021.12 | 19:12 | ||||||||||||||||||||||||||||||||||||||
lizmat | hmmm... | 19:20 | |||||||||||||||||||||||||||||||||||||
anyways, thanks for the explanation :-) | 19:21 | ||||||||||||||||||||||||||||||||||||||
ugexe | it does suggest writing modules that only work on one-backend are not what the goal of raku was | ||||||||||||||||||||||||||||||||||||||
lizmat | it does, doesn't it.. :-) | 19:24 | |||||||||||||||||||||||||||||||||||||
Geth | roast: 6f76902ad6 | (Daniel Green)++ | S32-num/expmod.t Turn a skip in expmod tests into a todo This way when it starts passing we'll know to un-todo it. |
19:40 | |||||||||||||||||||||||||||||||||||||
roast: 0db9b58f51 | MasterDuke17++ (committed using GitHub Web editor) | S32-num/expmod.t Merge pull request #770 from MasterDuke17/turn_skip_in_expmod_test_into_todo |
|||||||||||||||||||||||||||||||||||||||
rakudo/change-auth-core-modules: 30e0b05268 | (Elizabeth Mattijsen)++ | tools/build/install-core-dist.raku Make "raku" the authority of core modules Seems to me that "perl" is a bit... outdated. And changing it to "raku" doesn't break any tests. |
19:42 | ||||||||||||||||||||||||||||||||||||||
rakudo: lizmat++ created pull request #4613: Make "raku" the authority of core modules |
19:43 | ||||||||||||||||||||||||||||||||||||||
rakudo: 1fec0ef26e | (Vadim Belman)++ | 5 files Clarify let and temp operators Make sure they preserve and restore holes in arrays (though preserving currently depends on `clone` method implementation) and conterization of elements. The new implementation shifts the locus of control to `Array` and `Hash` ... (15 more lines) |
19:50 | ||||||||||||||||||||||||||||||||||||||
rakudo: 8986875eac | (Vadim Belman)++ (committed using GitHub Web editor) | 5 files Merge pull request #4602 from vrurg/rakudo_1433 Clarify let and temp operators |
|||||||||||||||||||||||||||||||||||||||
20:03
reportable6 joined
20:12
sena_kun left
20:16
sena_kun joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: d88d1cc0e4 | (Elizabeth Mattijsen)++ | src/core.c/Process.pm6 Introducing RAKUDO_PRECOMPILATION_PROGRESS If set to 1, will show modules being precompiled on STDERR, like: Precompiling Ecosystem::Archive Precompiling Cro::HTTP::Client Precompiling Base64 ... (6 more lines) |
21:17 | |||||||||||||||||||||||||||||||||||||
21:47
linkable6 left,
evalable6 left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | ok, this ^^ feature allowed me to spot a module being re-compiled when I think it shouldn't | 22:18 | |||||||||||||||||||||||||||||||||||||
it appears that a "use Foo" and "use Foo:ver<0.0.42>" are treated as different identities, even if only Foo 0.0.42 is installed | 22:19 | ||||||||||||||||||||||||||||||||||||||
so it feels to me that the version of the module *found* is *not* taken into account on the decision whether or not to re-compile | 22:21 | ||||||||||||||||||||||||||||||||||||||
note that these uses are in different compunits | 22:23 | ||||||||||||||||||||||||||||||||||||||
but they refer to the same actual module | |||||||||||||||||||||||||||||||||||||||
MasterDuke | that does seem like the re-compilation might not be necessary. but how common of an occurrence is that? | 22:26 | |||||||||||||||||||||||||||||||||||||
japhb | MasterDuke: I actually think that might be rather common, especially as more people use versioned/authed 'use' ... because when you get deep in the dependency stack, there will be a lot of modules required by LOTS of stuff. | 22:34 | |||||||||||||||||||||||||||||||||||||
22:35
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | yes, and e.g Cro is not using versioned uses internally, e.g. | 22:35 | |||||||||||||||||||||||||||||||||||||
but that should be fine | |||||||||||||||||||||||||||||||||||||||
japhb | And some module authors have been versioned-requiring all of the modules within the dist | ||||||||||||||||||||||||||||||||||||||
lizmat | the problem is really that rakudo is not doing the right thing, IMO | 22:36 | |||||||||||||||||||||||||||||||||||||
going to sleep over that & | |||||||||||||||||||||||||||||||||||||||
japhb | So for those modules, you'll have the versioned 'use' internally, and then all the outside users who *don't* do that will recompile | ||||||||||||||||||||||||||||||||||||||
lizmat: Right, and sleep well | |||||||||||||||||||||||||||||||||||||||
ugexe | because Foo:ver<*> is not the same as Foo:ver<0.0.42> | 22:38 | |||||||||||||||||||||||||||||||||||||
22:38
sena_kun joined
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | sure. but if you ask for * and get 0.0.42, and you've already precompiled 0.0.42, do you have to recompile? | 22:41 | |||||||||||||||||||||||||||||||||||||
ugexe | for CURFS yeah, because you cant encode e.g. version ranges into a file path | 22:42 | |||||||||||||||||||||||||||||||||||||
tonyo | that ambiguity in loading is something that users should be advised to avoid | ||||||||||||||||||||||||||||||||||||||
`use Foo:ver<1>` should be the common case and an open `use Foo` | |||||||||||||||||||||||||||||||||||||||
ugexe | for CURI i wouldnt expect it to recompile though | 22:45 | |||||||||||||||||||||||||||||||||||||
22:50
linkable6 joined,
evalable6 joined
|
|||||||||||||||||||||||||||||||||||||||
ugexe | for CURFS you either accept those will re-precompile or that they don't consider specific versions | 22:51 | |||||||||||||||||||||||||||||||||||||
right now they will consider specific versions, e.g. `use Foo:ver<3>` will fail if Foo isnt ver 3 | 22:52 | ||||||||||||||||||||||||||||||||||||||
this is yet another reason we have CURI | |||||||||||||||||||||||||||||||||||||||
if there is a way around this i havent been able to think of it over the past many years | 22:53 | ||||||||||||||||||||||||||||||||||||||
22:54
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
ugexe | pretty sure it would be the same deal with CURAP and things like ./foo/bar and ./foo/bar/../bar | 23:03 | |||||||||||||||||||||||||||||||||||||
lizmat | ugexe: it's *with* CURI that it recompiles | 23:33 | |||||||||||||||||||||||||||||||||||||
ugexe | yeah that is unexpected | ||||||||||||||||||||||||||||||||||||||
lizmat | I'll try to figure out more tomorrow, unless someone beats me to it :-) | 23:35 | |||||||||||||||||||||||||||||||||||||
23:36
sena_kun joined
|
|||||||||||||||||||||||||||||||||||||||
ugexe | RAKUDO_MODULE_DEBUG=1 raku -e 'use Zef:ver<0.13.0>; use Zef;' | 23:37 | |||||||||||||||||||||||||||||||||||||
when i do that i see no precompilation occuring | |||||||||||||||||||||||||||||||||||||||
lizmat | that's because it checks the compunit to see if it is already there ? | ||||||||||||||||||||||||||||||||||||||
and doesn't bother to load again? | |||||||||||||||||||||||||||||||||||||||
ugexe | i dont see the difference between your example and mine | 23:40 | |||||||||||||||||||||||||||||||||||||
if my example isnt the same then i dont quite understand | 23:42 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | what if you put each use in its own { }? | 23:48 | |||||||||||||||||||||||||||||||||||||
japhb | ugexe: Yeah, I *think* lizmat is saying that if different compunits have the different 'use' formats (with and without `:ver`), you'll get the problem. Your test is just one compunit. | 23:50 | |||||||||||||||||||||||||||||||||||||
23:53
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | also: look at the sample output I made: gist.github.com/lizmat/acbe0cdfc42...4a99d1b11d | 23:54 | |||||||||||||||||||||||||||||||||||||
it lists Cro::HTTP::Client twice | |||||||||||||||||||||||||||||||||||||||
for example | |||||||||||||||||||||||||||||||||||||||
ugexe: way to reproduce: | |||||||||||||||||||||||||||||||||||||||
zef install Ecosystem::Archive | 23:55 | ||||||||||||||||||||||||||||||||||||||
make a change in rakudo and make install it again | |||||||||||||||||||||||||||||||||||||||
then run 'RAKUDO_PRECOMPILATION_PROGRESS=1 raku -e 'use Ecosystem::Archive' | 23:56 | ||||||||||||||||||||||||||||||||||||||
23:57
squashable6 left
|
|||||||||||||||||||||||||||||||||||||||
ugexe | ah i can't say what I expect to happen when you rebuild rakudo | 23:58 | |||||||||||||||||||||||||||||||||||||
lizmat | why else would it recompile ? | ||||||||||||||||||||||||||||||||||||||
ugexe | bugs? | ||||||||||||||||||||||||||||||||||||||
23:58
squashable6 joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | there's that :-) | 23:59 |