Matt Corallo [Fri, 7 Jan 2022 18:38:22 +0000 (18:38 +0000)]
Pass output directory throuh to consts and call a cleanup function
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
Matt Corallo [Wed, 5 Jan 2022 06:49:44 +0000 (06:49 +0000)]
Update auto-generated mts files (without structs)
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
Matt Corallo [Wed, 5 Jan 2022 06:20:42 +0000 (06:20 +0000)]
Drop ts/util* which are no longer used/generated
Matt Corallo [Wed, 5 Jan 2022 06:18:33 +0000 (06:18 +0000)]
Switch to .mts files and build typescript bindings in genbindings.sh
Matt Corallo [Wed, 5 Jan 2022 06:17:44 +0000 (06:17 +0000)]
Fix method reference errors and make bindings.ts generation work again
Matt Corallo [Tue, 4 Jan 2022 23:56:21 +0000 (23:56 +0000)]
Fix syntax errors in bindings.ts in option handling
Matt Corallo [Tue, 4 Jan 2022 22:52:11 +0000 (22:52 +0000)]
Update tests and batteries to new result API
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
Matt Corallo [Tue, 4 Jan 2022 21:23:23 +0000 (21:23 +0000)]
Update typescript test to latest API
Matt Corallo [Tue, 4 Jan 2022 06:48:40 +0000 (06:48 +0000)]
Clean up TS arrays and make TS compile warning-free again
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
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.
Matt Corallo [Tue, 21 Dec 2021 17:45:34 +0000 (17:45 +0000)]
Merge pull request #69 from TheBlueMatt/main
v0.0.104.0
Matt Corallo [Tue, 21 Dec 2021 02:02:57 +0000 (02:02 +0000)]
Fix Java path setting in OSX builds
Matt Corallo [Tue, 21 Dec 2021 01:27:24 +0000 (01:27 +0000)]
Use LC_ALL instead of LANG to correct zip file ordering
Matt Corallo [Mon, 20 Dec 2021 09:04:37 +0000 (09:04 +0000)]
Update CI branches to 0.0.104
Matt Corallo [Sun, 5 Dec 2021 23:39:42 +0000 (23:39 +0000)]
Update auto-updated Java files
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.
Matt Corallo [Mon, 20 Dec 2021 07:06:04 +0000 (07:06 +0000)]
Handle the new LDKTwelveBytes instead of LDKTenBytes
Matt Corallo [Tue, 14 Dec 2021 22:55:00 +0000 (22:55 +0000)]
Update HumanObjectPeerTest to exercise undefined JVM JIT behavior
Matt Corallo [Tue, 14 Dec 2021 22:38:49 +0000 (22:38 +0000)]
Work around Java's insane lack of finalization guarantees
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.
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)
Matt Corallo [Sun, 5 Dec 2021 23:29:37 +0000 (23:29 +0000)]
throw InvalidSerializedDataException on duplicate ChannelMonitors
Matt Corallo [Sun, 5 Dec 2021 23:28:18 +0000 (23:28 +0000)]
Override hashCode and equals for Rust objects that impl the equivalent
Matt Corallo [Fri, 3 Dec 2021 16:21:47 +0000 (16:21 +0000)]
Merge pull request #56 from TheBlueMatt/main
v0.0.103.1
Matt Corallo [Thu, 2 Dec 2021 23:09:20 +0000 (23:09 +0000)]
Make maven a bit quieter during CI runs
Matt Corallo [Wed, 1 Dec 2021 15:47:11 +0000 (15:47 +0000)]
Update to Maven 3.8.4 on OSX CI builds
Matt Corallo [Thu, 11 Nov 2021 17:38:10 +0000 (17:38 +0000)]
Update auto-generated bindings
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.
Matt Corallo [Wed, 1 Dec 2021 01:14:45 +0000 (01:14 +0000)]
Replace unicode … with ... as java complains about non-ASCII docs
Matt Corallo [Thu, 2 Dec 2021 19:43:51 +0000 (19:43 +0000)]
Update PeerTest for new trait-object-return call semantics
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.
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
Matt Corallo [Thu, 2 Dec 2021 17:11:16 +0000 (17:11 +0000)]
Drop unused Vec constructor functions
Matt Corallo [Thu, 2 Dec 2021 15:31:16 +0000 (15:31 +0000)]
Map functions on 3-tuples
Matt Corallo [Mon, 29 Nov 2021 01:05:05 +0000 (01:05 +0000)]
Use new is_ok functions for Result checks in hand-written code
Matt Corallo [Sun, 28 Nov 2021 23:17:59 +0000 (23:17 +0000)]
Update Result mapping to use new `_is_ok` function in the C bindings
Matt Corallo [Tue, 30 Nov 2021 01:38:04 +0000 (01:38 +0000)]
Check array lengths before passing them to C
When users pass a static-length array to C we currently CHECK its
length, asserting only if we are built in debug mode. In
production, we happily call JNI's `GetByteArrayRegion` with the
expected length, ignoring any errors. `GetByteArrayRegion`,
however, "THROWS ArrayIndexOutOfBoundsException: if one of the
indexes in the region is not valid.". While its somewhat unclear
what "THROWS" means in the context of a C API, it seems safe to
assume accessing return values after a "THROWS" condition is
undefined. Thus, we should ensure we check array lengths before
calling into C.
We do this here with a simple wrapper function added to
`org.ldk.util.InternalUtils` which checks an array is the correct
length before returning it.
Matt Corallo [Mon, 29 Nov 2021 01:03:22 +0000 (01:03 +0000)]
CHECK_ACCESS inner pointers using the new __unmangle_inner_ptr meth
Matt Corallo [Sun, 28 Nov 2021 23:17:52 +0000 (23:17 +0000)]
Add Variant-Level docs on complex and unitary enums.
Fixes #60.
Matt Corallo [Thu, 11 Nov 2021 17:43:44 +0000 (17:43 +0000)]
Allow users to specify a `UserConfig` when de-ser'ing a ChanManager
Fixes #55.
Matt Corallo [Thu, 11 Nov 2021 17:34:41 +0000 (17:34 +0000)]
Hold a reference when we pass Option<Trait> to rust
This resolves a NPE when calling trait methods if the user doesn't
hold their own reference to the underlying trait, which is quite
possible for, eg, the `Filter` object.
We also adapt `HumanObjectPeerTest` to test this with a `Filter`.
Matt Corallo [Thu, 11 Nov 2021 17:34:21 +0000 (17:34 +0000)]
Make enum-contains-trait detection more robust
Matt Corallo [Thu, 4 Nov 2021 06:07:54 +0000 (06:07 +0000)]
Merge pull request #54 from TheBlueMatt/main
v0.0.103.0
Matt Corallo [Wed, 3 Nov 2021 20:18:44 +0000 (20:18 +0000)]
Update Github Actions branch reference to 0.0.103
Matt Corallo [Tue, 2 Nov 2021 17:51:11 +0000 (17:51 +0000)]
Add support for InvoicePayer to ChannelManagerConstructor and test
Note that this adds an additional bit of runs in the
HumanObjectPeerTest, bringing leaks for a full run to:
149 allocations remained for
1157302 bytes.
Matt Corallo [Tue, 2 Nov 2021 15:30:34 +0000 (15:30 +0000)]
Update tests for latest upstream API
Leaks in a full test run is now
89 allocations remained for
1138102 bytes.
Matt Corallo [Tue, 2 Nov 2021 20:22:09 +0000 (20:22 +0000)]
Update auto-generated bindings to 0.0.103
Matt Corallo [Tue, 2 Nov 2021 20:15:49 +0000 (20:15 +0000)]
Support passing trait instance references from C to Java without clone or double-free
Matt Corallo [Tue, 2 Nov 2021 20:43:14 +0000 (20:43 +0000)]
Support nullable for opaque objects as well as traits and some arrays
Matt Corallo [Tue, 2 Nov 2021 20:41:50 +0000 (20:41 +0000)]
Treat pointers up to 4096 as null, matching our test values in ldk-c-bindings
Matt Corallo [Wed, 3 Nov 2021 21:10:12 +0000 (21:10 +0000)]
Fix race condition in NioPeerHandler on `socket_disconnected`
Matt Corallo [Tue, 19 Oct 2021 18:28:38 +0000 (18:28 +0000)]
Use gitweb's snapshots to fetch binaries for comparison, not git
Matt Corallo [Tue, 19 Oct 2021 06:29:30 +0000 (06:29 +0000)]
Update auto-generate bindings (incl new RL clone methods)
Matt Corallo [Tue, 19 Oct 2021 06:24:54 +0000 (06:24 +0000)]
Don't allocate a buffer to return a reference to a tuple element
If we're returning a reference to an object because we don't have a
clone function available, we'll set the reference flag implying no
free'ing will occur. In that case, we don't need to allocate a
buffer to copy the object's memory, we might as well just return a
pointer to the original.
After this commit, test leaks are:
73 allocations remained for
1137376 bytes.
Matt Corallo [Tue, 19 Oct 2021 05:48:41 +0000 (05:48 +0000)]
Remove (broken) duplicative tuple constructor
Matt Corallo [Tue, 19 Oct 2021 05:23:04 +0000 (05:23 +0000)]
Add basic use-after-free checking in limited places.
Sadly this appears to have exposed some missing allocation wraps,
which prevents us from applying this in more locations.
Matt Corallo [Tue, 19 Oct 2021 04:03:39 +0000 (04:03 +0000)]
Drop requires_clone ret_conv cloning in complex enums
requires_clone is supposed to be aboug arg_conv, not ret_conv so
its mis-labeled anyway. Somewhat unclear exactly what this was for.
Memory leaks are reduced to:
169 allocations remained for
1141984 bytes.
Matt Corallo [Tue, 19 Oct 2021 01:49:57 +0000 (01:49 +0000)]
Merge pull request #50 from TheBlueMatt/main
v0.0.102.0
Matt Corallo [Mon, 18 Oct 2021 21:40:23 +0000 (21:40 +0000)]
Use lld to link on OSX with LLVM 13
Matt Corallo [Mon, 18 Oct 2021 21:08:44 +0000 (21:08 +0000)]
Update auto-generated bindings to 0.0.102
Matt Corallo [Mon, 18 Oct 2021 21:04:55 +0000 (21:04 +0000)]
Bump OSX clang/LLVM to 13.0.0
Matt Corallo [Mon, 18 Oct 2021 20:56:56 +0000 (20:56 +0000)]
Update CI C-Bindings dependency to 0.0.102
Matt Corallo [Sun, 17 Oct 2021 01:22:34 +0000 (01:22 +0000)]
Update tests to upstream 0.0.102 API
Matt Corallo [Sun, 10 Oct 2021 04:49:45 +0000 (04:49 +0000)]
Merge pull request #49 from TheBlueMatt/main
v0.0.101.3
Matt Corallo [Sun, 10 Oct 2021 02:51:17 +0000 (02:51 +0000)]
Update maven to 3.8.3 (since apparently they yank old binaries?!)
Matt Corallo [Sun, 10 Oct 2021 00:53:57 +0000 (00:53 +0000)]
Update auto-generated bindings
Matt Corallo [Sun, 10 Oct 2021 01:40:35 +0000 (01:40 +0000)]
Update android API version to 24 (Nougat) as we need it for streams
Matt Corallo [Sat, 9 Oct 2021 23:28:00 +0000 (23:28 +0000)]
Correctly handle top-bit-set pointers, fixing Android 11
Matt Corallo [Thu, 7 Oct 2021 02:54:42 +0000 (02:54 +0000)]
Aggressively avoid object creation during message read handling
Matt Corallo [Sun, 3 Oct 2021 21:42:31 +0000 (21:42 +0000)]
[NioPeerHandler] Un-set Read interest when we fail to write fully
...as required by the SocketDescriptor.send_data API docs
Matt Corallo [Tue, 28 Sep 2021 06:53:18 +0000 (06:53 +0000)]
Merge pull request #47 from TheBlueMatt/main
v0.0.101.2
Matt Corallo [Tue, 28 Sep 2021 04:46:02 +0000 (04:46 +0000)]
Ensure listening sockets are closed to work around OSX breaking
Matt Corallo [Tue, 28 Sep 2021 01:29:18 +0000 (01:29 +0000)]
Try new paths for Android NDK library search
I'm not sure where these paths came from to begin with, but [1]
seems to indicate they're wrong, so let's try new ones.
[1] https://developer.android.com/ndk/guides/abis#sa
Matt Corallo [Tue, 28 Sep 2021 01:24:42 +0000 (01:24 +0000)]
Drop accidentally checked-in class file and update .gitignore
Matt Corallo [Tue, 28 Sep 2021 01:23:02 +0000 (01:23 +0000)]
Update auto-generated bindings
Matt Corallo [Tue, 28 Sep 2021 01:19:22 +0000 (01:19 +0000)]
Skip object reference adding when cloning within the FFI on to-Rust object passing
Matt Corallo [Mon, 27 Sep 2021 23:31:55 +0000 (23:31 +0000)]
Correct and use ChannelManagerConstructor in HumanObjectPeerTest
When ChannelManagerConstructor support was added, the test loop
bounds were never updated to actually test it. This corrects that
(and a few regressions that snuck in over time).
Memory leaks during tests are now:
249 allocations remained for
1146062 bytes.
Matt Corallo [Mon, 27 Sep 2021 06:27:06 +0000 (06:27 +0000)]
Merge pull request #46 from TheBlueMatt/main
v0.0.101.1
Matt Corallo [Mon, 27 Sep 2021 00:34:32 +0000 (00:34 +0000)]
Expand HumanObjectPeerTest to cover get_claimable_balances
Memory leaks during tests are unchanged
Matt Corallo [Mon, 27 Sep 2021 00:20:44 +0000 (00:20 +0000)]
Update auto-generated bindings
Memory leaks during tests are now:
193 allocations remained for
1136846 bytes.
Matt Corallo [Mon, 27 Sep 2021 00:10:49 +0000 (00:10 +0000)]
Update batteries to new Tuple-mapping API
Matt Corallo [Mon, 27 Sep 2021 00:10:31 +0000 (00:10 +0000)]
Update tests to new Tuple mapping API
Matt Corallo [Mon, 27 Sep 2021 00:05:18 +0000 (00:05 +0000)]
Redo tuple mapping to be explicit and not generic
This was suggested by Galder as more Java-y, but also fixes
a number of memory leaks by avoiding the complexity of
always holding references and letting the common code do
more work.
Matt Corallo [Sun, 26 Sep 2021 17:12:02 +0000 (17:12 +0000)]
Fix exception catch in native library load failure to catch NPE
Matt Corallo [Sun, 26 Sep 2021 04:55:28 +0000 (04:55 +0000)]
Use current HEAD for version in CI instead of previous commit
Matt Corallo [Sun, 26 Sep 2021 04:53:04 +0000 (04:53 +0000)]
Move version information out of git into new files
Matt Corallo [Sat, 25 Sep 2021 22:48:11 +0000 (22:48 +0000)]
Merge pull request #45 from TheBlueMatt/main
Various fixes + cut 0.0.101
Matt Corallo [Fri, 24 Sep 2021 03:14:18 +0000 (03:14 +0000)]
Update auto-generated bindings to 0.0.101
Matt Corallo [Sat, 25 Sep 2021 05:29:10 +0000 (05:29 +0000)]
Fix CI failures due to faketime breaking PKI time checks
Matt Corallo [Fri, 24 Sep 2021 22:25:28 +0000 (22:25 +0000)]
Update CI branch refernces to 0.0.101
Matt Corallo [Sat, 25 Sep 2021 06:32:07 +0000 (06:32 +0000)]
Specify maven plugin versions to avoid inconsistent jars
Matt Corallo [Fri, 24 Sep 2021 19:02:14 +0000 (19:02 +0000)]
Expand test coverage in HumanObjectPeerTest to hit new API features
Leak count is now:
507 allocations remained for
1163454 bytes.
Matt Corallo [Fri, 24 Sep 2021 17:53:23 +0000 (17:53 +0000)]
Update batteries and tests to latest upstream API
With the upstream v0.0.101, memory leaks during tests are now:
411 allocations remained for
1156930 bytes.
Matt Corallo [Fri, 24 Sep 2021 22:01:34 +0000 (22:01 +0000)]
Drop reallocarray wrapper, enforcing that we don't need it
Matt Corallo [Fri, 24 Sep 2021 21:59:30 +0000 (21:59 +0000)]
Swap java locks to pthread to avoid relying on newer GLIBC versions
Matt Corallo [Fri, 24 Sep 2021 21:41:08 +0000 (21:41 +0000)]
Add a build mode for "release optimizations with leaks checks", handle a jar in CI