leptris 1.9.398.0-arm-linux → 1.9.399.0-arm-linux

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: 1dd34459853a189e9e6de557438320ca4e4cdb3962866cb1e136d52656d28ebc
4
- data.tar.gz: 7cb6b2d19f346d36f0e94b2aae7e2fbd429865fb27f5b1ce753ca9d545fa8216
3
+ metadata.gz: 85e3d9f5b990ac287799605ca5cd9054c9e7dd682d482af346ac1db782a26e1b
4
+ data.tar.gz: 8895a0750efb957fe2de60a932095e53345860eb448da621199a922fb38ab372
5
5
  SHA512:
6
- metadata.gz: 64fe432cfa7815bc74d77de6c46cff709271a1d11372daa551af133ed838f1a5cf94aefcd88711238230301eae86444bdb60601a4a7874715db74f6f83e4b654
7
- data.tar.gz: 6c98902cf61cbf36a72ec93159b8e8545e5bcfdcef8aa35314ead57060d45d084b6c2b01bf7c7f48ac9b04c9428355a352524a439fab396149da8e5dd6274215
6
+ metadata.gz: 333f9d60f1197ea4db616adbbfc9db96abdf6cca1a8e17abf1d6afbc7d798d0a69b7cf504bbecb2e22cd44e1c72de00cf9a50c38e50bab032ea1356526d22126
7
+ data.tar.gz: 608657836bc76cb63eb79466b06d9e6f93862dd63c44b3e5bc19a77fcbb6b51f81c4f2594f4e98607353342dd064da56cf78d96335a5b9bc690eed9f15bc8374
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.398"
11
+ LIBLEPTRIS_VERSION = "1.9.399"
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leptris
4
- VERSION = "1.9.398.0"
4
+ VERSION = "1.9.399.0"
5
5
  end
data/lib/libleptris.so CHANGED
Binary file
data/vendor-src/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Sources vendored in this gem (recompile rights; the ruby
2
2
  variant builds them at install via extconf.rb):
3
3
 
4
- - libleptris v1.9.398
4
+ - libleptris v1.9.399
5
5
  - utf8proc v2.11.0
6
6
 
7
7
  Rebuild by hand:
