taskchampion-rb 0.9.5 → 0.9.7

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: e01ec15c8492334e8b6722c2932bf4b39054c93d251cfd3baf18f64bb8a5cdf5
4
- data.tar.gz: 2df70def10c1411d953300a02ac56e4d585189ee76ec3479d7fdf8b43fd05a38
3
+ metadata.gz: 42b23c3273d5b9953634be0e881ce7cffbd451f29468f17eb6f9cbcdf236ce0b
4
+ data.tar.gz: 6dde1f28ba13970fbb850ecfc82bdd07ac4f20a5f7e2fff54e028995043f11fb
5
5
  SHA512:
6
- metadata.gz: 0bf8ed1f3a1662f7dd5fbf1549e4749f3e9ed017ce39e31fae868c2a186519c609c2155a6c4b6cefc5a95cb544b89fbc64b5c8299c7c8a91a28a643e08f4a0a6
7
- data.tar.gz: acaf8ab75fd4df5d116f70b9b20d9923de81de2363c8350649652a0ab79227694c9f6349f0b5ae412aef9e54c7928dc7845c8a7bbf0447fd603178bc1c4b155d
6
+ metadata.gz: 69a4c9013c7441a9ce966e096e07ebd41549460f8160027780ce388a4514946260748f75245cc3fed5da2964d6c029a127d2feb9fb5210589b4487f6b13be94a
7
+ data.tar.gz: e5af336507eb5105250be66e308527ba137ee50124cf24de34793f63d6448e618f2d7f996f0fe777bb88ce17e95c7c151755ce6815eeeac60c0bde44e8188401
data/CHANGELOG.md CHANGED
@@ -1,7 +1,29 @@
1
1
  ## [Unreleased]
2
2
 
3
+ - Link the system `libsqlite3` by default again, as 0.9.4 did, so
4
+ `libsqlite3-dev` is once more a build prerequisite on Linux. Since
5
+ 0.9.5 the extension compiled its own copy of SQLite, which leaves two
6
+ SQLite copies in any process that also loads the `sqlite3` gem; they
7
+ do not share POSIX file locks, which can corrupt the database.
8
+ - Add an opt-in switch for bundled SQLite: set
9
+ `TASKCHAMPION_BUNDLED_SQLITE=1` or pass `--with-bundled-sqlite` at
10
+ install time. Only use it when nothing else in the process loads
11
+ SQLite.
12
+
13
+ ## [0.9.6] - 2026-10-22
14
+
15
+ - Update `rb-sys` to 0.9.130 (pulling in `bindgen` 0.72.1) in
16
+ `Cargo.lock`. The previously locked `bindgen` 0.69.5 cannot parse
17
+ Ruby's `rb_data_type_struct` with libclang 22, as shipped on Ubuntu
18
+ 26.04, so `magnus` failed to compile there.
19
+ - Drop the stale Ruby 3.5 preview from the CI matrix; CI now tests 3.3
20
+ and 3.4. Ruby 4.0 is not yet supported (`magnus` 0.7 does not build
21
+ against it).
22
+
23
+ ## [0.9.5] - 2026-09-10
24
+
3
25
  - Drop support for Ruby 3.2 (reached EOL March 2026). Minimum supported
4
- Ruby is now 3.3; CI tests 3.3, 3.4, and 3.5.
26
+ Ruby is now 3.3.
5
27
  - Enable the `bundled` feature of the `taskchampion` crate so SQLite is
6
28
  compiled from source into the extension. Previously `default-features
7
29
  = false` dropped `bundled`, making the build link against system
data/Cargo.lock CHANGED
@@ -115,20 +115,18 @@ checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a"
115
115
 
116
116
  [[package]]
117
117
  name = "bindgen"
118
- version = "0.69.5"
118
+ version = "0.72.1"
119
119
  source = "registry+https://github.com/rust-lang/crates.io-index"
120
- checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088"
120
+ checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
121
121
  dependencies = [
122
122
  "bitflags",
123
123
  "cexpr",
124
124
  "clang-sys",
125
125
  "itertools",
126
- "lazy_static",
127
- "lazycell",
128
126
  "proc-macro2",
129
127
  "quote",
130
128
  "regex",
131
- "rustc-hash 1.1.0",
129
+ "rustc-hash",
132
130
  "shlex",
133
131
  "syn",
134
132
  ]
@@ -862,12 +860,6 @@ version = "1.5.0"
862
860
  source = "registry+https://github.com/rust-lang/crates.io-index"
863
861
  checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
864
862
 
865
- [[package]]
866
- name = "lazycell"
867
- version = "1.3.0"
868
- source = "registry+https://github.com/rust-lang/crates.io-index"
869
- checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
870
-
871
863
  [[package]]
872
864
  name = "libc"
873
865
  version = "0.2.174"
@@ -881,7 +873,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
881
873
  checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
882
874
  dependencies = [
883
875
  "cfg-if",
884
- "windows-targets 0.53.3",
876
+ "windows-targets 0.52.6",
885
877
  ]
886
878
 
887
879
  [[package]]
@@ -1163,7 +1155,7 @@ dependencies = [
1163
1155
  "pin-project-lite",
1164
1156
  "quinn-proto",
1165
1157
  "quinn-udp",
1166
- "rustc-hash 2.1.1",
1158
+ "rustc-hash",
1167
1159
  "rustls",
1168
1160
  "socket2",
1169
1161
  "thiserror 2.0.12",
@@ -1183,7 +1175,7 @@ dependencies = [
1183
1175
  "lru-slab",
1184
1176
  "rand",
1185
1177
  "ring",
1186
- "rustc-hash 2.1.1",
1178
+ "rustc-hash",
1187
1179
  "rustls",
1188
1180
  "rustls-pki-types",
1189
1181
  "slab",
@@ -1253,18 +1245,18 @@ dependencies = [
1253
1245
 
1254
1246
  [[package]]
1255
1247
  name = "rb-sys"
1256
- version = "0.9.116"
1248
+ version = "0.9.130"
1257
1249
  source = "registry+https://github.com/rust-lang/crates.io-index"
1258
- checksum = "7059846f68396df83155779c75336ca24567741cb95256e6308c9fcc370e8dad"
1250
+ checksum = "02faf625bb10ba893e3ae620f19c9fb1b5f8fcae0fe4eb86bb3f2230fad75edb"
1259
1251
  dependencies = [
1260
1252
  "rb-sys-build",
1261
1253
  ]
1262
1254
 
1263
1255
  [[package]]
1264
1256
  name = "rb-sys-build"
1265
- version = "0.9.116"
1257
+ version = "0.9.130"
1266
1258
  source = "registry+https://github.com/rust-lang/crates.io-index"
1267
- checksum = "ac217510df41b9ffc041573e68d7a02aaff770c49943c7494441c4b224b0ecd0"
1259
+ checksum = "05be6f9c86fe5482808162826f6c047d093b3670582296c770de1d94f8066694"
1268
1260
  dependencies = [
1269
1261
  "bindgen",
1270
1262
  "lazy_static",
@@ -1406,12 +1398,6 @@ dependencies = [
1406
1398
  "smallvec",
1407
1399
  ]
1408
1400
 
1409
- [[package]]
1410
- name = "rustc-hash"
1411
- version = "1.1.0"
1412
- source = "registry+https://github.com/rust-lang/crates.io-index"
1413
- checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
1414
-
1415
1401
  [[package]]
1416
1402
  name = "rustc-hash"
1417
1403
  version = "2.1.1"
data/README.md CHANGED
@@ -20,15 +20,35 @@ This gem supports Ruby 3.3 and later. We follow Ruby's end-of-life (EOL) schedul
20
20
  libclang over Ruby's headers to generate FFI bindings during `rake compile`.
21
21
  - **Debian/Ubuntu:** `sudo apt install clang libclang-dev`
22
22
  - **macOS:** `xcode-select --install`
23
- 3. Rust toolchain (optional — if `cargo` is not found, `rb-sys` bootstraps its
23
+ 3. System SQLite development files — the extension links the system
24
+ `libsqlite3` by default.
25
+ - **Debian/Ubuntu:** `sudo apt install libsqlite3-dev`
26
+ - **macOS:** nothing to install; the OS ships `libsqlite3`.
27
+ 4. Rust toolchain (optional — if `cargo` is not found, `rb-sys` bootstraps its
24
28
  own rustup + toolchain during the build). To install it yourself:
25
29
 
26
30
  ```bash
27
31
  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
28
32
  ```
29
33
 
30
- > SQLite is compiled from source into the extension (the `bundled` feature), so
31
- > no system SQLite / `libsqlite3-dev` is required.
34
+ ### Bundled SQLite (opt-in)
35
+
36
+ To compile SQLite from source into the extension instead of linking the
37
+ system library, set the switch at install time:
38
+
39
+ ```bash
40
+ TASKCHAMPION_BUNDLED_SQLITE=1 gem install taskchampion-rb
41
+ # or
42
+ gem install taskchampion-rb -- --with-bundled-sqlite
43
+ # or, with Bundler
44
+ bundle config build.taskchampion-rb --with-bundled-sqlite
45
+ ```
46
+
47
+ > **Warning:** do not use bundled SQLite in a process that also loads another
48
+ > copy of SQLite, such as the `sqlite3` gem (e.g. a Rails app). Two SQLite
49
+ > copies in one process do not see each other's POSIX file locks, which can
50
+ > corrupt the database. Bundling is only safe when taskchampion-rb is the sole
51
+ > SQLite user in the process.
32
52
 
33
53
  ### Building from source
34
54
 
data/Rakefile CHANGED
@@ -32,10 +32,17 @@ task :publish, [:version] do |t, args|
32
32
  version = args[:version] || "patch"
33
33
 
34
34
  puts "Bumping version (#{version})..."
35
- sh "bump #{version} --tag"
35
+ # Commit and tag here rather than with bump --tag: bump's "vX.Y.Z"
36
+ # subject fails the commit-msg hook, and bump tags even when the
37
+ # commit fails.
38
+ sh "bump #{version} --no-commit"
39
+ new_version = `bump current --value-only`.strip
40
+ sh "git add lib/taskchampion/version.rb Gemfile.lock"
41
+ sh "git commit -m 'Bump to v#{new_version}'"
42
+ sh "git tag -a v#{new_version} -m v#{new_version}"
36
43
 
37
44
  puts "Pushing to git..."
38
- sh "git push && git push --tags"
45
+ sh "git push && git push origin v#{new_version}"
39
46
 
40
47
  puts "Building and releasing gem..."
41
48
  Rake::Task["release"].invoke
@@ -12,11 +12,15 @@ crate-type = ["cdylib"]
12
12
  [dependencies]
13
13
  magnus = { version = "0.7", features = ["rb-sys"] }
14
14
  rb-sys = "0.9.103"
15
- # `bundled` compiles SQLite from source into the extension so the build does not
16
- # depend on the host having libsqlite3-dev / a compatible system SQLite.
17
- taskchampion = { version = "2.0", default-features = false, features = ["bundled", "server-sync", "server-gcp"] }
15
+ # SQLite is linked from the system by default. See the bundled-sqlite feature.
16
+ taskchampion = { version = "2.0", default-features = false, features = ["server-sync", "server-gcp"] }
18
17
  chrono = "0.4"
19
18
  uuid = "1.0"
20
19
 
21
20
  [features]
22
21
  default = ["rb-sys/stable-api-compiled-fallback"]
22
+ # Compile a private copy of SQLite into the extension instead of linking the
23
+ # system libsqlite3. Do not enable this in a process that also loads another
24
+ # SQLite (e.g. the sqlite3 gem): two copies do not share POSIX file locks,
25
+ # which can corrupt the database. Enabled through extconf.rb.
26
+ bundled-sqlite = ["taskchampion/bundled"]
@@ -3,4 +3,14 @@
3
3
  require "mkmf"
4
4
  require "rb_sys/mkmf"
5
5
 
6
- create_rust_makefile("taskchampion/taskchampion")
6
+ # Opt in to compiling SQLite into the extension with either
7
+ # TASKCHAMPION_BUNDLED_SQLITE=1
8
+ # or
9
+ # gem install taskchampion-rb -- --with-bundled-sqlite
10
+ # bundle config build.taskchampion-rb --with-bundled-sqlite
11
+ bundled_sqlite = with_config("bundled-sqlite") ||
12
+ %w[1 true yes].include?(ENV["TASKCHAMPION_BUNDLED_SQLITE"])
13
+
14
+ create_rust_makefile("taskchampion/taskchampion") do |r|
15
+ r.features = ["bundled-sqlite"] if bundled_sqlite
16
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Taskchampion
4
- VERSION = "0.9.5"
4
+ VERSION = "0.9.7"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taskchampion-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Case
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-09-11 00:00:00.000000000 Z
11
+ date: 2026-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rb_sys