Vitor Pamplona
db18954d91
Fixes key creation for groups.
2026-04-15 12:04:38 -04:00
Claude
fa0da7fae3
feat: upgrade negentropy-kmp to v1.0.2, enable macosArm64 target
...
negentropy-kmp v1.0.2 now publishes a macosArm64 artifact, unblocking
the macOS native target. Wired macosMain/macosTest source sets through
appleMain/appleTest and updated run_all.sh to run the K/Native
benchmark on both Linux (linuxX64) and macOS (macosArm64).
https://claude.ai/code/session_01WSNE6QKiYM2ZutQD2UihCW
2026-04-11 00:44:33 +00:00
Claude
731e32eb61
fix: revert macosArm64 target (blocked by negentropy-kmp), add K/N toolchain to session hook
...
macosArm64 target cannot be enabled until negentropy-kmp publishes a
macosArm64 artifact — commented out with explanation. Reverted run_all.sh
back to Linux-only for K/Native benchmark.
Added Kotlin/Native toolchain dependencies (GCC sysroot, LLDB, LLVM,
libffi) to session-start.sh so K/N compilation works in Claude Code
remote environments where Gradle's own downloader fails through the
proxy.
https://claude.ai/code/session_01WSNE6QKiYM2ZutQD2UihCW
2026-04-11 00:44:33 +00:00
Claude
ce199f42df
fix: drop deprecated macosX64 target, keep only macosArm64
...
macosX64 (Intel) has been removed from Kotlin's native target tiers.
Only macosArm64 (Apple Silicon) is supported.
https://claude.ai/code/session_01WSNE6QKiYM2ZutQD2UihCW
2026-04-11 00:44:33 +00:00
Claude
09001bbe98
feat: add macOS native targets (macosX64, macosArm64) to quartz
...
- Declare macosX64() and macosArm64() KMP targets in build.gradle.kts
- Wire macosMain/macosTest source sets through appleMain/appleTest
- Move Secp256k1NativeBenchmark from linuxX64Test to nativeTest so it
runs on all native targets (Linux, macOS, iOS)
- Use platform() for dynamic labels instead of hardcoded "linuxX64"
- Update run_all.sh to pick the correct native target per OS/arch
https://claude.ai/code/session_01WSNE6QKiYM2ZutQD2UihCW
2026-04-11 00:44:33 +00:00
Claude
715e6e598c
perf: add -Xno-param/call/receiver-assertions to remove null checks
...
Kotlin generates Intrinsics.checkNotNullParameter at the entry of every
function taking non-null reference types. Bytecode audit showed:
Before: 128 checkNotNullParameter calls across secp256k1 classes
After: 8 (only expression-value checks in non-hot paths)
Per Schnorr verify, this eliminates ~4,000+ invokestatic calls.
On ART (~2-3ns each): saves ~8-12μs per verify.
On HotSpot: neutral (C2 already optimizes null checks to fast branches).
These flags are safe for this module: all internal secp256k1 functions
use non-null LongArray/MutablePoint parameters that are never null.
Applied at the module level (compilerOptions) so all targets benefit.
https://claude.ai/code/session_01EMY5RnXb9rnsyU2KbXrSaY
2026-04-09 01:29:20 +00:00
Claude
9334994ce3
feat: add Kotlin/Native benchmark for secp256k1 on linuxX64
...
Mirrors the JVM benchmark (Secp256k1Benchmark.kt) for cross-platform
comparison of the same Kotlin code across runtimes:
K/Native LLVM AOT (-opt) on x86-64:
verifySchnorr: 101,406 ns (9,861 ops/s)
signSchnorr: 80,424 ns (12,434 ops/s)
FieldP.mul: 43 ns (22.8M ops/s)
JVM HotSpot C2 on same machine:
verifySchnorr: 53,600 ns (18,640 ops/s)
signSchnorr: 42,400 ns (23,518 ops/s)
K/N vs JVM: ~1.9× slower (vs C: ~2.9×)
K/N vs C native: ~2.9× slower
Includes field-level micro-benchmarks (FieldP.mul/sqr/add/sub/inv,
unsignedMultiplyHigh, uLt) for isolating LLVM codegen quality.
Also adds -opt to native test compilations for benchmark accuracy
(without it, debug mode is ~12× slower).
Run: ./gradlew :quartz:linuxX64Test --tests "*.Secp256k1NativeBenchmark"
https://claude.ai/code/session_01EMY5RnXb9rnsyU2KbXrSaY
2026-04-09 01:29:20 +00:00
Vitor Pamplona
9587026abc
v1.08.0
2026-04-01 15:45:46 -04:00
Vitor Pamplona
cd11503b1e
v1.07.5
2026-03-31 20:18:34 -04:00
Vitor Pamplona
5cd83bbaa4
v1.07.4
2026-03-31 19:19:24 -04:00
Vitor Pamplona
69099728b2
v1.07.3
2026-03-31 17:32:23 -04:00
Vitor Pamplona
8e4ee7a618
v1.07.2
2026-03-30 16:46:01 -04:00
Vitor Pamplona
640c47e29f
v1.07.1
2026-03-30 13:53:25 -04:00
Vitor Pamplona
0c4e5be1ea
v1.07.0
2026-03-30 12:29:41 -04:00
Claude
5fc7526076
feat: add linuxX64 KMP target and restructure native source sets
...
Restructure quartz module's Kotlin/Native source set hierarchy for
proper multiplatform coverage. Adds linuxX64 target with complete
actual implementations for all expect declarations.
Source set hierarchy:
commonMain
├── jvmAndroid → jvmMain, androidMain
└── nativeMain (shared pure Kotlin)
├── appleMain (Apple APIs) → iosMain
└── linuxMain (POSIX/OpenSSL) → linuxX64Main
nativeMain: Address, OptimizedJsonMapper, EventHasherSerializer,
ChessEngine, Secp256k1Instance, BitSet, StringExt, io/ utilities
appleMain: Log (NSLog), SecureRandom (SecRandomCopyBytes),
UriParser (NSURLComponents), BigDecimal (NSDecimalNumber),
GZip (zlib), Sha256 (CC_SHA256), crypto (Apple provider),
LargeCache (CacheMap), UrlEncoder, UnicodeNormalizer
linuxMain: Log (println), SecureRandom (/dev/urandom),
UriParser (pure Kotlin), BigDecimal (pure Kotlin),
GZip (zlib cinterop), Sha256 (OpenSSL), crypto (OpenSSL),
LargeCache (AtomicReference<LinkedHashMap>), UrlEncoder
macOS targets deferred pending negentropy-kmp macOS artifacts.
macosMain/Platform.kt retained as scaffold for future activation.
https://claude.ai/code/session_01M9CAuPUV3TfPB2xShnsBhw
2026-03-28 02:55:20 +00:00
Vitor Pamplona
009b5655f9
Merge branch 'main' into claude/add-negentropy-support-PcTpR
2026-03-27 08:15:24 -04:00
Vitor Pamplona
75a8e461ad
20x Faster Rfc3986Normalizer and way less objects being created.
2026-03-26 19:04:18 -04:00
Claude
70baf55e1c
feat: add NIP-77 negentropy sync support
...
Add support for NIP-77 (Negentropy Syncing) protocol messages using
the negentropy-kmp library for efficient set reconciliation between
client and relay.
New files:
- NegOpenCmd, NegMsgCmd, NegCloseCmd: Client-to-relay commands
- NegMsgMessage, NegErrMessage: Relay-to-client messages
- NegentropySession: Client-side reconciliation orchestrator
- NegentropyServerSession: Server-side reconciliation handler
- NegentropyManager: High-level sync manager with listener callbacks
Updated serializers:
- Jackson MessageSerializer/Deserializer for NEG-MSG, NEG-ERR
- Jackson CommandSerializer/Deserializer for NEG-OPEN, NEG-MSG, NEG-CLOSE
- Kotlin MessageKSerializer/CommandKSerializer for all NIP-77 types
Compatible with strfry relay's negentropy implementation via the
negentropy-kmp library which implements the same Protocol V1 spec.
https://claude.ai/code/session_01Dc6W1G1jURAAR9kzyVvk6g
2026-03-26 04:23:32 +00:00
Vitor Pamplona
d84d146981
Merge branch 'main' into claude/remove-libsodium-dependency-DjtWa
2026-03-25 11:24:55 -04:00
Vitor Pamplona
f42881a48e
v1.06.3
2026-03-24 20:55:04 -04:00
Vitor Pamplona
1f2e24bc1f
v1.06.2
2026-03-24 19:36:30 -04:00
KotlinGeekDev
349781d9be
Use uri-reference-kmp in commonMain. Remove platform-specific implementations.
2026-03-24 16:34:13 +01:00
KotlinGeekDev
4c14554263
Merge branch 'vitorpamplona:main' into kmp-completeness
2026-03-24 13:27:40 +01:00
Vitor Pamplona
7874893938
v1.06.1
2026-03-23 18:19:42 -04:00
KotlinGeekDev
bddff36e6b
androidLibrary {} -> android {}
2026-03-23 19:55:35 +01:00
KotlinGeekDev
cfecfe2130
Move uri-reference-kmp to version catalog. Remove swift bridge(was a nice run).
2026-03-23 19:49:24 +01:00
KotlinGeekDev
a9c41e1d55
Introduce uri-reference-kmp and replace uriBridge usages with it.
2026-03-23 19:31:58 +01:00
Claude
d586a0dc25
feat: replace libsodium with pure Kotlin ChaCha20/Poly1305 implementation
...
Remove LazySodium/JNA/libsodium native dependencies and replace with
pure Kotlin implementations of ChaCha20, HChaCha20, XChaCha20,
Poly1305 MAC, and XChaCha20-Poly1305 AEAD. This eliminates platform-
specific native binaries while maintaining full NIP-44 compatibility.
- Add ChaCha20Core with RFC 8439 block function, IETF stream XOR,
HChaCha20, and XChaCha20
- Add Poly1305 MAC (RFC 8439 §2.5)
- Add XChaCha20Poly1305 AEAD encrypt/decrypt
- Convert LibSodiumInstance from expect/actual to commonMain object
- Delete platform-specific LibSodiumInstance actuals (android/jvm/ios)
- Remove iOS native interop (cinterop, linker opts, .a libraries)
- Remove lazysodium-java, lazysodium-android, JNA from build deps
- Clean up ProGuard rules (remove JNA/LazySodium keep rules)
- Add RFC 8439 + libsodium test vectors for ChaCha20 and XChaCha20
- Update benchmark to use simplified ChaCha20 API
https://claude.ai/code/session_01YHBwqnb3Z7Q7PX31tJ2G3i
2026-03-23 17:40:29 +00:00
Vitor Pamplona
7af1be7363
v1.06.0
2026-03-23 11:23:44 -04:00
Vitor Pamplona
d431b12f94
Migrates EventStore from Android's SQLLite to KMP
...
Fixes testing of libsodium between java and android
2026-03-20 16:00:17 -04:00
Vitor Pamplona
56cce46858
Solving all problems with Quartz tests
2026-03-16 19:22:28 -04:00
Vitor Pamplona
f708f6c265
Specify which .def file is used between simulators and ios Devices
2026-03-16 17:46:20 -04:00
Vitor Pamplona
e7760dc7c7
adds bundleId to the binary file
2026-03-16 17:16:18 -04:00
Vitor Pamplona
b916817247
Finishes serialization features for NIP-47
2026-03-16 16:35:05 -04:00
Vitor Pamplona
7c22c4e6c5
Migrates to collections 1.6, which deprecates iOS Intel targets.
2026-03-16 13:45:01 -04:00
Vitor Pamplona
8b4a45cb5b
Removing deprecated library addresses and deprecated apis
2026-03-15 20:52:01 -04:00
Vitor Pamplona
3e0b8a5f8f
Fixes gradle build on MacOS and adds a Clibsodium.def file
2026-03-13 08:40:51 -04:00
KotlinGeekDev
3838b6b815
Some fixes.
2026-03-12 22:16:34 +01:00
KotlinGeekDev
42f48e11fc
Make CI happy(attempt 2).
2026-03-12 21:49:08 +01:00
KotlinGeekDev
a463a9802f
Slightly modify defFile generation, to stop CI cries.
2026-03-12 21:36:25 +01:00
KotlinGeekDev
0b928d29a6
Make the libsodium cinterop file generation more reliable. Add in(and comment out) some test code for extracting the libsodium headers from zip file.
2026-03-12 20:28:02 +01:00
KotlinGeekDev
d957efb1b8
Foundations(iOS Sourceset): Streamline libsodium bindings configuration.
2026-03-12 16:55:19 +01:00
KotlinGeekDev
759b0c8b96
Foundations(iOS Sourceset): Use alternative implementation for MacInstance, due to complications with mac length under previous implementation, which makes NIP49 tests(with all other relevant tests) pass. Some spotless fixes.
2026-03-12 15:31:33 +01:00
KotlinGeekDev
8f02ea0cf6
Foundations(iOS Sourceset): Provide implementation for LibSodiumInstance.ios.kt, using the native library(shipped in project). Generate cinterop definition file with custom Gradle task. Defines bindings for use in actual code(may be streamlined later). Adds NIP44 tests and makes sure they pass.
2026-03-12 15:13:32 +01:00
Vitor Pamplona
f4d401bc56
Switches to our own version of the Url Detector
2026-03-06 10:58:59 -05:00
Vitor Pamplona
1fa93788db
android target seems to be creating some issues between plugin dependencies after adding spm
2026-03-04 12:19:47 -05:00
Vitor Pamplona
da01c6ccd1
Moves smp plugin to version catalog
2026-03-04 12:18:55 -05:00
KotlinGeekDev
4cea4e4f5d
Fix issues needing a fix caught by review.
2026-03-04 13:51:46 +01:00
KotlinGeekDev
bbd17e4e64
Fix build issues.
2026-03-04 01:06:33 +01:00
KotlinGeekDev
68a262fa88
Merge branch 'main' of https://github.com/vitorpamplona/amethyst into upstream-main
...
# Conflicts:
# gradle/libs.versions.toml
# quartz/build.gradle.kts
# quartz/src/androidHostTest/kotlin/com/vitorpamplona/quartz/TestResourceLoader.android.kt
# quartz/src/iosMain/kotlin/com/vitorpamplona/quartz/utils/GZip.ios.kt
# quartz/src/iosTest/kotlin/com/vitorpamplona/quartz/TestResourceLoader.kt
2026-03-04 00:37:10 +01:00