yeptris 0.6.49.0-arm-linux-eabihf → 0.6.50.0-arm-linux-eabihf

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90d60233f8ee208b326a14348fab88a2d5b19ef2a23ece84c0d7a33fd30eb04f
4
- data.tar.gz: e3cc4d7a2431c7db7a7c9bb20a4579cfdd97c912a261a2beac57c4e210d8c7b8
3
+ metadata.gz: 3681880929911306ee377846e867ba834df5143c31aa79f250cf437d36ee9594
4
+ data.tar.gz: 3d3859b5696f0005efb561db0e94f75e55eec66ef077cba67d8093663290651e
5
5
  SHA512:
6
- metadata.gz: 96558c816e76cc2e26d3eec507e00010dca4fb49c47de26ba9eb1ade9f56d76515b25134e4f5edc07435c6c9fd04748907a099c5fc21b16e9e6b7d2f8d0ef0b6
7
- data.tar.gz: 44cb2ace8f2b2a6bf78bbfefd874f53e45217d89baa7f47a6b90fbf68b22540f15ca5f6151f8225307bb8e5b98d92f3a2c1cf0d619a2cf51ff66a0e3d324589e
6
+ metadata.gz: 8a7281abff91ee84d641b83b69aab82c3f950d54e6088b4e2c3e147ca1961acba9632c6cf9f3904816a61b64e43cbfd5168c6d95563f18d98f22b0f2a0afb116
7
+ data.tar.gz: f8eb7afb9206dda493efefb79add265784f61a265f0e571c2efb20e7771dc0a555a9bdd83f624bfdfd7a1a6cfcf07ecd3418ddba7cc56f0c16d613dc0c39c508
@@ -11,8 +11,8 @@
11
11
 
12
12
  #define YEPTRIS_VERSION_MAJOR 0
13
13
  #define YEPTRIS_VERSION_MINOR 6
14
- #define YEPTRIS_VERSION_PATCH 49
15
- #define YEPTRIS_VERSION_STRING "0.6.49"
14
+ #define YEPTRIS_VERSION_PATCH 50
15
+ #define YEPTRIS_VERSION_STRING "0.6.50"
16
16
 
17
17
  #ifdef __cplusplus
