ldk-java
2 years ago[TS] Fix Some array leaks, mark others, treat < 10 leaks as "okay"
Matt Corallo [Sun, 16 Jan 2022 23:49:44 +0000 (23:49 +0000)]
[TS] Fix Some array leaks, mark others, treat < 10 leaks as "okay"

2 years ago[TS] Empty environment variables as WASI's environ fetch leaks memory
Matt Corallo [Sun, 16 Jan 2022 23:33:07 +0000 (23:33 +0000)]
[TS] Empty environment variables as WASI's environ fetch leaks memory

2 years ago[TS] Use -O1 on debug builds as otherwise they can be unusable slow
Matt Corallo [Sun, 16 Jan 2022 23:13:29 +0000 (23:13 +0000)]
[TS] Use -O1 on debug builds as otherwise they can be unusable slow

2 years ago[TS] Free native -> human arrays after we're done converting
Matt Corallo [Sun, 16 Jan 2022 23:11:35 +0000 (23:11 +0000)]
[TS] Free native -> human arrays after we're done converting

2 years ago[TS] Wrap `aligned_alloc` as well as other malloc's.
Matt Corallo [Sun, 16 Jan 2022 22:25:20 +0000 (22:25 +0000)]
[TS] Wrap `aligned_alloc` as well as other malloc's.

2 years ago[TS] Debug allocations somewhat further, incl prints in test.
Matt Corallo [Sun, 16 Jan 2022 18:36:46 +0000 (18:36 +0000)]
[TS] Debug allocations somewhat further, incl prints in test.

2 years ago[TS] Move C header code to next to code that uses it in constr
Matt Corallo [Sun, 16 Jan 2022 18:34:30 +0000 (18:34 +0000)]
[TS] Move C header code to next to code that uses it in constr

2 years ago[TS] Fix Debug builds by removing ((destructor)) attributes
Matt Corallo [Sat, 15 Jan 2022 22:02:46 +0000 (22:02 +0000)]
[TS] Fix Debug builds by removing ((destructor)) attributes

2 years ago[TS] Remove race-y test for malloc-free-malloc re-using memory
Matt Corallo [Sat, 15 Jan 2022 21:46:20 +0000 (21:46 +0000)]
[TS] Remove race-y test for malloc-free-malloc re-using memory

2 years ago[TS] Swap Os for Oz because its a minor change and a minor win
Matt Corallo [Sat, 15 Jan 2022 20:54:37 +0000 (20:54 +0000)]
[TS] Swap Os for Oz because its a minor change and a minor win

2 years ago[TS] Make bindings.mts export nothing, fix some indentation
Matt Corallo [Sat, 15 Jan 2022 20:30:37 +0000 (20:30 +0000)]
[TS] Make bindings.mts export nothing, fix some indentation

2 years ago[TS] Set LDK_GARBAGECOLLECTED_GIT_OVERRIDE so that versions work
Matt Corallo [Mon, 17 Jan 2022 04:29:02 +0000 (04:29 +0000)]
[TS] Set LDK_GARBAGECOLLECTED_GIT_OVERRIDE so that versions work

2 years ago[TS] Add bindings-binary-version-check to initializeWasm
Matt Corallo [Sat, 15 Jan 2022 20:30:03 +0000 (20:30 +0000)]
[TS] Add bindings-binary-version-check to initializeWasm

2 years ago[TS] Create .d.mts files by default
Matt Corallo [Sat, 15 Jan 2022 20:28:36 +0000 (20:28 +0000)]
[TS] Create .d.mts files by default

2 years ago[TS] Fix HTML test runner to properly await and fully check result
Matt Corallo [Sat, 15 Jan 2022 05:35:12 +0000 (05:35 +0000)]
[TS] Fix HTML test runner to properly await and fully check result

2 years agoMerge pull request #78 from arik-so/typescript_fixes
Matt Corallo [Fri, 14 Jan 2022 19:12:15 +0000 (19:12 +0000)]
Merge pull request #78 from arik-so/typescript_fixes

Make npm publication generate node-compatible modules.

2 years agoInclude type declaration files and remove typically unnecessary dependencies.
Arik Sosman [Wed, 12 Jan 2022 20:30:37 +0000 (12:30 -0800)]
Include type declaration files and remove typically unnecessary dependencies.

