| japhb | [Coke]: Free-handed (and thus untested), but maybe this will help: gist.github.com/japhb/09b54273146e...4dfd8b0677 | 00:47 | |
| [Coke]: If it ends up being buggy, just send me a link to a real overview file and I'll try to fix it. | 00:51 | ||
| [Coke] | don't know if it's buggy, but coke/raku-blin-results has a real overview file (though perhaps a little shorter) | 01:04 | |
| er, coke/raku-blin-release-results | 01:06 | ||
| japhb: Found invalid signals: INT | 01:17 | ||
| (this on an ubuntu box) | 01:18 | ||
| if I just comment out that whenever, runs fine. :)( | 01:19 | ||
| :) | |||
| the flash when it redraws is scary. | 01:20 | ||
| doesn't seem to highlight anything. | |||
| japhb | OK, fixed several bugs using your sample file. | 01:41 | |
| [Coke]: Grab the latest version of the gist and try again | |||
|
01:44
hulk joined
01:46
kylese left
02:15
hulk left,
kylese joined
05:13
Sgeo left
05:30
hurufu joined
06:32
hurufu left
06:54
hurufu joined
06:57
hurufu left
06:58
hurufu joined
07:09
hurufu left
07:41
hurufu joined
07:44
dakkar joined
09:14
hurufu left
09:24
ptc joined
09:28
ptc left
09:32
dicit joined
10:23
camelia left
10:55
hurufu joined
|
|||
| tbrowder | given all these new raku executables, do they all work in the surrounding support system like zef/fez and its huge body of work? | 11:12 | |
| lizmat | most of the installing modules logic is actually part of the core | 11:13 | |
| what the core does *not* have, is a selection logic for modules: that's zef | 11:14 | ||
| tbrowder | can i install all rakus on the same system with no conflict? | ||
| lizmat | zef just finds out what needs to be installed, and then tells the core to install it | ||
| tbrowder | ok, thanks | ||
| lizmat | I think rakupp also installs a "raku" executable, so that *could* be a conflict | 11:15 | |
| tbrowder | hm, iām happy with rakudo for now, but i know blazing speed is tempting⦠| 11:18 | |
|
11:56
johnjay left
12:00
johnjay joined
12:01
johnjay left
12:08
johnjay joined
12:10
hurufu left
12:15
hurufu joined
|
|||
| disbot | <antononcube> FYI: dev.to/2colours/is-generative-ai-k...-raku-37ai | 12:17 | |
| <antononcube> It relates to why it is "Raku Weekly News" now. (Not "Rakudo Weekly News",) | 12:18 | ||
|
12:21
johnjay left,
johnjay joined
12:36
dakkar left,
dakkar joined
12:44
dakkar left
12:45
dakkar joined
14:19
Sgeo joined
|
|||
| disbot | <antononcube> @lizmat Can trait memoized of "Sub::Memoized" be used for class methods. (I can experiment, and see, but, well, by asking I might find out quicker...) | 14:34 | |
| [Coke] | I think lizmat is on the road right now. | 14:53 | |
| So in general, yes, but today, nope. :) | |||
|
16:13
snobber left
16:17
snobber joined
16:31
abraxxa joined
16:35
hurufu left
16:40
hurufu joined
17:05
hurufu left
17:07
hurufu joined
17:10
abraxxa left
17:11
dakkar left
|
|||
| Voldenet | re AI are mostly good questions imo | 17:17 | |
| especially about how authoritative is what rakudo does vs what rakupp/mutsu do | 17:18 | ||
| e.g. should `nqp::bindlexdyn('&*ADD-WHENEVER', &NEW);` or RakuAST be supported by those impls too | 17:19 | ||
|
17:20
hurufu left
|
|||
| [Coke] | I don't believe anything in nqp is part of the Raku language. | 17:22 | |
| Voldenet | Yes sort of, but what if some very popular module uses nqp | 17:23 | |
| like JSON::Fast | |||
|
17:25
abraxxa joined
|
|||
| Voldenet | imo there should be attempts to make this more standard in some shape | 17:26 | |
| [Coke] | a motivator to rewrite using only core language features. | 17:27 | |
| IMO, nqp should be used ONLY in rakudo core. | |||
| Voldenet | I agree to some degree | 17:28 | |
| [Coke] | Curious how many things in the ecosystem have a 'use nqp' in them | ||
| Voldenet | but more interesting question would be "why they do use nqp" | 17:29 | |
| like it'd be great if there would be no performance reasons | 17:30 | ||
| or if all features were available, like `.add_phaser` or `.add-leave-phaser` | 17:33 | ||
| performance reasons are also a lot stricter, e.g. `nqp::add_i($x, $y)` is not `$x + $y` | 17:37 | ||
| ugexe | the direction of the language is for raku steering council. developing a compiler does not give anyone authority in directing the language, although practically speaking it puts such a developer in a good position to end up on the raku steering council | 17:38 | |
| Voldenet | I agree, but practically over the years the compiler has dictated what was actually possible, so modules happily used implementation details | 17:42 | |
| ugexe | sure. a lot of people such as myself have been saying that for awhile though. in the end its really up to module authors to think about what they are doing | 17:44 | |
| Voldenet | that doesn't change the fact that one "very incompatibly" dependency ends up with a lot of reverse dependencies | ||
| s/incompatibly/incompatible/ | |||
| evalable6 | Use of uninitialized value $_ of type Any in string context. Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful. in block <unit> at /tmp/tyrYbRNXhv line 1 |
||
| Voldenet | evalable6: I agree entirely ;p | 17:45 | |
| evalable6 | (exit code 1) ===SORRY!=== Error while compiling /tmp/OFQWDCnIbj Undeclared routines: I used at line 1. Did you mean ''? agree used at line 1. Did you mean 'grep'? entirely used at line 1 p used at line 1 |
||
| ugexe | in a way it does. authors are responsible for knowing about their dependencies | ||
| in other words: i dont see modules happily using implementation details isn't a language level problem. its a module author problem | 17:48 | ||
| s/isn't/as/ | 17:49 | ||
| Voldenet | in case of JSON::Fast of course every compiler is somehow able to use `use JSON::Fast;` despite `use nqp; nqp::while(my $i++ < 3, say "foo")` not really working properly | 17:50 | |
| (obviously, it was re-implemented to mimic the behavior) | |||
| since it's used by huge chunk of the ecosystem | |||
| what I'm trying to say is that if JSON::Fast could be implemented to work exactly the same (in performance terms) without nqp, it would be reasonable for it to get slight rewrite | 17:51 | ||
| and maybe some sort of low-level `use ops; ops::add_i` should exist for module usage | 17:53 | ||
| [Coke] | using nqp or something like ops::add_i is the wrong approach, IMO | 17:54 | |
| Voldenet | while ops would contain only small subset of operations that would get translated to nqp:: ops by rakudo during compilation | ||
| [Coke] | most of these usages of nqp:: was for speed on a version of the compiler that was probably over 4 years old at this point | 17:55 | |
| Voldenet | I partially agree, especially about things like `nqp::if/while/stmts` | 17:57 | |
| [Coke] | anyone know the replacement for greppable? I thought it was rakkable, but don't see that in here. | 17:59 | |
| ah, it is rakkable. maybe it's just not logged in right now. | 18:10 | ||
| Voldenet | but I still wouldn't know how to do `nqp::bindpos` or do addition on int32 especially | 18:12 | |
|
18:17
rnddim is now known as ShimmerFairy
|
|||
| [Coke] | forking json::fast to see how hard it is to update. anyone have a benchmark for it? | 18:24 | |
| Voldenet | m: use Bench; use JSON::Fast; my $r; my $s = <test.json>.IO.slurp; say Bench.new.timeit: 1000, { to-json from-json($s), :!pretty; } # something like this | 19:01 | |
| evalable6 | (exit code 1) ===SORRY!=== Error while compilin⦠| ||
| Voldenet, Full output: gist.github.com/1e50ff5c907f82afad...10e54eb56d | |||
| Voldenet | ofc test.json can be arbitrarily complex or large | ||
| depending on what's useful | |||
| Btw, JSON::Fast got its implemented in both mutsu and rakupp already | 19:03 | ||
| ugexe | how a JSON::Fast implements something in a compiler agnostic way almost means you can't optimize it at all unless all compilers implement the same optimizations (and even that assumes the optimization implementations are created equal) | ||
| Voldenet | its versions* | ||
| > github.com/tokuhirom/mutsu/blob/ma...N/Fast.pm6 | 19:04 | ||
| I don't get it | |||
| but it looks like fork working under mutsu only | 19:05 | ||
| not reimplementation | |||
| rakupp does this in the meanwhile: github.com/ash/rakupp/blob/main/sr....cpp#L1083 | 19:08 | ||
|
19:14
jjido joined
|
|||
| japhb | Serializer benchmarks: github.com/japhb/App-SerializerPerf | 19:18 | |
| Updates to test a couple newer serializers as well as the different compilers would be useful, but it should get someone started. | 19:19 | ||
| The reason for using nqp isn't just pure per-op performance, but rather that nqp can express "scopeless" control structures in a way that Raku cannot. | 19:21 | ||
| In addition, there are some single nqp ops that cannot be expressed as a single operation in Raku | 19:22 | ||
|
19:23
jjido left
|
|||
| japhb | Sufficiently advanced optimizers might be able to solve that last one, but before they get used in place of nqp ops, those optimizations would have to be on all compilers. | 19:23 | |
| Completely separate topic: | |||
| [Coke]: Did the final version of the overview watcher that I sent last night work for you? | 19:24 | ||
| [Coke] | Didn't make it back yet, sorry! | 19:44 | |
| japhb | Ah! Do let me know when you do get a chance to try it. :-) | 19:46 | |
| [Coke] | I disagree that use HLL code instead of potentially wrongly optimized NQP is going to force compilers to use the same optimizations. | 19:48 | |
| *using HLL | 19:49 | ||
| (Different compilers have different optimizations and different speed characteristics seems part of the point) | 19:57 | ||
| "This type (List) does not support elems" whee | 20:01 | ||
| japhb | [Coke]: I meant, to give devs of performance-critical modules (like the serialization modules) sufficient reason to convert their existing nqp code back to pure-Raku. | 20:03 | |
| [Coke] | There's an assumption there, that the nqp code is faster. | 20:07 | |
| and that nqp code was, in all cases, written before the other compilers got here, and before SO MANY changes in rakudo | |||
| (which is why I'm doing a conversion of JSON::Fast right now to benchmark it) | 20:08 | ||
| ugexe | [Coke]: if you are referring to my comment im talking at the HLL level, e.g. what type of loop should be used. i've always been against using nqp stuff in code (although i do use it in one spot in zef for sha1s) | 20:12 | |
|
20:18
abraxxa left
|
|||
| [Coke] | another note: maintainability is improved by moving out of handrolled nqp. | 20:21 | |
|
20:30
Some-body_ joined
20:33
DarthGandalf left
20:34
Some-body_ is now known as DarthGandalf
20:45
jjido joined
|
|||
| [Coke] | japhb: can you resend the gist url? | 20:52 | |
|
20:53
Ekho left,
Fondue left,
Fondue joined
21:30
Ekho joined
|
|||
| [Coke] | .seen fco | 21:51 | |
| tellable6 | [Coke], I haven't seen fco around, did you mean cog? | ||
|
22:04
jjido left
|
|||
| lizmat | [Coke]: rakkable only runs on #raku-dev atm | 22:29 | |
| Voldenet | > nqp can express "scopeless" control structures in a way that Raku cannot | 22:31 | |
| ah, so optimizers should be able to guess it, but they're not forced to | 22:32 | ||
| maybe `could` is the righter word | |||
| but if there are low-level ops that aren't in raku (not related to inner workings of moarvm) then maybe they should get exposed somehow | 22:38 | ||
| maybe not via `ops.method`, but not via new operator either, something trivial to translate and unambiguous in compilation time | 22:39 | ||