Welcome to the main channel on the development of MoarVM, a virtual machine for NQP and Rakudo (moarvm.org). This channel is being logged for historical purposes. Set by lizmat on 24 May 2021. |
|||
00:07
reportable6 left
00:09
reportable6 joined
02:59
frost joined
03:59
greppable6 left,
linkable6 left,
shareable6 left,
nativecallable6 left,
reportable6 left,
committable6 left,
quotable6 left,
unicodable6 left,
benchable6 left,
notable6 left,
coverable6 left,
releasable6 left,
statisfiable6 left,
tellable6 left,
bisectable6 left,
evalable6 left,
sourceable6 left,
bloatable6 left
04:00
tellable6 joined,
coverable6 joined,
bloatable6 joined,
nativecallable6 joined,
reportable6 joined,
sourceable6 joined
04:01
evalable6 joined,
shareable6 joined,
quotable6 joined,
linkable6 joined,
bisectable6 joined,
notable6 joined,
benchable6 joined,
unicodable6 joined,
greppable6 joined
04:02
committable6 joined,
releasable6 joined,
statisfiable6 joined
04:36
Kaiepi left
05:36
shareable6 left,
evalable6 left,
tellable6 left,
greppable6 left,
unicodable6 left,
notable6 left,
linkable6 left,
committable6 left,
statisfiable6 left,
sourceable6 left,
bisectable6 left,
benchable6 left,
coverable6 left,
bloatable6 left,
releasable6 left,
reportable6 left,
nativecallable6 left,
quotable6 left,
reportable6 joined
05:37
nativecallable6 joined,
shareable6 joined,
quotable6 joined,
tellable6 joined,
benchable6 joined,
bloatable6 joined
05:38
statisfiable6 joined,
greppable6 joined,
bisectable6 joined,
releasable6 joined,
coverable6 joined,
linkable6 joined,
evalable6 joined,
unicodable6 joined
05:39
sourceable6 joined,
committable6 joined,
notable6 joined
06:06
reportable6 left
|
|||
Nicholas | [* GOOD *] | 06:06 | |
(especially for ducks) | |||
06:07
reportable6 joined
|
|||
Nicholas | blog.pyston.org/2022/06/08/announc...on-module/ -- not that I have an answer, but if you can install 80% of the benefits as a module, what's the business model? | 06:40 | |
moon-child | business model? Afaik they made it mainly for their own use | 06:45 | |
nine | Looking at pyston.org, if they're trying to make money off this, they're not trying hard enough | 06:46 | |
Nicholas | IIRC. | 06:47 | |
(oops, I started too soon. I remembered a citation exists) | 06:48 | ||
blog.pyston.org/2020/10/ -- Our plan is to open-source the code in the future, but since compiler projects are expensive and we no longer have benevolent corporate sponsorship, it is currently closed-source while we iron out our business model. | 06:49 | ||
[time passes with no updates] | |||
blog.pyston.org/2021/05/05/pyston-...en-source/ -- what it says | |||
(what it doesn't say is that Facebook revealed and open sourced Cinder about the same time.) | 06:50 | ||
[time passes with no update] | |||
blog.pyston.org/2021/08/30/pyston-...-anaconda/ -- We talked to a couple of companies about a possible joint future for Pyston -- Now that we have Anacondaās sponsorship, we are planning out a short-term roadmap for the project. | 06:51 | ||
I can't find the cittaion, but some cynic roughly defined "startup" as "a company in search of a business model" | 06:54 | ||
anyway, the take away from the 3 blog posts (in sequence) is that the intent is to get paid to make python faster, which should pan out, because it saves enough money on hardware costs for some firms | 06:55 | ||
s/some firms/sufficient firms/ | |||
to be viable | |||
but trying to get enough of those firms to see it that way is much harder than actually the engineering task | 06:56 | ||
(oops, grammar) | |||
and similar funding problems seem to happen for all open source infrastructure projects | 06:57 | ||
nine | The good news is that I got rid of almost all regressions caused by my BEGIN time execution work. The bad news is that I realized that my approach is flawed and cannot be the real solution. | 07:03 | |
Nicholas | but you still have coffee? | 07:04 | |
nine | I do. And an idea that might actually work. | 07:07 | |
07:32
Kaiepi joined
|
|||
lizmat | ++nine++ | 07:51 | |
08:18
linkable6 left
08:20
linkable6 joined
09:39
nativecallable6 left,
notable6 left,
tellable6 left,
releasable6 left,
benchable6 left,
linkable6 left,
unicodable6 left,
reportable6 left,
quotable6 left,
bisectable6 left,
committable6 left,
sourceable6 left,
shareable6 left,
evalable6 left,
bloatable6 left,
coverable6 left,
statisfiable6 left,
greppable6 left,
coverable6 joined,
sourceable6 joined
09:40
nativecallable6 joined,
quotable6 joined,
linkable6 joined,
committable6 joined,
evalable6 joined,
greppable6 joined
09:41
statisfiable6 joined,
reportable6 joined,
unicodable6 joined
09:42
benchable6 joined,
shareable6 joined,
bloatable6 joined,
bisectable6 joined,
releasable6 joined,
notable6 joined,
tellable6 joined
10:41
RakuIRCLogger left,
Geth__ joined,
lizmat_ joined
10:42
Geth left
10:43
lizmat left
10:53
lizmat_ is now known as lizmat
|
|||
timo | just replace your python code with starlark :P | 11:31 | |
12:07
reportable6 left
12:10
reportable6 joined
|
|||
MasterDuke | wow. `my $OUT = $*OUT; $OUT.put("1") for ^1_000_000` takes ~0.34s, but `put("1") for ^1_000_000` takes ~1.30s, and `$*OUT.put("1") for ^1_000_000` takes ~1.26s | 12:12 | |
japhb | Yeah, dynamic variable lookup is still painfully slow. I've gotten in the habit (where I need the performance) of doing I/O via objects that cache their intended IO::Handle's and use methods on those. | 12:19 | |
MasterDuke | all the dynamics lookups are the source of those stats i posted earlier. but i have no idea if there's an easy improvement | 12:21 | |
i guess all the hash/cache misses are because they're dynamics being looked up, so i don't know what could be done | 12:29 | ||
timo | can you trace back where these strings come from that don't have the string hash code cached? | 12:49 | |
maybe they are for some reason created from concatenation or substringing over and over again | |||
japhb | MasterDuke: The part I don't understand is how you got millions of cases of *both* hashed and not hashed. | 12:50 | |
12:52
brrt joined
|
|||
MasterDuke | japhb: to confuse things, i've both talked about the string having a hash code, and the existence of a hash used as a cache of lexical names. so not sure which exactly your question is about | 12:52 | |
japhb | The second one, sorry | ||
MasterDuke | timo: 1000002 '$code' has no cached_hash_code, 1000005 'utf8' has no cached_hash_code, 1000006 '$*LIBPATH' has no cached_hash_code | 12:54 | |
that's when running `put "1\n" for ^1_000_000` | |||
japhb: i guess it's because sometimes the variable is in a frame with enough lexicals to cause the hash/cache to be created? | 12:57 | ||
github.com/MoarVM/MoarVM/blob/mast...#L647-L661 | |||
brrt | ohai #moarvm | 13:00 | |
Nicholas | good *, brrt | 13:03 | |
lizmat | brrt o/ | ||
13:12
dogbert17 left
|
|||
timo | inteesting, you wanna give changing that number to be lower a try and see how it impacts both run time and hashing details | 13:19 | |
there's no reason not to calculate&cache hash codes for stuff we get from get_heap_string in that piece of code maybe | 13:20 | ||
MasterDuke | you mean try fewer iterations of the loop? | 13:21 | |
timo | the "num_lexicals <= 5" number | ||
just the one on line 656 | |||
damn... what if there was an irc bot or something else where you could just say "apply s/foo/bar/ to moarvm file blah.c on line 1234, build a raku with it, then benchmark this snippet" | 13:23 | ||
MasterDuke | ah, now just 1000005 'utf8' has no cached_hash_code (and the same other random much smaller cases) | ||
timo | could you imagine | ||
MasterDuke | didn't el_che show something like that? | ||
timo | i dunno! maybe! | 13:24 | |
was that long ago? | |||
MasterDuke | year+ iirc | ||
fyi, i changed the 5 to 2 | 13:25 | ||
with just that change, `put("1") for ^1_000_000` drops to ~1.24s | 13:26 | ||
timo | i don't know what exact function you need to call if you want to ensure a string has a hash code | 13:31 | |
but if you can find that, put the number back to 5, and then in an else branch to the piece that adds stuff into the hash, only create the hash code | 13:32 | ||
that may give the same improvement, perhaps even better | |||
also, maybe nicholas can tell us how good our new hash impl is when the hash has really few entries, and if there is perhaps an improvement to be had there | 13:33 | ||
and maybe even something for when you know the strings up front and that the hash shouldn't grow ever? | |||
brrt is way out of date... | 13:34 | ||
timo | now i have a very understanding of "got a job, can't do my favourite open source project any more" | 13:35 | |
MasterDuke | ah. i put the number back up to 5, but then added `if (!name->body.cached_hash_code) MVM_string_compute_hash_code(tc, name);` right after `MVMString *name = get_heap_string(tc, cu, NULL, pos, 6 * j + 2);` and now it's just `1000005 'utf8' has no cached_hash_code` | 13:56 | |
`put("1") for ^1_000_000` looks to be just a tiny bit faster, maybe ~1.32s now | 13:57 | ||
14:08
brrt left
14:16
brrt joined
|
|||
brrt | timo: the thing is that open source projects don't start shouting at you, when you fail to make progress, whereas $dayjob-managers do | 14:25 | |
14:33
frost left
14:56
discord-raku-bot left,
discord-raku-bot joined
15:06
brrt left
15:14
discord-raku-bot left,
discord-raku-bot joined
15:33
vrurg left
15:55
vrurg joined
17:04
Kaiepi left,
Kaiepi joined
17:05
Kaiepi left,
Kaiepi joined
18:08
reportable6 left
18:10
reportable6 joined
|
|||
nine | I can't imagine any company can afford to have even halfway decent software engineers get shouted at. Feels like the only thing one has to do to get a new and better job is to stop saying no to offers. | 18:50 | |
18:52
dogbert17 joined
|
|||
lizmat | agree | 18:57 | |
nine | Corollary is: realize how much power you actually have in your position and use it to stop any abuse right in its track, or just leave. There's just no reason to compromise there. | 18:59 | |
19:34
Kaiepi left
20:02
Kaiepi joined
20:23
lizmat_ joined
20:27
lizmat left
20:39
linkable6 left
20:42
linkable6 joined
|
|||
nine | Finally! Got a working version of BEGIN time code execution without regressions, without totally messing up the compilation phases and with a code structure that I can live with. Passing 450 spec test files now | 21:14 | |
[Coke] | nine++ | 21:15 | |
MasterDuke | nice | 21:16 | |
21:29
MasterDuke left
21:40
MasterDuke joined
|
|||
japhb | Found a deadlock in my code that eventually boiled down to MVM_io_read_bytes and MVM_io_is_tty trying to lock the same (per-filehandle) mutex. I can totally see *most* IO operations being mutexed per-filehandle for safety ... but does MVM_io_is_tty need that treatment? Are there any OSen where checking whether an fd is a TTY is an operation that would mess with other IO? | 22:19 | |
(I introduced the deadlock by adding a debug assertion in my Raku code that wouldn't actually trigger during my test case, but included a .t on a filehandle already being .read in another thread -- so the assertion test itself triggered the deadlock.) | 22:21 | ||
22:27
Kaiepi left
23:56
Kaiepi joined
|