Update files to include *.mjs files and remove npmignore.

Update .gitignore

Update .npmignore

Update .gitignore

Make publication generate node-compatible modules.

2 years agoMerge pull request #74 from TheBlueMatt/2022-01-ts-hu-files v0.0.104.1
Matt Corallo [Mon, 10 Jan 2022 21:38:45 +0000 (21:38 +0000)]
Merge pull request #74 from TheBlueMatt/2022-01-ts-hu-files

[TypeScript] Make Basic "Human" Object Construction Work

2 years agoUpdate auto-generated TypeScript Bindings 2022-01-ts-hu-files
Matt Corallo [Mon, 10 Jan 2022 03:29:25 +0000 (03:29 +0000)]
Update auto-generated TypeScript Bindings

2 years agoUpdate auto-generated Java bindings (all functionally equivalent)
Matt Corallo [Mon, 10 Jan 2022 03:25:47 +0000 (03:25 +0000)]
Update auto-generated Java bindings (all functionally equivalent)

2 years agoSplit Java CI runs into tests and binary determinism checks
Matt Corallo [Mon, 10 Jan 2022 03:12:58 +0000 (03:12 +0000)]
Split Java CI runs into tests and binary determinism checks

2 years ago[TS] Add package.json for public release
Matt Corallo [Mon, 10 Jan 2022 06:29:47 +0000 (06:29 +0000)]
[TS] Add package.json for public release

2 years ago[TS] Update README to describe TS as "early alpha" 🚀
Matt Corallo [Sat, 8 Jan 2022 17:48:28 +0000 (17:48 +0000)]
[TS] Update README to describe TS as "early alpha" ðŸš€

2 years ago[TS] Change paths to liblightningjs.wasm to be in ts/
Matt Corallo [Mon, 10 Jan 2022 05:41:44 +0000 (05:41 +0000)]
[TS] Change paths to liblightningjs.wasm to be in ts/

2 years ago[TS] Add a basic functional tests of human types
Matt Corallo [Sat, 8 Jan 2022 07:43:36 +0000 (07:43 +0000)]
[TS] Add a basic functional tests of human types

2 years ago[TS] Drop InternalUtils as they are now called via bindings.
Matt Corallo [Mon, 10 Jan 2022 05:35:54 +0000 (05:35 +0000)]
[TS] Drop InternalUtils as they are now called via bindings.

2 years ago[TS] Swap BigInt (the class/constructor) for bigint (the primitive)
Matt Corallo [Mon, 10 Jan 2022 00:56:18 +0000 (00:56 +0000)]
[TS] Swap BigInt (the class/constructor) for bigint (the primitive)

2 years agoSupport mapping primitive arrays as non-arrays (eg numbers)
Matt Corallo [Mon, 10 Jan 2022 00:55:04 +0000 (00:55 +0000)]
Support mapping primitive arrays as non-arrays (eg numbers)

TypeScript can't pass an array through to C, so we have to pass a
pointer to a constructed array. This adds support in the relevant
type-conversion logic to enable this (and uses it in TS).

2 years agoEnsure `TypeInfo` always has `subty` set if its an array
Matt Corallo [Mon, 10 Jan 2022 00:50:23 +0000 (00:50 +0000)]
Ensure `TypeInfo` always has `subty` set if its an array

2 years agoMake String types language-specific and fix TS string conversion
Matt Corallo [Sun, 9 Jan 2022 06:24:30 +0000 (06:24 +0000)]
Make String types language-specific and fix TS string conversion

2 years agoSkip reference-holding in static methods in a (kinda-)cleaner way
Matt Corallo [Mon, 10 Jan 2022 05:25:29 +0000 (05:25 +0000)]
Skip reference-holding in static methods in a (kinda-)cleaner way

2 years ago[TS] Clean up wasm environment exports
Matt Corallo [Sun, 9 Jan 2022 00:01:15 +0000 (00:01 +0000)]
[TS] Clean up wasm environment exports

2 years ago[TS] Configure memory setup in linker to not insta-OOM
Matt Corallo [Sat, 8 Jan 2022 23:57:00 +0000 (23:57 +0000)]
[TS] Configure memory setup in linker to not insta-OOM

2 years ago[TS] Rewrite complex enum creation
Matt Corallo [Sun, 9 Jan 2022 00:01:35 +0000 (00:01 +0000)]
[TS] Rewrite complex enum creation

We cannot create bindings objects from C in TS, so instead have to
query for individual fields on construction.

2 years ago[TS] Use export_/import_name to filter exposed symbols
Matt Corallo [Sat, 8 Jan 2022 19:44:08 +0000 (19:44 +0000)]
[TS] Use export_/import_name to filter exposed symbols

2 years ago[TS] Correct pointer arithmetic on array construction
Matt Corallo [Mon, 10 Jan 2022 03:07:49 +0000 (03:07 +0000)]
[TS] Correct pointer arithmetic on array construction

2 years ago[TS] Correctly pass u64s from TS to C, using BigInts
Matt Corallo [Mon, 10 Jan 2022 01:17:46 +0000 (01:17 +0000)]
[TS] Correctly pass u64s from TS to C, using BigInts

2 years agoFix LDKRecoverableSignature variable parsing
Matt Corallo [Mon, 10 Jan 2022 03:57:50 +0000 (03:57 +0000)]
Fix LDKRecoverableSignature variable parsing

2 years agoUse uintptr_t for the return value of `clone_ptr` to match reality
Matt Corallo [Mon, 10 Jan 2022 01:16:27 +0000 (01:16 +0000)]
Use uintptr_t for the return value of `clone_ptr` to match reality

2 years ago[TS] Implement Rust -> TS calls and TS Trait instance construction
Matt Corallo [Sat, 8 Jan 2022 07:04:58 +0000 (07:04 +0000)]
[TS] Implement Rust -> TS calls and TS Trait instance construction

2 years ago[TS] Make compiler checks a bit more aggressive, fix indentation
Matt Corallo [Sat, 8 Jan 2022 06:38:48 +0000 (06:38 +0000)]
[TS] Make compiler checks a bit more aggressive, fix indentation

2 years ago[TS] Fix indentation of bindings.mts somewhat
Matt Corallo [Sat, 8 Jan 2022 19:45:29 +0000 (19:45 +0000)]
[TS] Fix indentation of bindings.mts somewhat

2 years agoFix double free introduced in 9b9e4369d34e24a9dc7f3f1494865a026ca4
Matt Corallo [Mon, 10 Jan 2022 04:30:00 +0000 (04:30 +0000)]
Fix double free introduced in 9b9e4369d34e24a9dc7f3f1494865a026ca4

This requires correctly setting `holds_ref` as well as handling
`holds_ref` on pointed-to objects in the general-case ret_conv in
`gen_type_mapping.py`.

2 years agoMerge pull request #73 from TheBlueMatt/main
Matt Corallo [Sat, 8 Jan 2022 05:03:48 +0000 (05:03 +0000)]
Merge pull request #73 from TheBlueMatt/main

Make all TypeScript "Human" mappings compile

2 years agoUpdate auto-generated TypeScript files
Matt Corallo [Sat, 8 Jan 2022 04:13:50 +0000 (04:13 +0000)]
Update auto-generated TypeScript files

2 years agoAdd a warning for Locked human objects as they are not usable yet
Matt Corallo [Sat, 8 Jan 2022 04:10:54 +0000 (04:10 +0000)]
Add a warning for Locked human objects as they are not usable yet

2 years agoUpdate tests to test human structs from TypeScript
Matt Corallo [Fri, 7 Jan 2022 02:12:18 +0000 (02:12 +0000)]
Update tests to test human structs from TypeScript

2 years agoMake array human construction language-specific
Matt Corallo [Sat, 8 Jan 2022 02:16:37 +0000 (02:16 +0000)]
Make array human construction language-specific

2 years ago[TS] Correct syntax in human interface files
Matt Corallo [Sat, 8 Jan 2022 01:26:12 +0000 (01:26 +0000)]
[TS] Correct syntax in human interface files

2 years ago[TS] Drop references to `this` in static `UtilMethods` functions
Matt Corallo [Sat, 8 Jan 2022 03:55:05 +0000 (03:55 +0000)]
[TS] Drop references to `this` in static `UtilMethods` functions

