You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 17ff9da
Browse filesBrowse the repository at this point in the historyBrowse files
~ work through docs/code-review.md: all suites green, CI gates on everything
P1 fixes:
- BGPSimplifier double-ownership (the test_QueryMap heisenbug):
tableDisjunction now captures the outer conjunction once, processes
each disjunct in a fresh context, and joins the pending conjunction
as a whole; flushConjunction no longer re-adds a BGP that
defaultGraphPattern/namedGraphPattern already added. Diagnosed with a
new SWOBJ_DEBUG_DOUBLE_DELETE build (TableOperation live-set +
tree-overlap check in ChainingMapper::map; kept, compiled out by
default). 0/30 failures in release and instrumented stress runs
(was 8/25).
- ShEx semantic actions fire only from the accepted matching: step-6
candidate filtering runs with the handler suppressed, the accepted
matching re-validates its chosen pairs with the handler on, and
every rejection path rolls back to a per-matching mark.
- SPARQL hash builtins (MD5/SHA1/SHA256/SHA384/SHA512) implemented in
self-contained lib/SWCrypto.hpp, verified against system md5/shasum;
replaces the dead CRYPT_LIB path (whose RAND() fallback returned a
constant - now <random>). test_SPARQL11 fully green.
- CSV <foo>-as-IRI branch re-enabled in ResultSet.cpp (conformant CSV
results serialize IRIs bare, so only literal <...> cells change);
function_library passes, csv-tsv results tests unaffected.
P2 leaks/ownership:
- ShExCParser.ypp %destructor declarations (interned TTerms and the
emptyShape sentinel excluded); fixed two action-ordering bugs they
exposed (addFacet duplicate-facet path, start-already-defined path).
- ~SPARQLDriver frees stranded curFilter/curOp; ~ShExDriver frees
stranded pendingRestricts.
- getRDFLiteral frees a stray langtag on typed-literal returns.
- ParserDriver namespace map: unique_ptr + observer, freeNamespaces
bool gone. test_ShEx caches and GraphIndex use unique_ptr / a real
(s,p)->o map.
P6 performance:
- ShEx neighborhood extraction uses the BGP SP/PO indexes
(getTripleIterator); fixed a latent empty-range end-iterator
dereference in triple_iterator's range constructor.
- Matchings is now a pruning DFS bounded per-TC by
SorbeExpr::maxCounts (product of enclosing cardinality maxima).
Items 10/13/14/15 resolved with rationale in docs/code-review.md
(bison %union + emptyShape sentinel make unique_ptr containers wrong
for the ShEx AST; the closed spec AST doesn't warrant visitor
conversion; grammar actions are already minimal; cardinality
arithmetic already unified).
Verification: all 21 ctest suites pass locally (first time);
LSan (ubuntu:24.04): test_DAWG, test_ShEx incl. negativeSyntax, and
the ShExMap CLI are leak-free; test_QueryMap retains ~2.8KB of
pre-existing success-path leaks, catalogued in the doc. CI now gates
on the full suite.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments