moxml 0.5.64 → 0.5.66

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: e1a9055854c390888e4748d208eb141c9d29e18da7c4d8f1d3b08a706cca1017
4
- data.tar.gz: c55d56edcdcaebb7655cf5cd195df47a2afa6839c8bcd3dfec27376ae98d1e5a
3
+ metadata.gz: '09a2bb224c6634bc1b03be4d7c3e9e878624f8bbf14800987d697ba12c99a80f'
4
+ data.tar.gz: 2ebdc4c85fb2101c4ff8999726d7ac6a38eab2809a62a1d8c436b3bbb60a568a
5
5
  SHA512:
6
- metadata.gz: 2fcfb3c51ed894915e9cd630c6a80fba855c5d6205462b7b3a93c9275dea91d4849c934ef5b75d123301eada12537bf0b0156ae6c42b457b569629bb69f40998
7
- data.tar.gz: bf467c70d4e94befa8e4801d4994b925da448560ad2957a6d60990167909d08e3382273126cac2a11e59cbbb32d7ea8a8e4260ad28ffdefb2209f910ba26cd93
6
+ metadata.gz: 5f205b87427d7238d18101677340d0714c6fb486b3368a310e580e35bb98a74d6433a03dc5601b4f0f9d81e65ef4a92b443c76aab0c2abf1f6e733fe2838c20c
7
+ data.tar.gz: 1b2da0651b61c31e82ac8f0c70746821064f06aa4585931d4878017acb879e63f8ad55958e68e83089e0a8fb9b91c406c299ee8e3efe2db0b06a05376db73d1e
@@ -115,9 +115,13 @@ struct_run
115
115
  wrapper_run
116
116
  nokogiri_run
117
117
 
118
+ nil
119
+ nil
118
120
  struct_us = nil
119
121
  struct_allocs = nil
120
- if Gem::Version.new(Leptris::VERSION) >= Gem::Version.new("1.9.197.1")
122
+ c_face = Moxml::Adapter::Leptris.const_defined?(:NATIVE_PLAN_STRUCTS) &&
123
+ Moxml::Adapter::Leptris::NATIVE_PLAN_STRUCTS
124
+ if c_face
121
125
  struct_us, struct_allocs = bench { struct_run }
122
126
  end
123
127
  plan_us, plan_allocs = bench { plan_run }
@@ -136,5 +140,12 @@ puts format("nokogiri (parse+walk) %<t>8.0f us %<a>7d allocs",
136
140
  t: nk_us, a: nk_allocs)
137
141
  puts format("plan/nokogiri %<r>.2fx (ceiling 1.50x for the CI lock)",
138
142
  r: plan_us / nk_us)
143
+ if struct_us
144
+ puts format("struct/nokogiri %<r>.2fx (ceiling 1.50x for the CI lock)",
145
+ r: struct_us / nk_us)
146
+ end
139
147
 
140
- exit(1) if ENV["LEPTRIS_BENCH_LOCK"] && plan_us > nk_us * 1.5
148
+ if ENV["LEPTRIS_BENCH_LOCK"]
149
+ exit(1) if plan_us > nk_us * 1.5
150
+ exit(1) if struct_us && struct_us > nk_us * 1.5
151
+ end
@@ -537,13 +537,17 @@ module Moxml
537
537
  NATIVE_READ_LAYER &&
538
538
  Gem::Version.new(::Leptris::VERSION) >= Gem::Version.new("1.9.193.4")
539
539
 
540
- # leptris-ruby#266 (binding 1.9.197.1): Native.plan_structs —
541
- # the C struct executor behind Moxml::StructPlan. The probe
542
- # guards the version gate: a numerically newer lockstep can
543
- # publish without the face (1.9.199.0 shipped without it),
544
- # and the gate alone would NoMethodError.
540
+ # leptris-ruby#272 (binding 1.9.201.1): Native.plan_structs —
541
+ # the C struct executor behind Moxml::StructPlan. The floor
542
+ # is the varargs-mint fix: 1.9.197.1–1.9.201.0 seed unmapped
543
+ # struct members with garbage (GC aborts, corrupted data);
544
+ # StructPlan falls back to its spec-pinned Moxml::Plan path
545
+ # below the fix. The probe guards the version gate: a
546
+ # numerically newer lockstep can publish without the face
547
+ # (1.9.199.0 shipped without it), and the gate alone would
548
+ # NoMethodError.
545
549
  NATIVE_PLAN_STRUCTS =
546
- Gem::Version.new(::Leptris::VERSION) >= Gem::Version.new("1.9.197.1") &&
550
+ Gem::Version.new(::Leptris::VERSION) >= Gem::Version.new("1.9.201.1") &&
547
551
  (!defined?(::Leptris::XML::Native) ||
548
552
  ::Leptris::XML::Native.respond_to?(:plan_structs))
549
553
 
@@ -3,7 +3,7 @@
3
3
  module Moxml
4
4
  # Struct-compiled materialization — the fully compiled grammar:
5
5
  # declare the document shape once as STRUCTS; adapters with a C
6
- # executor (leptris 1.9.197.1+) mint the typed objects directly
6
+ # executor (leptris 1.9.201.1+, the varargs-mint fix) mint the typed
7
7
  # with zero Ruby frames per element; everything else falls back to
8
8
  # an equivalent Moxml::Plan over the row stream (spec-pinned
9
9
  # equal).
data/lib/moxml/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Moxml
4
- VERSION = "0.5.64"
4
+ VERSION = "0.5.66"
5
5
  end
@@ -3,7 +3,7 @@
3
3
  require "spec_helper"
4
4
 
5
5
  # Moxml::StructPlan: the fully compiled grammar — struct slots
6
- # declared once, minted in C on leptris (1.9.197.1+) and via the
6
+ # declared once, minted in C on leptris (1.9.201.1+) and via the
7
7
  # plan fallback everywhere else. Results must be identical to
8
8
  # Moxml::Plan.
9
9
  SRecord = Struct.new(:id, :kind, :fields)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moxml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.64
4
+ version: 0.5.66
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-18 00:00:00.000000000 Z
11
+ date: 2026-09-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  Moxml is a unified XML manipulation library that provides a common API