2 years agoMake TxOut language-specific, fix typescript UtilMethods compilation
Matt Corallo [Fri, 7 Jan 2022 23:02:42 +0000 (23:02 +0000)]
Make TxOut language-specific, fix typescript UtilMethods compilation

2 years ago[TS] Fix syntax errors in human trait definitions
Matt Corallo [Fri, 7 Jan 2022 22:32:50 +0000 (22:32 +0000)]
[TS] Fix syntax errors in human trait definitions

2 years agoMake array range iteration language-specific
Matt Corallo [Fri, 7 Jan 2022 22:20:06 +0000 (22:20 +0000)]
Make array range iteration language-specific

2 years agoMake human -> C array mapping language-specific
Matt Corallo [Fri, 7 Jan 2022 20:59:42 +0000 (20:59 +0000)]
Make human -> C array mapping language-specific

2 years agoUse wasm's default memory instead of creating/accessing an (unused) one
Matt Corallo [Fri, 7 Jan 2022 18:25:43 +0000 (18:25 +0000)]
Use wasm's default memory instead of creating/accessing an (unused) one

2 years agoMake struct pointer loading language-specific and reliable for TS
Matt Corallo [Fri, 7 Jan 2022 06:27:54 +0000 (06:27 +0000)]
Make struct pointer loading language-specific and reliable for TS

2 years agoMake Result mapping language-specific and implement it for TS
Matt Corallo [Fri, 7 Jan 2022 06:03:37 +0000 (06:03 +0000)]
Make Result mapping language-specific and implement it for TS

2 years agoAdd InternalUtils for array length checking to match Java
Matt Corallo [Fri, 7 Jan 2022 03:24:00 +0000 (03:24 +0000)]
Add InternalUtils for array length checking to match Java

2 years ago[TS] Resolve locally-defined structs in other structs, create index.mts
Matt Corallo [Fri, 7 Jan 2022 18:36:54 +0000 (18:36 +0000)]
[TS] Resolve locally-defined structs in other structs, create index.mts

2 years agoMake the call for `ptrs_to.add()` swappable per language
Matt Corallo [Thu, 6 Jan 2022 23:31:59 +0000 (23:31 +0000)]
Make the call for `ptrs_to.add()` swappable per language

2 years ago[TS] Fix finalization syntax, drop "default" on class exports, minor tweaks
Matt Corallo [Thu, 6 Jan 2022 23:33:48 +0000 (23:33 +0000)]
[TS] Fix finalization syntax, drop "default" on class exports, minor tweaks

2 years agoMake variable declaration statements language-specific
Matt Corallo [Fri, 7 Jan 2022 18:58:53 +0000 (18:58 +0000)]
Make variable declaration statements language-specific

2 years ago[TS] Minor syntax fixes in human struct files, mostly complex enums
Matt Corallo [Fri, 7 Jan 2022 18:58:40 +0000 (18:58 +0000)]
[TS] Minor syntax fixes in human struct files, mostly complex enums

2 years agoPass output directory throuh to consts and call a cleanup function
Matt Corallo [Fri, 7 Jan 2022 18:38:22 +0000 (18:38 +0000)]
Pass output directory throuh to consts and call a cleanup function

2 years agoMerge pull request #72 from TheBlueMatt/main
Matt Corallo [Fri, 7 Jan 2022 17:31:08 +0000 (17:31 +0000)]
Merge pull request #72 from TheBlueMatt/main

Get TypeScript compiling warning-free and properly test wasm loading+calling in CI

2 years agoUpdate auto-generated mts files (without structs)
Matt Corallo [Wed, 5 Jan 2022 06:49:44 +0000 (06:49 +0000)]
Update auto-generated mts files (without structs)

2 years agoMake genbindings.sh only build one of java/wasm, test wasm in CI
Matt Corallo [Wed, 5 Jan 2022 06:32:04 +0000 (06:32 +0000)]
Make genbindings.sh only build one of java/wasm, test wasm in CI

2 years agoDrop ts/util* which are no longer used/generated
Matt Corallo [Wed, 5 Jan 2022 06:20:42 +0000 (06:20 +0000)]
Drop ts/util* which are no longer used/generated

2 years agoSwitch to .mts files and build typescript bindings in genbindings.sh
Matt Corallo [Wed, 5 Jan 2022 06:18:33 +0000 (06:18 +0000)]
Switch to .mts files and build typescript bindings in genbindings.sh