@@ -1,5 +1,23 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.9.399] - 2026-10-31
4
+
5
+ ### Fixed
6
+
7
+ - **`\\d` matches the Unicode-3.1 legacy digits (leptris#1936,
8
+ PR #1940).** XSD 1.0 Part 2 cites Unicode 3.1, where
9
+ U+1369–U+1371 (Ethiopic digits one-nine) were Nd — Unicode 4.0.1
10
+ demoted them to No, so the utf8proc-backed Nd mask missed them
11
+ and the suite's reS38 (`\\d` vs `፱`) / reT51 (`\\D`) rows
12
+ failed. The legacy-Nd set now joins the class as a pure-codepoint
13
+ range, outside the utf8proc guard so every build (windows
14
+ included) answers it; `\\D` inherits the exclusion through the
15
+ complement's negation. RED-first spec
16
+ (`XsdDatatypes.DigitClassPinsLegacyNd`), and the shared-fixture
17
+ collision behind an arm-lane flake got unique names.
18
+
19
+
20
+
3
21
  ## [1.9.398] - 2026-10-31
4
22
 
5
23
  ### Fixed
@@ -3,7 +3,7 @@
3
3
  cmake_minimum_required(VERSION 3.20)
4
4
 
5
5
  project(leptris
6
- VERSION 1.9.398
6
+ VERSION 1.9.399
7
7
  DESCRIPTION "Fast XML parser and XPath evaluator in pure C"
8
8
  LANGUAGES C CXX
9
9
  )
@@ -112,6 +112,17 @@ static void cls_add_builtin(RreNode* n, char c) {
112
112
  n->cat_set = 1;
113
113
  n->cat_mask |= 1u << UTF8PROC_CATEGORY_ND;
114
114
  #endif
115
+ /* XSD 1.0 cites Unicode 3.1, where U+1369-1371
116
+ * (Ethiopic digits one-nine) were Nd — Unicode 4.0.1
117
+ * demoted them to No, so modern tables miss them
118
+ * (#1936 reS38/reT51). Pin the legacy-Nd set outside
119
+ * the utf8proc guard: the ranges are pure codepoints
120
+ * and \d must answer them on every build. */
121
+ if (n->uni_n < 4) {
122
+ n->uni_lo[n->uni_n] = 0x1369;
123
+ n->uni_hi[n->uni_n] = 0x1371;
124
+ n->uni_n++;
125
+ }
115
126
  break;
116
127
  case 'w':
117
128
  for (int i = '0'; i <= '9'; i++) cls_add(n, (unsigned char)i);
@@ -390,6 +390,32 @@ TEST(XsdDatatypes, LengthFacetCountsOctetsForHexBinary) {
390
390
  // byte world and character-class SUBTRACTION — the OPC
391
391
  // ST_ContentType shape. A pattern that fails to parse rejects
392
392
  // everything, so media types failed wholesale.
393
+ // leptris#1936 (reS38/reT51): XSD 1.0 cites Unicode 3.1, where
394
+ // U+1369-1371 (Ethiopic digits one-nine) were Nd — \\d matches
395
+ // &#x1371; and \\D rejects it even though the host tables (4.0.1+)
396
+ // carry them as No.
397
+ TEST(XsdDatatypes, DigitClassPinsLegacyNd) {
398
+ const char xsd[] =
399
+ "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
400
+ "<xs:simpleType name=\"Digs\"><xs:restriction base=\"xs:string\">"
401
+ "<xs:pattern value=\"\\d\"/></xs:restriction></xs:simpleType>"
402
+ "<xs:simpleType name=\"NonDigs\"><xs:restriction base=\"xs:string\">"
403
+ "<xs:pattern value=\"\\D\"/></xs:restriction></xs:simpleType>"
404
+ "</xs:schema>";
405
+ LeptrisStatus st = LEPTRIS_OK;
406
+ LeptrisXsdSchema s = leptris_xsd_compile(xsd, strlen(xsd), &st);
407
+ ASSERT_EQ(st, LEPTRIS_OK);
408
+ ASSERT_NE(s, (LeptrisXsdSchema)0);
409
+ EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "\xE1\x8D\xB1"), 1);
410
+ EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "\xE1\x8D\xA9"), 1);
411
+ EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "5"), 1);
412
+ EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "x"), 0);
413
+ EXPECT_EQ(leptris_xsd_simple_valid(s, "NonDigs", "\xE1\x8D\xB1"), 0);
414
+ EXPECT_EQ(leptris_xsd_simple_valid(s, "NonDigs", "5"), 0);
415
+ EXPECT_EQ(leptris_xsd_simple_valid(s, "NonDigs", "x"), 1);
416
+ leptris_xsd_free(s);
417
+ }
418
+
393
419
  TEST(XsdDatatypes, PatternPropertyClassesAndSubtraction) {
394
420
  // The OPC ST_ContentType shape, minus the quoted-string member
395
421
  // (same property-class + subtraction machinery): type/subtype
@@ -3816,7 +3842,7 @@ TEST(XsdCrossNs, SingleDocImportChaseResolves) {
3816
3842
  " xmlns:r=\"urn:r\" xmlns=\"urn:a\" targetNamespace=\"urn:a\""
3817
3843
  " elementFormDefault=\"qualified\">"
3818
3844
  "<xs:import namespace=\"urn:r\""
3819
- " schemaLocation=\"blip_repro_rel.xsd\"/>"
3845
+ " schemaLocation=\"blip_chase_rel.xsd\"/>"
3820
3846
  "<xs:attributeGroup name=\"AG_Blob\">"
3821
3847
  "<xs:attribute ref=\"r:embed\" use=\"optional\"/>"
3822
3848
  "</xs:attributeGroup>"
@@ -3832,8 +3858,8 @@ TEST(XsdCrossNs, SingleDocImportChaseResolves) {
3832
3858
  if (!dir) dir = std::getenv("TEMP"); /* windows runners define TEMP/TMP */
3833
3859
  if (!dir) dir = std::getenv("TMP");
3834
3860
  std::string base = dir ? dir : ".";
3835
- std::string rel_path = base + "/blip_repro_rel.xsd";
3836
- std::string main_path = base + "/blip_repro_main.xsd";
3861
+ std::string rel_path = base + "/blip_chase_rel.xsd";
3862
+ std::string main_path = base + "/blip_chase_main.xsd";
3837
3863
  {
3838
3864
  std::ofstream f(rel_path);
3839
3865
  f << rel;
@@ -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.398",
4
+ "version": "1.9.399",
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",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leptris
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.398.0
4
+ version: 1.9.399.0
5
5
  platform: arm-linux
6
6
  authors:
7
7
  - Ribose Inc.