1
Fork 0

bump to zig 0.11.0-dev.2560+602029bb2

main
Motiejus Jakštys 2023-04-12 22:24:20 +03:00
parent f55fb9f86a
commit abeb25f3e2
2 changed files with 22 additions and 21 deletions

View File

@ -10,35 +10,36 @@ Turbonss is optimized for reading. If the data changes in any way, the whole
file will need to be regenerated. Therefore, it was created, and best suited, file will need to be regenerated. Therefore, it was created, and best suited,
for environments that have a central user & group database which then needs to for environments that have a central user & group database which then needs to
be distributed to many servers/services, and the data does not change very be distributed to many servers/services, and the data does not change very
often (e.g. hourly). often.
This is the fastest known NSS passwd/group implementation for *reads*. On my This is the fastest known NSS passwd/group implementation for *reads*. On my
2018-era laptop a corpus with 10k users, 10k groups and 500 average members per 2018-era laptop a corpus with 10k users, 10k groups and 500 average members per
group, `id` takes 17 seconds with the glibc default implementation, 10-17 group, `id` takes 17 seconds with the glibc default implementation, 10-17
milliseconds with a pre-cached `nscd`, ~8 milliseconds with `turbonss`. milliseconds with a pre-cached `nscd`, ~8 milliseconds with uncached
`turbonss`.
Due to the nature of being built with Zig, this will work on glibc versions as
old as 2.16 (may work with even older ones, I did not test beyond that).
Project status Project status
-------------- --------------
The project is finished and was never used recommended for production. If you This project works, but has never seen real production use. If you want to use
are considering using turbonss, try nscd first. Turbonss is only 2-5 times turbonss instead of a battle-tested, albeit slower nscd, keep the following in
faster than pre-warmed nscd, which usually does not matter enough to go through mind:
the hoops of using a nonstandard nss library in the first place. - turbonss has not been fuzzed, so it will crash a program on invalid database
file.
- requires a nightly version of zig (that will change with 0.11).
Yours truly worked on this for about 7 months. This was also my first zig If you insist on using turbonss in prod, compile with `ReleaseSafe`. It is
project which I never went to (nor really needed to) come back and clean up. plenty as fast with this mode, but an invalid database will lead to defined
behavior (i.e. crash with a stack trace) instead of overwriting memory
Update 2022-02: I am reviving it: wherever.
- updated to stage2, so it works on nightly again.
- I learned some zig over the last year, will be cleaning it up.
Currently it has not been fuzz-tested, so it will crash on invalid data. Please
use `ReleaseSafe` until it is fuzzed.
Dependencies Dependencies
------------ ------------
1. zig 0.11.0-dev.1782+b52be973d or higher. 1. zig around 0.11.0-dev.2560+602029bb2.
2. [cmph][cmph]: bundled with this repository. 2. [cmph][cmph]: bundled with this repository.
Trying it out Trying it out

View File

@ -83,7 +83,7 @@ pub fn build(b: *zbs.Builder) void {
exe.strip = strip; exe.strip = strip;
exe.want_lto = true; exe.want_lto = true;
addCmphDeps(exe, cmph); addCmphDeps(exe, cmph);
exe.install(); b.installArtifact(exe);
} }
{ {
@ -96,7 +96,7 @@ pub fn build(b: *zbs.Builder) void {
exe.compress_debug_sections = .zlib; exe.compress_debug_sections = .zlib;
exe.strip = strip; exe.strip = strip;
exe.want_lto = true; exe.want_lto = true;
exe.install(); b.installArtifact(exe);
} }
{ {
@ -109,7 +109,7 @@ pub fn build(b: *zbs.Builder) void {
exe.compress_debug_sections = .zlib; exe.compress_debug_sections = .zlib;
exe.strip = strip; exe.strip = strip;
exe.want_lto = true; exe.want_lto = true;
exe.install(); b.installArtifact(exe);
} }
{ {
@ -125,7 +125,7 @@ pub fn build(b: *zbs.Builder) void {
exe.linkLibC(); exe.linkLibC();
exe.linkLibrary(bdz); exe.linkLibrary(bdz);
exe.addIncludePath("deps/cmph/src"); exe.addIncludePath("deps/cmph/src");
exe.install(); b.installArtifact(exe);
} }
{ {
@ -146,7 +146,7 @@ pub fn build(b: *zbs.Builder) void {
so.linkLibC(); so.linkLibC();
so.linkLibrary(bdz); so.linkLibrary(bdz);
so.addIncludePath("deps/cmph/src"); so.addIncludePath("deps/cmph/src");
so.install(); b.installArtifact(so);
} }
{ {