2 years agoFix method reference errors and make bindings.ts generation work again
Matt Corallo [Wed, 5 Jan 2022 06:17:44 +0000 (06:17 +0000)]
Fix method reference errors and make bindings.ts generation work again

2 years agoFix syntax errors in bindings.ts in option handling
Matt Corallo [Tue, 4 Jan 2022 23:56:21 +0000 (23:56 +0000)]
Fix syntax errors in bindings.ts in option handling

2 years agoUpdate tests and batteries to new result API
Matt Corallo [Tue, 4 Jan 2022 22:52:11 +0000 (22:52 +0000)]
Update tests and batteries to new result API

2 years agoUnify tuple and result field getters and push them through map_fn
Matt Corallo [Tue, 4 Jan 2022 22:50:47 +0000 (22:50 +0000)]
Unify tuple and result field getters and push them through map_fn

2 years agoUpdate typescript test to latest API
Matt Corallo [Tue, 4 Jan 2022 21:23:23 +0000 (21:23 +0000)]
Update typescript test to latest API

2 years agoClean up TS arrays and make TS compile warning-free again
Matt Corallo [Tue, 4 Jan 2022 06:48:40 +0000 (06:48 +0000)]
Clean up TS arrays and make TS compile warning-free again

2 years agoMerge pull request #71 from TheBlueMatt/main
Matt Corallo [Thu, 23 Dec 2021 00:33:08 +0000 (00:33 +0000)]
Merge pull request #71 from TheBlueMatt/main

Update readme noting that the bindings are beta, not alpha

2 years agoUpdate readme noting that the bindings are beta, not alpha
Matt Corallo [Thu, 23 Dec 2021 00:29:52 +0000 (00:29 +0000)]
Update readme noting that the bindings are beta, not alpha

... and there are no known memory leaks ðŸŽ‰.

Fixes #70.

2 years agoMerge pull request #69 from TheBlueMatt/main v0.0.104.0
Matt Corallo [Tue, 21 Dec 2021 17:45:34 +0000 (17:45 +0000)]
Merge pull request #69 from TheBlueMatt/main

v0.0.104.0

2 years agoFix Java path setting in OSX builds
Matt Corallo [Tue, 21 Dec 2021 02:02:57 +0000 (02:02 +0000)]
Fix Java path setting in OSX builds

2 years agoUse LC_ALL instead of LANG to correct zip file ordering
Matt Corallo [Tue, 21 Dec 2021 01:27:24 +0000 (01:27 +0000)]
Use LC_ALL instead of LANG to correct zip file ordering

2 years agoUpdate CI branches to 0.0.104
Matt Corallo [Mon, 20 Dec 2021 09:04:37 +0000 (09:04 +0000)]
Update CI branches to 0.0.104

2 years agoUpdate auto-updated Java files
Matt Corallo [Sun, 5 Dec 2021 23:39:42 +0000 (23:39 +0000)]
Update auto-updated Java files

2 years agoUpdate tests and batteries for new 0.0.104 API, fix Java 18 build
Matt Corallo [Mon, 20 Dec 2021 07:18:32 +0000 (07:18 +0000)]
Update tests and batteries for new 0.0.104 API, fix Java 18 build

As of this commit, leaks in the full test suite are:
    20 allocations remained for 1115206 bytes.

2 years agoHandle the new LDKTwelveBytes instead of LDKTenBytes
Matt Corallo [Mon, 20 Dec 2021 07:06:04 +0000 (07:06 +0000)]
Handle the new LDKTwelveBytes instead of LDKTenBytes

2 years agoUpdate HumanObjectPeerTest to exercise undefined JVM JIT behavior
Matt Corallo [Tue, 14 Dec 2021 22:55:00 +0000 (22:55 +0000)]
Update HumanObjectPeerTest to exercise undefined JVM JIT behavior

2 years agoWork around Java's insane lack of finalization guarantees
Matt Corallo [Tue, 14 Dec 2021 22:38:49 +0000 (22:38 +0000)]
Work around Java's insane lack of finalization guarantees

2 years agoUse the same FindClass argument for Android and regular Java
Matt Corallo [Sun, 12 Dec 2021 18:44:34 +0000 (18:44 +0000)]
Use the same FindClass argument for Android and regular Java

