fast_xlsx 0.1.0-aarch64-linux → 0.1.2-aarch64-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: 1a10a2a6620cb4327dcfa15d841e907201077e57491db131633ef8482bee4e45
4
- data.tar.gz: 7abc89e1ff76104976f020ef0345a0576b433be728f06d56ff24cb9529453e79
3
+ metadata.gz: 9735627ceb5ec41e7c5c45f235fc4a92ccc4f9d21df516a08fc82b6545120daf
4
+ data.tar.gz: ff4db2a843b8162e37be5903cbf7df27ba7b70e4b0d5f68c01f3ef008ef536ea
5
5
  SHA512:
6
- metadata.gz: ca28868712ff1585bd69005e0f61f6532902a8068d71151dbaf83ea19d079f32b3410dbbc8e557a1632b5f74fb652d1285ccd06cb5eb7a999eb2f3bd59d5ec5e
7
- data.tar.gz: addfcec01c213dc09e39492907ac00774a1edba27589b29921539f7759077ab0b6dbe1f66885c9f8942b984051d2e7b136d4a5da4ed8435d87fe5a0e435685d7
6
+ metadata.gz: 76d8090d5bbf9cf9b2cff2a7c11eefb3b4fbf7b449e3ee9e739a5443cee85383042074a28d2c98f32a5fc84314d1336c8b181bdc82c93a9e9cd7a261a4b29d19
7
+ data.tar.gz: 0637b62403cb4a64f0b1b5b5cf4d0931841d34cd0407910be42f3a3dc5fe38b772672fd2e700843a24eeea75ae4b54fd75a96f821d9ce127020a08b9ea295495
data/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.2] - 2026-09-30
4
+
5
+ ### Fixed
6
+
7
+ - Values Excel cannot hold (a string over 32,767 characters, invalid UTF-8, a bad or over-long URL, more than 16,384 columns) raise before anything is written, instead of leaving the row half written.
8
+ - `merge_range` with such a value no longer leaves the range merged; its value also takes its table column's format.
9
+ - An unnamed worksheet takes the first free `SheetN` instead of a name that clashes with one given earlier (which failed only when saving).
10
+ - Cell values and formats are copied out of Ruby objects when a row is converted, so Ruby code run while converting (a `to_s`) cannot change or free them before they are written.
11
+ - Ruby code run while converting a value (a `to_s`, `jd`, ...) that touches the same workbook, or another thread writing to it, no longer deadlocks. A value that fails to convert leaves its row unwritten.
12
+ - In `:constant` / `:low` mode, `merge_range` and `add_table` on rows already written to disk raise `FastXlsx::Error` instead of being dropped; cells beside a tall merge can still be written.
13
+ - Table column formats apply to rows written after `add_table`.
14
+ - Invalid worksheet names raise without leaving an extra sheet behind; names that differ only in case raise at `add_worksheet`, not at save.
15
+ - Strings in other encodings (e.g. Windows-1252) are converted to UTF-8.
16
+ - `data_validation` lists accept numbers and other values (listed by `to_s`).
17
+ - Dates match Excel's 1900 date system (serials before 1900-03-01 were one too high); dates before 1900 raise `ArgumentError`.
18
+ - `Workbook#save` accepts a `Pathname`.
19
+
20
+ ## [0.1.1] - 2026-09-30
21
+
22
+ ### Fixed
23
+
24
+ - Precompiled (platform) gems failed to `require`: the extension was only looked up where a source install puts it, not in the per-Ruby-version directory that platform gems use. 0.1.0's platform gems cannot be loaded; upgrade to 0.1.1 (`bundle update fast_xlsx` if your lockfile has 0.1.0).
25
+
26
+ ### Changed
27
+
28
+ - Releases now install and load the built platform gems on Linux, macOS and Windows with Ruby 3.3, 3.4 and 4.0 before publishing.
29
+
3
30
  ## [0.1.0] - 2026-09-30
4
31
 
5
32
  First release: a fast `.xlsx` writer built on rust_xlsxwriter. Early API; it may still change before 1.0.
data/README.md CHANGED
@@ -276,6 +276,15 @@ cargo llvm-cov report --release # or --lcov / --html
276
276
 
277
277
  Rebuild in a clean shell afterwards (`rm -rf tmp && bundle exec rake compile`) so the everyday build is not instrumented.
278
278
 
