Contributions
Patches I sent to open-source projects maintained by other people.
Linux kernel
The kernel takes patches by mail, so there are no pull requests to point at, only commits. The ones that mattered most:
- d99e1bd175f4 Dropped the preempt_conditional_sti()/cli() wrappers in the x86 trap handlers for the plain preemption calls, and renamed conditional_sti()/cli() to cond_local_irq_enable()/disable() - the names the entry code still uses today.
- 7aca0c072073 clocksource_khz2mult() and clocksource_hz2mult() carried the same mult calculation twice, differing only in the unit of the frequency; introduced clocksource_freq2mult() and built both on it.
- e77e19ac0fd5 A copy-pasted branch in the rtl8192e gain code tested the high-power high threshold twice, so the low one was unreachable and could never be set.
- 8c9c1701c7c2 for_each_memblock() takes the name of a memblock type, so nothing could walk a type it only had a pointer to. Added the macro that can, and used it through memblock.c.
- 7cebc7281744 The amdgpu module failed to link with CONFIG_DEBUG_FS off: two debugfs functions were called but never defined.
- f705ac4b39f3 memblock_{add,reserve}_region() only printed debug output before handing over to memblock_add_range(), and nothing outside memblock.c called them, so they folded into their callers.
- 2024315124b4 Removed the 32-bit SAVE_ALL/RESTORE_ALL macros from the x86 entry code - 31 lines that no longer had a caller.
- b9f7f1d0846f The dgap driver carried its own copy of strpbrk() under a different name.
systemd
33 patches merged between 2016 and 2018, most of them cleanups across the tree. The ones that mattered most:
- #2522 PID 1 threw away the return value of the early API filesystem mount, so a failure there was silent and boot carried on regardless. Now it stops with a message saying what failed.
- #2671 Eleven tools each carried a private copy of the same wrapper, whose whole job was to check the no-pager flag before opening the pager. Moved the check into pager_open() itself and deleted the copies.
- #2791 Replaced the open-coded branch that sets or clears one flag bit with the SET_FLAG() macro, across sd-bus, sd-netlink and the rest of the tree.
- #2611 Added a helper for deserializing a single timestamp, which several places were open-coding around the dual-timestamp one.
- #3641 Replaced the three repeated calls that clear close-on-exec on the standard descriptors with one helper.
- #2547 The second- and microsecond-precision timestamp formatters were the same function written out twice; merged them into one that takes a flag for the precision.
- #3601 Added a macro for the sentinel that tells the string list helpers to skip an entry, instead of casting it by hand at every use.
- #2512 Pulled the shared mount loop out of the early and normal mount setup paths.
ClickHouse
- #103550 The GenerateRandom table engine used its first argument as the maximum string length, so a table created with a seed generated strings limited by that seed.
- #103102 String search functions accept their arguments in both orders, but the type error always named the argument from the first order, so it reported the wrong one.
MariaDB
10 patches merged between August 2016 and January 2023. The ones that mattered most:
- #226 THD::free_connection() and THD::reset_for_reuse() called profiling.restart() and profiling.reset() unconditionally, so the server did not compile at all without ENABLED_PROFILING.
- #2416 Several mysys routines gained a PSI_memory_key parameter, but the synopses above them still described the old signatures.
- #620 Two consecutive branches in mysqld.cc tested opt_bin_log one after the other; merged them into one.
- #232 mysql_real_connect() cleared net->vio at a point the code only reaches after having already returned for a non-zero one, so the store could never do anything.
llvm
rkt
12 patches merged between June 2016 and January 2017. The ones that mattered most:
- #3016 rkt trust read the skip-TLS-check flag off the public key manager it was in the middle of initializing instead of off the global options, so --insecure-options=tls silently did nothing.
- #3492 rkt stop and rkt rm never closed the pod that PodFromUUIDString() had opened for them.
- #3498 Taught cat-manifest to take --uuid-file, so it can read the UUID that rkt run --uuid-file-save wrote instead of being told it again.
- #2829 common/cgroup collected the same read-only mount flags and made the same mount call in several places; added the helper they now share.
- #3004 Stripping the empty lines out of a multiline string was written out wherever it was needed; introduced RemoveEmptyLines() and used it.
- #2834 apps.GetImageIDs() lost its last caller when pod registration moved from stage1 to stage0, which passes the pod's apps instead.
remacs
7 patches merged in January 2017, into the Rust port of Emacs, mostly moving pieces of the C sources over:
- #86 Every line of src/msdos.c stood behind MSDOS, which nothing built any more; deleting the file removed 4206 of them.
- #67 Rust implementation of CHECK_STRING(), and moved STRINGP into lisp::deprecated alongside FLOATP and NUMBERP.
- #71 Rust implementation of the max-char function.
- #57 Rust implementation of CHECK_MARKER() from src/marker.c.
- #59 Rust implementation of XFASTINT().
- #40 Rust implementation of Fnull.
- #72 XFLOAT_DATA had no callers on the Rust side yet, so every build warned about it; marked it dead_code until one arrived.
conform
- #83 Let a project use schemas from dependencies that it does not depend on directly.
- #40 Allowed an empty string as the default value of a custom data type.
- #38 Dropped the import key after schemas were merged, so it did not leak into the result.
- #36 Added support for custom data types in the schema.
- #33 Allowed translation functions to live in a module so several mappings can reuse them.
- #29 Documented the complex data types.
- #28 Added support for complex types in the schema.
scikit-learn
nats.ex
- #215 Made the Elixir client report a key removed by its TTL as a deletion, by reading the marker header NATS leaves behind.
- #212 Added the per-message TTL options of NATS 2.11 to the Elixir client, with tests that run against that server version.
- #163 Added the stream option that discards new messages per subject once a subject hits its limit.
PyHSS
Erlang/OTP
Rust
Two minor patches to the bootstrap tooling: