diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..4a42f45 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,85 @@ +name: Build + +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + +jobs: + build: + name: ${{ matrix.job.target }} (${{ matrix.job.os }}) + runs-on: ${{ matrix.job.os }} + strategy: + fail-fast: false + matrix: + job: + - { + target: x86_64-pc-windows-gnu, + os: windows-2025, + feature: icu_segmenter, + } + - { + target: x86_64-pc-windows-gnu, + os: windows-2025, + feature: windows, + } + - { + target: x86_64-unknown-linux-gnu, + os: ubuntu-24.04, + feature: icu_segmenter, + } + - { + target: aarch64-unknown-linux-gnu, + os: ubuntu-24.04-arm, + feature: icu_segmenter, + } + - { + target: x86_64-apple-darwin, + os: macos-15, + feature: icu_segmenter, + } + - { + target: aarch64-apple-darwin, + os: macos-15, + feature: icu_segmenter, + } + steps: + - name: Checkout source code + uses: actions/checkout@v4 + + - uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ matrix.job.target }}-cargo-${{ hashFiles('**/Cargo.lock')-${{ matrix.job.feature }} }} + + - name: Show version information (Rust, cargo) + run: | + rustup -V + rustup toolchain list + rustup target add ${{ matrix.job.target }} + cargo -V + rustc -V + + - name: Build + run: cargo build --locked --release --target=${{ matrix.job.target }} --no-default-features -F ${{ matrix.job.feature }} + + - name: debug? + if: runner.os == 'Windows' || runner.os == 'Linux' + run: | + tree target/ + + - name: "Artifact upload" + uses: actions/upload-artifact@master + with: + name: ${{ matrix.job.target }}-libEWT-${{ matrix.job.feature }} + path: | + target/${{ matrix.job.target }}/release/*.dll + target/${{ matrix.job.target }}/release/*.so + target/${{ matrix.job.target }}/release/*.dylib diff --git a/Cargo.lock b/Cargo.lock index 9936f30..71d0522 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -108,36 +108,63 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0-beta1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "547ceba155a760830b848d9ae28183bc6bddf1b714ffc27bee1c7144f07229db" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale" +version = "2.0.0-beta1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "f49d3c7f2dae0cd50d8b681a258e761eb714c9924f8222b7042118c0fb410649" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_locale_data", + "icu_provider", + "potential_utf", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0-beta1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e36332a8c93574b07598351bb479425282022341528ff521238fd4a48d143162" dependencies = [ "displaydoc", "litemap", "tinystr", "writeable", + "zerovec", +] + +[[package]] +name = "icu_locale_data" +version = "2.0.0-beta1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "222f29513408cc4572fce10bcadd05505c61ca1e30412416661e2fd464821c80" +dependencies = [ + "icu_provider_baked", ] [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0-beta1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "201d2b3bc0bd9a7ad78a00af62374365dd53ee6916942c645cd9e28778c238a5" dependencies = [ "displaydoc", - "icu_locid", + "icu_locale_core", "icu_provider_macros", "stable_deref_trait", "tinystr", @@ -147,11 +174,22 @@ dependencies = [ "zerovec", ] +[[package]] +name = "icu_provider_baked" +version = "2.0.0-beta1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c6494d25b75593ad56dcd9bde1040ef7e22e9c70b24c1de8920d9a919118893" +dependencies = [ + "icu_provider", + "writeable", + "zerotrie", +] + [[package]] name = "icu_provider_macros" -version = "1.5.0" +version = "2.0.0-beta1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +checksum = "ba0c1a4c9cca68c00053013b9ad7dc7d2e69aefed59dd9e38cb63347c28299b0" dependencies = [ "proc-macro2", "quote", @@ -160,25 +198,30 @@ dependencies = [ [[package]] name = "icu_segmenter" -version = "1.5.0" +version = "2.0.0-beta1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de" +checksum = "f7b826f2fabce46f96b63992d79f818430d397294c789d8eca2086edb0161d18" dependencies = [ "core_maths", "displaydoc", "icu_collections", - "icu_locid", + "icu_locale_core", "icu_provider", "icu_segmenter_data", + "potential_utf", "utf8_iter", "zerovec", ] [[package]] name = "icu_segmenter_data" -version = "1.5.0" +version = "2.0.0-beta1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f739ee737260d955e330bc83fdeaaf1631f7fb7ed218761d3c04bb13bb7d79df" +checksum = "f0adf39447930dbe2adbaed7049f8173378a07fc089476673a235639b9e0de6f" +dependencies = [ + "icu_locale", + "icu_provider_baked", +] [[package]] name = "itertools" @@ -254,6 +297,16 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "potential_utf" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2a1d6d1132e166768a82805efecd7c326eb8dc70ad4a586da697836b44eb970" +dependencies = [ + "serde", + "zerovec", +] + [[package]] name = "prettyplease" version = "0.2.29" @@ -373,11 +426,12 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "b2b56a820bb70060f096338fcc02edb78cb3f8fb21c5078503f48588cfcaf494" dependencies = [ "displaydoc", + "zerovec", ] [[package]] @@ -585,9 +639,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "74b3b5b7c6114bf7253093603034e102d479ecc8501deca33b6c1c816418b6d2" [[package]] name = "yoke" @@ -634,11 +688,20 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zerotrie" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa766b97d68da210d29cc0bc8d072d87de9359cb998e4bc30ab4982a1c795d47" +dependencies = [ + "displaydoc", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "9b622856b789971a6fe0442b69f3a2d7ac949005c4c8586b2c4ef09cc5182f2b" dependencies = [ "yoke", "zerofrom", @@ -647,9 +710,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "996c67268f00e216986ac140d8de9f47968c330b96aeefcae9ed296f23934448" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 4241115..30b3eec 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ license = "GPL-3.0-or-later" crate-type = ["cdylib"] [dependencies] -icu_segmenter = { version = "1.5.0", optional = true } +icu_segmenter = { version = "2.0.0-beta1", optional = true } libc = "0.2.169" windows = { version = "0.59.0", features = [ "Data_Text", diff --git a/README.md b/README.md index 290bac5..035ad29 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,11 @@ This crate provides dynamic module which [emt.el](https://github.com/roife/emt) ### Pre-built -Download from [Releases](https://github.com/Master-Hash/ewt-rs/releases). +Download from Releases, or [CI Artifact](https://github.com/Master-Hash/ewt-rs/actions/workflows/build.yml) for unversioned binaries. -Be aware, I use radical compile-time arguments, so I don't guarantee any compatibility. + -My env: - -* MSYS2 UCRT Emacs 29.4 (Windows) -* Windows 11 build 26100 -* CPU >= with avx2 (or x86-64-v3) +The Windows `.dll` files are only compatible with Emacs built with UCRT. MSVCRT is not supported. ### Manually build