279
+ Mutation tests ([cargo-mutants](https://mutants.rs)) change the Rust source one small edit at a time and check that a Ruby test fails for each change. `ext/fast_xlsx/tests/ruby_suite.rs` is what connects the two: it rebuilds the extension and runs the Ruby suite, so `cargo test` covers the Ruby tests too.
280
+
281
+ ```bash
282
+ cargo install cargo-mutants
283
+ cargo mutants --file ext/fast_xlsx/src/lib.rs --jobs 4 # ~7 minutes; results in mutants.out/
284
+ ```
285
+
286
+ Mutants listed in `mutants.out/missed.txt` point at behaviour no test checks. The `Mutation tests` workflow runs this weekly and on demand.
287
+
279
288
  ### Releasing
280
289
 
281
290
  First generate the showcase workbook and open it in Excel to check every feature renders (the test suite only inspects the XML):
data/bench/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- fast_xlsx (0.1.0)
4
+ fast_xlsx (0.1.2)
5
5
  rb_sys (~> 0.9.130)
6
6
 
7
7
  GEM
@@ -77,7 +77,7 @@ DEPENDENCIES
77
77
  CHECKSUMS
78
78
  caxlsx (4.5.0) sha256=e3d98d859f148df05d5462086b5079b523f29c1766b569535f1d68629ce743ff
79
79
  fast_excel (0.5.0) sha256=59c418bdcf586a6030798d4e3a9f575742badaceaf7bb90f38eee5feb5bdc478
80
- fast_xlsx (0.1.0)
80
+ fast_xlsx (0.1.2)
81
81
  ffi (1.17.4-aarch64-linux-gnu) sha256=b208f06f91ffd8f5e1193da3cae3d2ccfc27fc36fba577baf698d26d91c080df
82
82
  ffi (1.17.4-aarch64-linux-musl) sha256=9286b7a615f2676245283aef0a0a3b475ae3aae2bb5448baace630bb77b91f39
83
83
  ffi (1.17.4-arm-linux-gnu) sha256=d6dbddf7cb77bf955411af5f187a65b8cd378cb003c15c05697f5feee1cb1564
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: data/lib/fast_xlsx/3.3/fast_xlsx.so
3
- size: 44830800 bytes
4
- sha256: 0501357e7151376bdc3a5464679ab8df0faeab0754e8654415ccf9f4fe0725ea
3
+ size: 45532312 bytes
4
+ sha256: e362d4cc0511176c28c5e1af4e0517a09d87c5202073e486c3a72e3df2243c29
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: data/lib/fast_xlsx/3.4/fast_xlsx.so
3
- size: 44923960 bytes
4
- sha256: 347a7ad14d24178ed3be6238b30dccd6b062a87d8aa478954bb5801908dd60e8
3
+ size: 45627384 bytes
4
+ sha256: 002079e195df5c1017e7df9103d129c4dc7918b5af861c2af77348ceae10adf6
@@ -1,4 +1,4 @@
1
1
  [diffend] Oversized file quarantined before diffing.
2
2
  name: data/lib/fast_xlsx/4.0/fast_xlsx.so
3
- size: 44900144 bytes
4
- sha256: f9ea7790ccca3b7e5a015df8ecc27fd50043455c5664ec0d4dd80908f999c6ca
3
+ size: 45607656 bytes
4
+ sha256: 285f62d2972b0a1f7240f13f4cd23dd91710be8a13cc790ba5f2d9837d6843a6
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FastXlsx
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/fast_xlsx.rb CHANGED
@@ -45,7 +45,13 @@ module FastXlsx
45
45
  end
46
46
 
47
47
  # The native extension looks up FastXlsx::Error, so load it after Error is defined.
48
- require "fast_xlsx/fast_xlsx"
48
+ # Precompiled gems ship one binary per Ruby version (fast_xlsx/3.4/fast_xlsx);
49
+ # a gem compiled on install has a single fast_xlsx/fast_xlsx.
50
+ begin
51
+ require "fast_xlsx/#{RUBY_VERSION[/\d+\.\d+/]}/fast_xlsx"
52
+ rescue LoadError
53
+ require "fast_xlsx/fast_xlsx"
54
+ end
49
55
 
50
56
  # Owns the worksheets; serialize with #to_xlsx or #save.
51
57
  class Workbook
@@ -78,6 +84,11 @@ module FastXlsx
78
84
  worksheets.find { |ws| ws.name == name }
79
85
  end
80
86
 
87
+ # path: a String, Pathname or anything responding to #to_path.
88
+ def save(path)
89
+ _save(File.path(path))
90
+ end
91
+
81
92
  # Document properties shown in Excel's File > Info: title:, subject:,
82
93
  # author:, manager:, company:, category:, keywords:, comments:, status:.
83
94
  # Later calls add to earlier ones.
data/sig/fast_xlsx.rbs CHANGED
@@ -36,7 +36,7 @@ module FastXlsx
36
36
  ?company: String, ?category: String, ?keywords: String,
37
37
  ?comments: String, ?status: String) -> self
38
38
  def to_xlsx: () -> String
39
- def save: (String path) -> void
39
+ def save: (String | _ToPath path) -> void
40
40
  end
41
41
 
42
42
  class Format
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_xlsx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Zac