Its unclear whether the android variant (no L prefix, ; suffix) was
ever tested on normal Java or not, but the existing code generates
a large volumes of warnings on OpenJDK 11 like:

WARNING in native method: JNI FindClass received a bad class descriptor "Lorg/ldk/impl/bindings$LDKEvent$PaymentReceived;".  A correct class descriptor has no leading "L" or trailing ";".  Incorrect descriptors will not be accepted in future releases.

2 years agoCheck exceptions after calling Enum.ordinal() from Rust
Matt Corallo [Sun, 12 Dec 2021 18:35:18 +0000 (18:35 +0000)]
Check exceptions after calling Enum.ordinal() from Rust

This generally shouldn't ever fire, but otherwise Java says, e.g.

WARNING in native method: JNI call made without checking exceptions when required to from CallIntMethod
at org.ldk.impl.bindings.create_invoice_from_channelmanager(Native Method)

2 years agothrow InvalidSerializedDataException on duplicate ChannelMonitors
Matt Corallo [Sun, 5 Dec 2021 23:29:37 +0000 (23:29 +0000)]
throw InvalidSerializedDataException on duplicate ChannelMonitors

2 years agoOverride hashCode and equals for Rust objects that impl the equivalent
Matt Corallo [Sun, 5 Dec 2021 23:28:18 +0000 (23:28 +0000)]
Override hashCode and equals for Rust objects that impl the equivalent

2 years agoMerge pull request #56 from TheBlueMatt/main v0.0.103.1
Matt Corallo [Fri, 3 Dec 2021 16:21:47 +0000 (16:21 +0000)]
Merge pull request #56 from TheBlueMatt/main

v0.0.103.1

2 years agoMake maven a bit quieter during CI runs
Matt Corallo [Thu, 2 Dec 2021 23:09:20 +0000 (23:09 +0000)]
Make maven a bit quieter during CI runs

2 years agoUpdate to Maven 3.8.4 on OSX CI builds
Matt Corallo [Wed, 1 Dec 2021 15:47:11 +0000 (15:47 +0000)]
Update to Maven 3.8.4 on OSX CI builds

2 years agoUpdate auto-generated bindings
Matt Corallo [Thu, 11 Nov 2021 17:38:10 +0000 (17:38 +0000)]
Update auto-generated bindings

2 years agoUpdate tests to new logger API
Matt Corallo [Thu, 25 Nov 2021 02:32:57 +0000 (02:32 +0000)]
Update tests to new logger API

As of this commit, leaks for a full run are down to:
    17 allocations remained for 1115062 bytes.

2 years agoReplace unicode … with ... as java complains about non-ASCII docs
Matt Corallo [Wed, 1 Dec 2021 01:14:45 +0000 (01:14 +0000)]
Replace unicode â€¦ with ... as java complains about non-ASCII docs

2 years agoUpdate PeerTest for new trait-object-return call semantics
Matt Corallo [Thu, 2 Dec 2021 19:43:51 +0000 (19:43 +0000)]
Update PeerTest for new trait-object-return call semantics

2 years agoClone objects being returned from trait methods before return from Java
Matt Corallo [Thu, 2 Dec 2021 18:24:05 +0000 (18:24 +0000)]
Clone objects being returned from trait methods before return from Java

When we return an object from a trait method called from Rust, we
often return complex Java "Human" objects. Because the underlying
object is owned by Java, we clone them before passing the objects
back to Rust, if possible. However, the clone call happens after
the Java method returns, at which point Java does not have any
references to the original "Human" object, which upon free will
free the underlying object.

While the time between when the Java method returns and the C FFI
code clones the object is incredibly short, CI did manage to find
the race here in ASAN, where the original object may be freed
before being accessed again for the clone in C.

Here we fix this by simply cloneing the object being returned
directly from Java.

2 years agoConstruct a method to clone returning a pointerand not a human object
Matt Corallo [Thu, 2 Dec 2021 15:57:15 +0000 (15:57 +0000)]
Construct a method to clone returning a pointerand not a human object

2 years agoDrop unused Vec constructor functions
Matt Corallo [Thu, 2 Dec 2021 17:11:16 +0000 (17:11 +0000)]
Drop unused Vec constructor functions