100 Commits
Author SHA1 Message Date
andrew a40b5dcd74 Add script to build .pkg file for macos 2024-04-08 15:21:40 -07:00
andrew 193b1926ff Fix python type annotation 2024-04-07 22:28:40 -07:00
andrew 1c900c5a8c Use PRE_LINK
According to
https://cmake.org/cmake/help/latest/command/add_custom_command.html this
more accurately matches the intent
2024-04-04 17:03:57 -07:00
andrew 90fdcdd51a Don't update mtime in privatize_symbols_macos.sh
It confuses ninja and we see things like the following:

ninja explain: stored deps info out of date for 'CMakeFiles/conflict-set-object.dir/ConflictSet.cpp.o' (1712275080328387291 vs 1712275080349012981)
2024-04-04 17:02:51 -07:00
andrew eb3f6823eb Remove prettier
It caused a weird jenkins error trying to look at /etc/passwd. Not worth
the trouble for formatting yaml and md, which I'm barely using.
2024-04-04 16:29:26 -07:00
andrew 1534e10b75 Fix macos shared library name in conflict_set.py 2024-04-04 16:17:06 -07:00
andrew 3c100ccee8 Add prettier and black as pre-commit hooks 2024-04-04 15:59:27 -07:00
andrew 5cf45d1c35 Preliminary support for writing tests in python 2024-04-04 15:58:57 -07:00
andrew 4f97932893 Bump version 2024-04-04 12:02:01 -07:00
andrew 24b0f6b7e4 Add missing _GLOBAL_OFFSET_TABLE_ symbol 2024-04-04 11:36:32 -07:00
andrew e77c3fdee6 Adding missing memset import 2024-04-04 11:35:44 -07:00
andrew 383b956bc0 Set debian libc6 dep precisely 2024-04-04 11:12:41 -07:00
andrew 5fad15305a Track x64 and arm imports in separate files 2024-04-04 11:04:26 -07:00
andrew ad91fb36a5 Symbol tests for macos + whitelist imports/exports
commit 1ad8276100
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:44:35 2024 -0700

    Add symbols for arm build

commit 058e4d5302
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:42:48 2024 -0700

    Add _GLOBAL_OFFSET_TABLE_

commit a201f3ada8
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:34:05 2024 -0700

    Add memset to symbol imports

commit c1129ed0e2
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:32:28 2024 -0700

    Add symbol imports file

commit 618766ce2e
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:27:07 2024 -0700

    Fix objcopy filepath

commit e774a90007
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:24:44 2024 -0700

    Use shellcheck precommit without docker

commit baddea7f57
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:20:26 2024 -0700

    Update and freeze pre-commit hooks

commit 2d3e7b9004
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:19:55 2024 -0700

    Add shellcheck to pre-commit

    Closes #22

commit c4862fee9b
Author: Andrew Noyes <andrew@weaselab.dev>
Date:   Wed Apr 3 12:15:08 2024 -0700

    Add symbol tests for apple

    closes #21
