leptris 1.9.264.0 → 1.9.265.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Rakefile +1 -1
- data/lib/leptris/vendor/aarch64-linux/libleptris.so +0 -0
- data/lib/leptris/vendor/aarch64-linux-musl/libleptris.so +0 -0
- data/lib/leptris/vendor/arm-linux/libleptris.so +0 -0
- data/lib/leptris/vendor/arm-linux-musl/libleptris.so +0 -0
- data/lib/leptris/vendor/arm64-darwin/libleptris.dylib +0 -0
- data/lib/leptris/vendor/ppc64le-linux/libleptris.so +0 -0
- data/lib/leptris/vendor/s390x-linux-musl/libleptris.so +0 -0
- data/lib/leptris/vendor/x86_64-darwin/libleptris.dylib +0 -0
- data/lib/leptris/vendor/x86_64-linux/libleptris.so +0 -0
- data/lib/leptris/vendor/x86_64-linux-musl/libleptris.so +0 -0
- data/lib/leptris/version.rb +1 -1
- data/vendor-src/README.md +1 -1
- data/vendor-src/libleptris/CHANGELOG.md +12 -0
- data/vendor-src/libleptris/CMakeLists.txt +1 -1
- data/vendor-src/libleptris/src/leptris/dom/compact.c +22 -10
- data/vendor-src/libleptris/vcpkg.json +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5549f821f7f1ba7a4d5c161680e4535d439938b0d0d5220417e636b684805719
|
|
4
|
+
data.tar.gz: d7cb676a13bbce365e0f704e8cee85d006318071867040b3a6f87b29f90379ba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 88f706c894390f015bb8501e711a3063d5ae0d1588d5319e2606cdfa79fe1a657da37dda758a85b79833d172ccdc075fe1f61f5a300b42652f51d71b088516d1
|
|
7
|
+
data.tar.gz: a99096295f37ed317e9201400f273c76f94f29d78602cec42f8eba9bc4d4808d7cfa99a646cb11e7392ed4defbc7ea2e4f5be8e690c339ac73ddb257bc4c7ab8
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,14 @@ All notable changes to Leptris will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.9.265.0] - 2026-09-28
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Vendored libleptris 1.9.265: portable noinline macro for the
|
|
13
|
+
overflow_lookup helper, and overflow-table TLS reads confined to
|
|
14
|
+
the cold sentinel path (compact-mode perf).
|
|
15
|
+
|
|
8
16
|
## [1.9.260.0] - 2026-09-27
|
|
9
17
|
|
|
10
18
|
### Fixed
|
data/Rakefile
CHANGED
|
@@ -8,7 +8,7 @@ RSpec::Core::RakeTask.new(:spec)
|
|
|
8
8
|
# Pin for `rake compile` and the platform-gem builds. Keep in lockstep
|
|
9
9
|
# with .github/workflows/build.yml (which calls `rake compile`) and the
|
|
10
10
|
# CHANGELOG when libleptris releases.
|
|
11
|
-
LIBLEPTRIS_VERSION = "1.9.
|
|
11
|
+
LIBLEPTRIS_VERSION = "1.9.265"
|
|
12
12
|
# Vendored alongside libleptris for fn:normalize-unicode (TODO
|
|
13
13
|
# .restructure/20): built per platform with a RELOCATABLE @rpath
|
|
14
14
|
# install name, loaded by ffi.rb before libleptris so the
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/lib/leptris/version.rb
CHANGED
data/vendor-src/README.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [1.9.265] - 2026-09-28
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- portable noinline macro for the overflow_lookup helper (compact)
|
|
8
|
+
|
|
9
|
+
### Performance
|
|
10
|
+
|
|
11
|
+
- confine overflow-table TLS reads to the cold sentinel path (compact)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
3
15
|
## [1.9.264] - 2026-09-28
|
|
4
16
|
|
|
5
17
|
### Performance
|
|
@@ -198,6 +198,24 @@ void* leptris_compact_overflow_get(LeptrisCompactOverflowTable* table,
|
|
|
198
198
|
static LEPTRIS_THREAD_LOCAL LeptrisCompactOverflowTable* g_overflow_table = NULL;
|
|
199
199
|
static LEPTRIS_THREAD_LOCAL size_t g_overflow_table_refcount = 0;
|
|
200
200
|
|
|
201
|
+
/* Lane-18 round 12: sentinel-path lookup, deliberately NOINLINE.
|
|
202
|
+
* Under LTO the shared decoders inline into the attribute/child walk
|
|
203
|
+
* and get_overflow_table() inlines with them — the compiler then
|
|
204
|
+
* hoists its two thread-local loads (g_overflow_table,
|
|
205
|
+
* g_overflow_table_refcount — a tlv_get_addr pair) onto the HOT walk
|
|
206
|
+
* path as speculative loads, ~6 ns per query for a table that is
|
|
207
|
+
* never populated on single-arena documents. A call in the cold
|
|
208
|
+
* branch cannot be speculated: the TLS reads stay cold, the hot
|
|
209
|
+
* decode stays inline, and parse (which never takes this branch)
|
|
210
|
+
* is untouched. */
|
|
211
|
+
static LeptrisCompactOverflowTable* get_overflow_table(void);
|
|
212
|
+
|
|
213
|
+
static LEPTRIS_NOINLINE void* overflow_lookup(const void* field_addr, size_t size) {
|
|
214
|
+
LeptrisCompactOverflowTable* table = get_overflow_table();
|
|
215
|
+
if (!table) return NULL;
|
|
216
|
+
return leptris_compact_overflow_get(table, field_addr);
|
|
217
|
+
}
|
|
218
|
+
|
|
201
219
|
static LeptrisCompactOverflowTable* get_overflow_table(void) {
|
|
202
220
|
if (!g_overflow_table) {
|
|
203
221
|
g_overflow_table = leptris_compact_overflow_table_create(256);
|
|
@@ -319,11 +337,8 @@ int32_t leptris_compact_int32_encode_doc(void* base, void* target,
|
|
|
319
337
|
void* leptris_compact_int32_decode(void* base, int32_t off,
|
|
320
338
|
const int32_t* field_addr) {
|
|
321
339
|
if (off == 0) return NULL;
|
|
322
|
-
if (off == LEPTRIS_INT32_OVERFLOW_SENTINEL)
|
|
323
|
-
|
|
324
|
-
if (table) return leptris_compact_overflow_get(table, field_addr);
|
|
325
|
-
return NULL;
|
|
326
|
-
}
|
|
340
|
+
if (off == LEPTRIS_INT32_OVERFLOW_SENTINEL)
|
|
341
|
+
return overflow_lookup(field_addr, sizeof(int32_t));
|
|
327
342
|
return (char*)base + off;
|
|
328
343
|
}
|
|
329
344
|
|
|
@@ -409,11 +424,8 @@ void* leptris_compact_ptr16_decode(const void* base, int16_t off,
|
|
|
409
424
|
int align_log2,
|
|
410
425
|
const int16_t* field_addr) {
|
|
411
426
|
if (off == 0) return NULL;
|
|
412
|
-
if (off == LEPTRIS_COMPACT_PTR16_OVERFLOW)
|
|
413
|
-
|
|
414
|
-
if (table) return leptris_compact_overflow_get(table, field_addr);
|
|
415
|
-
return NULL;
|
|
416
|
-
}
|
|
427
|
+
if (off == LEPTRIS_COMPACT_PTR16_OVERFLOW)
|
|
428
|
+
return overflow_lookup(field_addr, sizeof(int16_t));
|
|
417
429
|
return (char*)base + ((ptrdiff_t)off << align_log2);
|
|
418
430
|
}
|
|
419
431
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
|
|
3
3
|
"name": "leptris",
|
|
4
|
-
"version": "1.9.
|
|
4
|
+
"version": "1.9.265",
|
|
5
5
|
"description": "High-performance XML parser and XPath 1.0 engine in C (libleptris)",
|
|
6
6
|
"homepage": "https://github.com/leptris/leptris",
|
|
7
7
|
"license": "MIT",
|