Skip to content

v1.28.0-pre1: Wuk Lamat

Pre-release
Pre-release

Choose a tag to compare

@Xe Xe released this 30 Aug 22:11
· 2 commits to main since this release

This release adds WebAssembly based proof of work checks to Anubis. They are documented in the Proof of Work (WebAssembly) page. This uses Rust code compiled to WebAssembly to run proof of work code. When browsers support SIMD, the WASM will use hardware acceleration.

When clients are configured to disable WebAssembly, Anubis falls back to a pure JavaScript implementation of the WebAssembly-based check logic. As clients that disable WebAssembly usually disable the JavaScript JIT (the thing that makes JavaScript fast), this makes checks slower.

Additionally due to complicated facts and circumstances involving it being complicated to pass the messages from the wasm2js world back to JavaScript, the progress bar will not update while a wasm2js check is running. This is a known issue and will be fixed in a later release.

The difficulty values for the WebAssembly based checks are going to be much greater than the equivalent difficulty values for the JavaScript based checks. Generally these count the number of leading bits that much match instead of the number of leading nibbles that must match. Here's a rough translation table:

fast difficulty argon2id difficulty sha256 difficulty hashx difficulty
4 4 16 15
2 2 8 7
6 6 24 20

As I'm not certain this will work fine out of the box for a few edge cases, I have disabled these new challenge methods by default. I will enable the new methods by default in a future version after they have been sufficiently tested.

What's Changed

  • test(internal/test): make the Playwright suite runnable again by @CybotTM in #1830
  • feat(blog): add v1.27.0 release blogpost by @Xe in #1841
  • docs(admin/faq): fix typo by @Xe in #1843
  • docs(test): document tales of woe by @Xe in #1837
  • feat(data/bots): block Cloudflare Kitesurf by @Xe in #1839
  • fix(lib): don't clear the auth cookie when the request sent none by @CybotTM in #1828
  • docs: rework developer docs tree by @Xe in #1848
  • chore: npm run format by @Xe in #1849
  • chore(localization): improved norwegian nynorsk localization by @ysccsyysc in #1844
  • chore: bump grpc to v1.82.1 by @Xe in #1862
  • fix(web/js): properly spawn workers with strict CSP settings by @Xe in #1874
  • feat(default-config): add default rule for domain fronting by @Xe in #1882
  • fix(localization): correct Dutch go_home typo by @fogrye in #1892
  • feat(data/bots): add HyperAgent by @Xe in #1894
  • feat(lib): add AI agent honeypot method by @Xe in #1895
  • feat(utils): add wazero-exec fallback for running wasi modules on any host by @Xe in #1898
  • ci: add rust to all steps of the CI flow by @Xe in #1899
  • feat(utils): add precompiled wasm-opt and wasm2js binaries by @Xe in #1900
  • feat: add rust code for proof of work by @Xe in #1901
  • feat: add wasm go package by @Xe in #1902
  • feat(web): add frontend JS for WASM patch by @Xe in #1903
  • feat(lib/challenge)!: add wasm challenge by @Xe in #1904
  • docs: update for wasm changes by @Xe in #1905
  • feat(yeetfile): build binaries for netbsd by @Xe in #1911
  • feat(anubis): log when challenges are accepted by @poespas in #1879
  • fix(wasm): adopt resilience fixes, actually test this with CI by @Xe in #1912
  • build(deps): bump the npm group across 1 directory with 10 updates by @dependabot[bot] in #1909
  • build(deps): bump the github-actions group across 1 directory with 14 updates by @dependabot[bot] in #1910
  • revert(lib): remove AI agent honeypot method by @Xe in #1913
  • chore(js/worker): consolidate webcrypto and purejs workers by @Xe in #1767
  • chore: fix wasm build scripts on macOS by @Xe in #1914
  • build(deps): bump the gomod group across 1 directory with 16 updates by @dependabot[bot] in #1907
  • fix(ci): update golangci lint to not die by @JasonLovesDoggo in #1915
  • fix(ogtags): OG fetch omits X-Forwarded-Host, silently breaking passthrough when --target-host is set by @tsueri in #1881

New Contributors

Full Changelog: v1.27.0...v1.28.0-pre1