github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
Geth MoarVM/eliminate-static-race-condition: 4905967917 | (Nicholas Clark)++ | 4 files
Add `MVM_get_running_threads_context` to get the running thread's context

Start with a fallback implementation using `uv_key_create`, `uv_key_set` and
  `uv_key_get`, to eliminate the static variable and make the code thread
safe.
Use this in `qsort`'s callback, which needs to call functions that take the ... (10 more lines)
13:25
MoarVM/eliminate-static-race-condition: 73862d27d3 | (Nicholas Clark)++ | 2 files
Add MVM_THREAD_LOCAL to declare variables with thread local storage

If the compiler provides this, it's likely much faster than UV's API, which is (basically) POSIX thread local storage, and requires a function call for each "get". UV appears to rely on Win32 compilers supporting this. All recent gcc and clang versions support it, and seemingly also the vendor compilers on Solaris and AIX. ... (6 more lines)
MoarVM: nwc10++ created pull request #1374:
Eliminate static race condition
13:26
nwc10 sigh, oops, missed a reword. Sadly it seems that the "much" in "likely much faster" isn't true when you're building shared library code. 13:28
it *is* for regular code. 13:29
Geth MoarVM/eliminate-static-race-condition: 8f5f92f9cf | (Nicholas Clark)++ | 2 files
Add MVM_THREAD_LOCAL to declare variables with thread local storage

If the compiler provides this, it's likely faster than UV's API, which is
  (basically) POSIX thread local storage, and requires a function call for
each "get". UV appears to rely on Win32 compilers supporting this. All recent gcc and clang versions support it, and seemingly also the vendor compilers on Solaris and AIX. ... (6 more lines)
14:07
MoarVM/eliminate-static-race-condition: 3786fe65b4 | (Nicholas Clark)++ | 3 files
A probe for compiler thread local storage support.

Not needed on Win32, as UV already exposes it there.
Geth MoarVM: 004e4bc77a | (Nicholas Clark)++ | build/probe.pm
The probe for `pthread_setname_np` needs prototypes from <string.h>

The compiler warns about this (but still compiles it successfully). The default for probes is to discard all output, so this is hidden.
17:32
MoarVM/eliminate-static-race-condition: 4cfde6edf1 | (Nicholas Clark)++ | 4 files
Add `MVM_get_running_threads_context` to get the running thread's context

Start with a fallback implementation using `uv_key_create`, `uv_key_set` and
  `uv_key_get`, to eliminate the static variable and make the code thread
safe.
Use this in `qsort`'s callback, which needs to call functions that take the ... (10 more lines)
18:41
MoarVM/eliminate-static-race-condition: ac941c0d59 | (Nicholas Clark)++ | 2 files
Add MVM_THREAD_LOCAL to declare variables with thread local storage

If the compiler provides this, it's likely faster than UV's API, which is
  (basically) POSIX thread local storage, and requires a function call for
each "get". UV appears to rely on Win32 compilers supporting this. All recent gcc and clang versions support it, and seemingly also the vendor compilers on Solaris and AIX. ... (6 more lines)
MoarVM/eliminate-static-race-condition: 8d68b18f99 | (Nicholas Clark)++ | 3 files
A probe for compiler thread local storage support.

Not needed on Win32, as UV already exposes it there.
Geth MoarVM/void-prototypes: 1eda12a0a6 | (Nicholas Clark)++ | 5 files
Use `foo(void)` instead of just `foo()` for functions that take no arguments

Whilst the two are equivalent in C++, in C the latter is just a declaration not a prototype - it specifies the return type but not the parameters, meaning that the compiler can't actually check the parameters passed and report errors. An explicit `void` makes it a prototype, declaring that the function takes no arguments. ... (11 more lines)
19:39
MoarVM: nwc10++ created pull request #1375:
Use `foo(void)` instead of just `foo()` for functions that take no arguments
19:40
Geth MoarVM: 1eda12a0a6 | (Nicholas Clark)++ | 5 files
Use `foo(void)` instead of just `foo()` for functions that take no arguments

Whilst the two are equivalent in C++, in C the latter is just a declaration not a prototype - it specifies the return type but not the parameters, meaning that the compiler can't actually check the parameters passed and report errors. An explicit `void` makes it a prototype, declaring that the function takes no arguments. ... (11 more lines)
21:09