2024-04-03 12:50:51 -07:00
andrew 38c1481432 Make visibility=hidden symbols private on macos 2024-04-02 18:30:17 -07:00
andrew 771ae896e7 Check that -msimd128 flag is valid 2024-04-02 15:48:18 -07:00
andrew 5bf72bda61 Don't treat full_relro_flags as all one flag 2024-04-02 14:20:22 -07:00
andrew a534f3b758 Conditionally add -pie 2024-04-02 14:15:11 -07:00
andrew ae4fa889c7 Partial support for wasi-sdk 2024-04-02 12:14:04 -07:00
andrew e3d3b0ec0d objcopy doesn't support --keep-global-symbols for wasm 2024-04-02 12:09:01 -07:00
andrew dea8d6ae01 Align ArenaImpl allocation to alignof(ArenaImpl)
Fixes #20
2024-04-01 17:31:16 -07:00
andrew dbc6f2313a Add missing cerrno include 2024-04-01 17:21:43 -07:00
andrew 4f51878642 Add -msimd128 if USE_SIMD_FALLBACK=OFF 2024-03-30 17:57:50 -07:00
andrew 215865a462 Experimental wasm support 2024-03-30 16:20:55 -07:00
andrew 348ebf016a Enable relro for shared lib 2024-03-29 21:51:02 -07:00
andrew 377259ffa0 Unsuppress -Wmaybe-uninitialized
I don't see the warning anymore locally
2024-03-29 18:57:43 -07:00
andrew 70220d95e7 Bump version 2024-03-29 16:23:09 -07:00
andrew 71c39f9955 Opt-in to rpm/deb default package filenames 2024-03-29 15:56:58 -07:00
andrew 8cc17158fd Fix preprocessing instructions for linux 2024-03-28 14:58:29 -07:00
andrew ab211c646a Apply compiler-appeasing syntax changes from Taoxi 2024-03-28 14:57:31 -07:00
andrew 7af961f141 Fix jenkins build 2024-03-28 11:44:01 -07:00
andrew a91df62608 Add USE_SIMD_FALLBACK build in jenkins 2024-03-28 11:33:53 -07:00
andrew 0a1843a161 Add USE_SIMD_FALLBACK 2024-03-28 11:12:50 -07:00
andrew 4edf0315d9 Find insertion point for Node16 with simd
Closes #13
2024-03-28 10:47:20 -07:00
andrew 14515e186a Update readme benchmarks again
I think the last skiplisttest benchmark looked bad because I had vscode
+ firefox + ?? open
2024-03-27 16:47:36 -07:00
andrew b0085df5ad Update symbols.txt 2024-03-27 16:29:30 -07:00
andrew 76a7e17b29 Update readme benchmarks
I was incorrectly linking to an old build of conflict set, before the
conflict-set name change. I don't know what the regression is from, but
update the README for transparency now.
2024-03-27 16:12:45 -07:00
andrew 5cf43d1bfa Add weaselab namespace 2024-03-27 16:07:05 -07:00
andrew 25cc427ec5 Assert safe_free size is correct in debug builds
Closes #16
2024-03-27 15:34:24 -07:00
andrew c15c2e7b44 Remove redundant static assert
Closes #14
2024-03-27 12:41:45 -07:00
andrew a4d1f91670 Update README benchmark after adding getBytes 2024-03-20 16:26:05 -07:00
andrew b7cdecaf71 Document thread-safety in terms of constness 2024-03-20 16:16:15 -07:00
andrew cda28643a6 Fix ConflictSet_getBytes 2024-03-20 16:15:43 -07:00
andrew cdb5360b9a Allow _GLOBAL_OFFSET_TABLE_ usage 2024-03-20 12:39:18 -07:00
andrew ef224a60f4 Allow use of __tls_get_addr 2024-03-20 12:29:18 -07:00
andrew 6222b74787 Fix tests
Add the new symbol, and update the valgrind client request so that
Node::partialKeyCapacity is defined.
2024-03-20 12:21:59 -07:00
andrew 19edc6f78f Interface change! Add ConflictSet::getBytes
Closes #12
2024-03-20 12:11:34 -07:00
andrew 3f9d01c46a Users will now do find_package(conflict-set) 2024-03-19 19:05:54 -07:00
andrew db03c6f901 Fix invalid package name for debian 2024-03-19 17:43:58 -07:00
andrew c1698b040b Disable tsan for debug builds
Too slow
2024-03-19 16:54:29 -07:00
andrew 2e08b54785 Update README.md with 1.0 benchmarks
Closes #7
2024-03-19 16:41:59 -07:00
andrew aa6f237d50 Document and test thread safety properties
Closes #2
2024-03-19 16:27:24 -07:00
andrew becfd25139 De-templatize kUseFreeList
This results in smaller code. This is part of the "let the compiler be
in charge of inlining decisions" theme.
2024-03-19 15:12:31 -07:00
andrew d78b36821b Remove more redundant nullptr checks 2024-03-19 15:05:34 -07:00
andrew ce79b47fbe Revert 303b368fc5
This is a code-size / speed tradeoff. Maybe it's a good idea here, but
it's a bit weird to do this in some places and not others (there are
many places we can avoid switching on type this way). The compiler can
inline and then dead code eliminate to achieve the same effect, so we'll
just let the compiler be in charge of inlining decisions.
2024-03-19 15:01:13 -07:00
andrew 727b7e642a Save more redundant nullptr checks 2024-03-19 14:34:59 -07:00
andrew cb4c2b7e1e Avoid redundant null check in some cases 2024-03-19 14:29:13 -07:00
andrew ef9b789745 Remove unused code 2024-03-19 11:12:03 -07:00
andrew edd7bcaa1e Check ConflictSet preconditions in script_test 2024-03-19 10:31:04 -07:00
andrew be8ac879c5 Update README benchmarks 2024-03-18 17:24:26 -07:00
andrew 83c7f66d67 Remove some redundant nullptr checks 2024-03-18 16:22:24 -07:00
andrew a5710b8282 Remove performance-only code from debug build for increased coverage 2024-03-18 16:21:55 -07:00
andrew c31eebd5de No caller of CheckRangeRightSide::downLeftSpine has null n 2024-03-18 16:03:41 -07:00
andrew ddeb059968 Remove more dead code 2024-03-18 16:01:56 -07:00
andrew 5a0bcf9a5a Strengthen precondition to checkRangeStartsWith
and remove resulting dead code
2024-03-18 15:44:44 -07:00
andrew 97717cec86 Remove suspected dead code
Removing it is definitely safe. I suspect that any way to get here would
have already returned from checkRangeRead during the search for the
common prefix
2024-03-18 15:30:15 -07:00
andrew 6a13c43a78 Remove mistakenly checked in printfs 2024-03-18 14:03:09 -07:00
andrew c6c438bae2 Address more missing coverage
cc #3. Found some non-trivial dead code this time!
2024-03-18 14:01:30 -07:00
andrew 7d4f832b43 Address some missing coverage
cc #3
2024-03-18 13:36:35 -07:00
andrew 5b0c3c2428 Exclude more from coverage
Only count ConflictSet.cpp in jenkins now, and also add some more
excludes for unreachable lines
2024-03-18 12:05:52 -07:00
andrew f2b5e9b0bf Change max key len to 8, update corpus
Now that we don't have a fixed buffer reserved for partial key bytes,
there's nothing (obvious) that makes testing short versus long keys much
different. maybeDecreaseCapacity is an exception, and we'll write some
tests covering that manually.
2024-03-18 11:55:43 -07:00
andrew 8e0e65dac6 Count implicit key byte for maybeDecreaseCapacity 2024-03-18 11:42:53 -07:00
andrew 5aab76847a Add inner-full-word test 2024-03-17 14:42:11 -07:00
andrew 1a51aa00e5 Run scripted tests 2024-03-16 22:04:30 -07:00
andrew 3975bada0c Add a simple language for scripting tests 2024-03-16 22:02:00 -07:00
andrew a5330b6e23 Minor paper tweaks 2024-03-16 12:45:36 -07:00
andrew 2e246ec6a4 Cachegrind says this is fewer instructions 2024-03-16 08:46:41 -07:00
andrew 6d7e3c9849 Fix invalid offsetof warnings 2024-03-15 21:37:21 -07:00
andrew 671da5d096 Collect gcc warnings again in Jenkins 2024-03-15 19:00:01 -07:00
andrew 303b368fc5 Add Type template parameter to maybeDownsize to avoid branch 2024-03-15 18:05:32 -07:00
andrew 9f5a68e2c0 Use plain loop for Node3 2024-03-15 17:35:14 -07:00
andrew dfbb3ce5f1 Use assume
It works now that we fell back to the __builtin_unreachable based
implementation for gcc.
2024-03-15 17:23:02 -07:00
andrew e7719b6e0b Disable sanitizers when cross-compiling 2024-03-15 17:04:49 -07:00
andrew 83fedf1f9e Remove dead code 2024-03-15 17:00:20 -07:00
andrew 8556caf360 Cachegrind says memset uses fewer instructions here 2024-03-15 16:57:16 -07:00
andrew 9d13ca84f5 Fix bug spotted by hand. No test coverage there yet 2024-03-15 16:55:34 -07:00
andrew a79436ee9b Use statically-known numChildren in Node3 -> Node16 2024-03-15 16:52:40 -07:00
andrew e9c8537cf2 Copy Node members and set children pointers in copyChildrenAndKeyFrom 2024-03-15 16:28:58 -07:00
andrew 5b988efe6f Consolidate copyChildrenAndKeyFrom implementations 2024-03-15 16:12:44 -07:00
andrew e35d698b21 Improve copyChildrenAndKeyFrom-related codegen 2024-03-15 08:19:16 -07:00
andrew 30496d14e7 Don't print out filename in TestDriver.cpp 2024-03-15 07:44:11 -07:00
andrew eb93157ddf Improve codegen in freeAndMakeCapacityAtLeast 2024-03-14 19:23:49 -07:00
andrew 9cafef8bbb Update benchmarks after fixing skip list bug in a9b3d3d 2024-03-14 15:50:55 -07:00
andrew 6f81580953 Guard SHOW_MEMORY-only code 2024-03-14 15:40:09 -07:00
andrew 429fe5baed Fix some uses of uninitialized memory
Introduced in ee36bda8f8, unsurprisingly.
2024-03-14 15:39:37 -07:00
andrew a0451e4423 Give radix tree setOldestVersion an extra 10 work per call
It seemed to really be important for the skip list. I'm cargo culting
this a little bit here.
2024-03-14 15:32:39 -07:00
andrew a9b3d3d1c9 Show peak memory in skip list, and fix setOldestVersion bug
It was not previously gc'ing faster than it was writing.
2024-03-14 15:31:29 -07:00
andrew b817e3c749 Track malloc size with a header for SHOW_MEMORY 2024-03-14 15:30:46 -07:00
andrew ee36bda8f8 Track initializedness of Node memory more precisely
By not initializing Node members with dummy default values.

This has performance/code size benefits, and improves debugging when
running under valgrind.

Unfortunately this also makes it easy to write code that uses
uninitialized memory, so if valgrind doesn't have good coverage then we
might let some uninit usages sneak through.

We plan to have good coverage for valgrind, so I think it's ok. If
writing correct code becomes too tedious then we can go back to
initializing Node fields with dummy default values.
2024-03-14 14:58:20 -07:00
andrew a8f4bd91c8 Use asan and ubsan for whitebox/fuzz tests 2024-03-14 13:47:21 -07:00