18
18
  extern "C" {
data/lib/yeptris.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Yeptris
4
4
  # The gem's version lives in the parent namespace's file — the last
5
5
  # internal require (yeptris/version) retired with it.
6
- VERSION = "0.6.49.0".freeze
6
+ VERSION = "0.6.50.0".freeze
7
7
 
8
8
  # Informational notices are OPT-IN (yeptris-ruby#217): consumers
9
9
  # embed yeptris inside CLIs that assert clean stderr, and a
data/libyeptris.so CHANGED
Binary file
@@ -3,7 +3,7 @@
3
3
  cmake_minimum_required(VERSION 3.20)
4
4
 
5
5
  project(yeptris
6
- VERSION 0.6.49
6
+ VERSION 0.6.50
7
7
  DESCRIPTION "Ultra-fast YAML 1.2 parser, emitter and streamer in C"
8
8
  LANGUAGES C CXX
9
9
  )
@@ -2201,55 +2201,61 @@ YEPTRIS_API YeptrisStatus yeptris_parse_json_tape(const char* source, size_t len
2201
2201
  return YEPTRIS_ERROR_ARG;
2202
2202
  }
2203
2203
 
2204
- int gated = len > 0 && yep_text_active()->gate_scan(source, len);
2205
- if (!gated) {
2206
- size_t off = 0;
2207
- while (off < len && (source[off] == ' ' || source[off] == '\t' || source[off] == '\n' ||
2208
- source[off] == '\r')) {
2209
- off++;
2210
- }
2211
- if (off < len && (source[off] == '[' || source[off] == '{')) {
2212
- /* the token-contract route: stage 1 (vector indexes) + the
2213
- * lean walk. Measured BEHIND the fused walk on json-doc
2214
- * (417-426 vs 526-533: stage 1 at 1408 MB/s + a walk whose
2215
- * arms carry the same grammar cost) — gated OFF until the
2216
- * sized cuts land (the op-table classifier trick, the
2217
- * specialized map/seq loops, stage-1 string closes). The
2218
- * fused walk is the shipped route; the law. */
2204
+ /* #474: the entry's full-input gate_scan pre-pass moves to the
2205
+ * reject path (the #342/#81 law on parse_json, now here): the
2206
+ * columns-primary fused walk runs clean_only — tabs and non-ASCII
2207
+ * bytes REJECT inline — so on accepted documents the NEON gate
2208
+ * scan (the profile's 5% lane) never runs. A walk reject re-gates:
2209
+ * the record walk and the encoding-owed decision read `gated` only
2210
+ * when actually taken, and every error precedence below is
2211
+ * unchanged (the validating sequence consumes the same bit). */
2212
+ int gated;
2213
+ size_t off = 0;
2214
+ while (off < len && (source[off] == ' ' || source[off] == '\t' || source[off] == '\n' ||
2215
+ source[off] == '\r')) {
2216
+ off++;
2217
+ }
2218
+ int container = off < len && (source[off] == '[' || source[off] == '{');
2219
+ if (container) {
2220
+ /* the columns-primary fused walk: one pass, columns eager
2221
+ * by construction, strict numbers classified at walk time */
2222
+ if (yep_tape_walk_columns_fused(source, len, off, tape, 1, 1) == YEPTRIS_OK) {
2223
+ return YEPTRIS_OK;
2224
+ }
2225
+ }
2226
+ gated = len > 0 && yep_text_active()->gate_scan(source, len);
2227
+ if (container && !gated) {
2228
+ /* the token-contract route: stage 1 (vector indexes) + the
2229
+ * lean walk. Measured BEHIND the fused walk on json-doc
2230
+ * (417-426 vs 526-533: stage 1 at 1408 MB/s + a walk whose
2231
+ * arms carry the same grammar cost) — gated OFF until the
2232
+ * sized cuts land (the op-table classifier trick, the
2233
+ * specialized map/seq loops, stage-1 string closes). The
2234
+ * fused walk is the shipped route; the law. */
2219
2235
  #if YEP_TOKEN_CONTRACT_ROUTE
2220
- uint32_t* idx = (uint32_t*)malloc((len + 2) * sizeof(uint32_t));
2221
- if (idx == NULL) {
2222
- return YEPTRIS_ERROR_MEMORY;
2223
- }
2224
- size_t nidx = 0;
2225
- unsigned sflags = 0;
2226
- if (yep_text_active()->json_stage1(source, len, idx, &nidx, &sflags)) {
2227
- YeptrisStatus st = tape_walk_idx(source, len, off, idx, nidx, tape);
2228
- free(idx);
2229
- if (st != YEPTRIS_ERROR_PARSE) {
2230
- return st; /* OK or MEMORY; a reject falls through */
2231
- }
2232
- } else {
2233
- free(idx);
2234
- }
2235
- #endif
2236
- /* the record-primary fused walk first — the DOM route's
2237
- * exact call and flags (strict numbers at record time,
2238
- * clean-only gates; a reject frees the tape internally, so
2239
- * the column attempt below carves fresh). This route's
2240
- * contract is COLUMNS-EAGER (the suite reads kinds/offs/
2241
- * lens directly), so the records materialize here — the
2242
- * fused scan plus one sequential decode pass, still ahead
2243
- * of the column walk's inline three-stream writes. */
2244
- /* the columns-primary fused walk: one pass, columns eager
2245
- * by construction, strict numbers classified at walk time */
2246
- if (yep_tape_walk_columns_fused(source, len, off, tape, 1, 1) == YEPTRIS_OK) {
2247
- return YEPTRIS_OK;
2248
- }
2249
- YeptrisStatus st = tape_walk(source, len, off, tape, 1);
2236
+ uint32_t* idx = (uint32_t*)malloc((len + 2) * sizeof(uint32_t));
2237
+ if (idx == NULL) {
2238
+ return YEPTRIS_ERROR_MEMORY;
2239
+ }
2240
+ size_t nidx = 0;
2241
+ unsigned sflags = 0;
2242
+ if (yep_text_active()->json_stage1(source, len, idx, &nidx, &sflags)) {
2243
+ YeptrisStatus st = tape_walk_idx(source, len, off, idx, nidx, tape);
2244
+ free(idx);
2250
2245
  if (st != YEPTRIS_ERROR_PARSE) {
2251
2246
  return st; /* OK or MEMORY; a reject falls through */
2252
2247
  }
2248
+ } else {
2249
+ free(idx);
2250
+ }
2251
+ #endif
2252
+ /* the record walk — the DOM route's exact call and flags
2253
+ * (strict numbers at record time). Non-ASCII documents stay
2254
+ * out of it: the gate above keeps today's routing, where the
2255
+ * validated lenient walk below owns them. */
2256
+ YeptrisStatus st = tape_walk(source, len, off, tape, 1);
2257
+ if (st != YEPTRIS_ERROR_PARSE) {
2258
+ return st; /* OK or MEMORY; a reject falls through */
2253
2259
  }
2254
2260
  }
2255
2261
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yeptris
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.49.0
4
+ version: 0.6.50.0
5
5
  platform: arm-linux-eabihf
6
6
  authors:
7
7
  - Ribose Inc.