]> git.bitcoin.ninja Git - ldk-java/log
ldk-java
3 years agoUse a full Sign wrapper again in HumanObjectPeerTest
Matt Corallo [Sun, 18 Jul 2021 02:25:28 +0000 (02:25 +0000)]
Use a full Sign wrapper again in HumanObjectPeerTest

With the new upstream clone API and this, memory leaks during tests are
now:
  418 allocations remained for 1160528 bytes.

3 years agoExpose supertrait implemetations to the Java API
Matt Corallo [Sun, 18 Jul 2021 02:24:52 +0000 (02:24 +0000)]
Expose supertrait implemetations to the Java API

3 years agoSupport new cloned upstream API instead of clone
Matt Corallo [Sun, 18 Jul 2021 02:24:07 +0000 (02:24 +0000)]
Support new cloned upstream API instead of clone

3 years agoFree constructed LDK strings when relevant.
Matt Corallo [Sun, 18 Jul 2021 02:24:24 +0000 (02:24 +0000)]
Free constructed LDK strings when relevant.

With LDK C Bindings v0.0.99.2, this reduces memory leaks during tests from:
  538 allocations remained for 1188720 bytes.
to
  358 allocations remained for 1141342 bytes.

3 years agoDeliver messages in PeerTest more robustly
Matt Corallo [Sun, 18 Jul 2021 02:48:47 +0000 (02:48 +0000)]
Deliver messages in PeerTest more robustly

3 years agoMerge pull request #31 from TheBlueMatt/main
Matt Corallo [Wed, 14 Jul 2021 03:24:57 +0000 (03:24 +0000)]
Merge pull request #31 from TheBlueMatt/main

Build deterministic Android AARs, Test built OSX bins

3 years agoUpdate auto-generated bindings to 0.0.99.1
Matt Corallo [Sun, 11 Jul 2021 19:30:18 +0000 (19:30 +0000)]
Update auto-generated bindings to 0.0.99.1

3 years agoAdd script to build deterministic android aar v0.0.99.1
Matt Corallo [Wed, 14 Jul 2021 00:54:10 +0000 (00:54 +0000)]
Add script to build deterministic android aar

3 years agoEnable macos-11 in CI
Matt Corallo [Wed, 14 Jul 2021 00:02:33 +0000 (00:02 +0000)]
Enable macos-11 in CI

3 years agoDon't explicitly override __cxa_thread_atexit_impl, rely on LLVM to optimize it out
Matt Corallo [Tue, 13 Jul 2021 21:00:31 +0000 (21:00 +0000)]
Don't explicitly override __cxa_thread_atexit_impl, rely on LLVM to optimize it out

3 years agoMerge pull request #29 from TheBlueMatt/main
Matt Corallo [Sat, 10 Jul 2021 02:19:04 +0000 (02:19 +0000)]
Merge pull request #29 from TheBlueMatt/main

Update to LDK 0.0.99

3 years agoUpdate auto-generated bindings to LDK v0.0.99
Matt Corallo [Sat, 10 Jul 2021 00:17:29 +0000 (00:17 +0000)]
Update auto-generated bindings to LDK v0.0.99

3 years agoDrop disconnect_socket blocking in NioPeerHandler for 0.0.99 v0.0.99.0
Matt Corallo [Fri, 9 Jul 2021 16:24:34 +0000 (16:24 +0000)]
Drop disconnect_socket blocking in NioPeerHandler for 0.0.99

0.0.99 no longer requires that we block disconnect_socket and
simplifes our side of the SocketDescriptor interface substantially,
which we implement here.

3 years agoMerge pull request #28 from TheBlueMatt/main
Matt Corallo [Thu, 1 Jul 2021 22:41:22 +0000 (22:41 +0000)]
Merge pull request #28 from TheBlueMatt/main

Provide Better Diagnostics when a Java method called from Rust panics

3 years agoUpdate auto-generated bindings with new error messages and version
Matt Corallo [Thu, 1 Jul 2021 21:25:04 +0000 (21:25 +0000)]
Update auto-generated bindings with new error messages and version

3 years agoTest that channel_manager_bytes is not null when persisting v0.0.98.5
Matt Corallo [Thu, 1 Jul 2021 21:16:08 +0000 (21:16 +0000)]
Test that channel_manager_bytes is not null when persisting

We had an apparently-spurious report that this was the case, though
it doesn't seem to be.

3 years agoSpecify the method which threw an exception when aborting
Matt Corallo [Thu, 1 Jul 2021 21:15:07 +0000 (21:15 +0000)]
Specify the method which threw an exception when aborting

3 years agoMerge pull request #25 from TheBlueMatt/main
Matt Corallo [Thu, 24 Jun 2021 23:23:31 +0000 (23:23 +0000)]
Merge pull request #25 from TheBlueMatt/main

Fix glibc compat tweaks, make jars deterministic

3 years agoBump auto-generated bindings version to 0.0.98.4
Matt Corallo [Wed, 23 Jun 2021 14:58:49 +0000 (14:58 +0000)]
Bump auto-generated bindings version to 0.0.98.4

3 years agoDrop binaries from the repo, they are now at https://git.bitcoin.ninja/index.cgi...
Matt Corallo [Wed, 23 Jun 2021 14:47:18 +0000 (14:47 +0000)]
Drop binaries from the repo, they are now at https://git.bitcoin.ninja/index.cgi?p=ldk-java-bins;a=summary

3 years agoRedo the glibc compatibility issues workaround, see comment for details
Matt Corallo [Thu, 24 Jun 2021 06:16:02 +0000 (06:16 +0000)]
Redo the glibc compatibility issues workaround, see comment for details

3 years agoDeterministically build the jars and check in CI, from a new repo
Matt Corallo [Wed, 23 Jun 2021 14:42:00 +0000 (14:42 +0000)]
Deterministically build the jars and check in CI, from a new repo

3 years agoAdd a utility script to make release jars deterministic
Matt Corallo [Thu, 24 Jun 2021 22:52:18 +0000 (22:52 +0000)]
Add a utility script to make release jars deterministic

3 years agoSet a library suffix for all platforms, useful for android builds
Matt Corallo [Wed, 23 Jun 2021 14:41:29 +0000 (14:41 +0000)]
Set a library suffix for all platforms, useful for android builds

3 years agoMerge pull request #24 from TheBlueMatt/main
Matt Corallo [Wed, 23 Jun 2021 00:42:04 +0000 (00:42 +0000)]
Merge pull request #24 from TheBlueMatt/main

Support glibc 2.17 and make exception failures explicit

3 years agoUpdate auto-generated bindings
Matt Corallo [Wed, 23 Jun 2021 00:19:33 +0000 (00:19 +0000)]
Update auto-generated bindings

3 years agoHandle Java exceptions thrown in calls from C, printing and aborting v0.0.98.3
Matt Corallo [Tue, 22 Jun 2021 21:55:12 +0000 (21:55 +0000)]
Handle Java exceptions thrown in calls from C, printing and aborting

Closes #23.

3 years agoSupport glibc versions prior to 2.18 for linux builds
Matt Corallo [Tue, 22 Jun 2021 21:47:35 +0000 (21:47 +0000)]
Support glibc versions prior to 2.18 for linux builds

3 years agoMerge pull request #22 from TheBlueMatt/main
Matt Corallo [Wed, 16 Jun 2021 19:26:37 +0000 (19:26 +0000)]
Merge pull request #22 from TheBlueMatt/main

Support building on OSX

3 years agoRe-generate auto-generated bindings + add Mac OS generated bindings
Matt Corallo [Tue, 15 Jun 2021 23:18:12 +0000 (23:18 +0000)]
Re-generate auto-generated bindings + add Mac OS generated bindings

3 years agoDrop the liblightningjni link, creating it in CI instead v0.0.98.2
Matt Corallo [Tue, 15 Jun 2021 23:17:53 +0000 (23:17 +0000)]
Drop the liblightningjni link, creating it in CI instead

3 years agoAdd a CI run on OSX
Matt Corallo [Tue, 15 Jun 2021 19:55:19 +0000 (19:55 +0000)]
Add a CI run on OSX

3 years agoBuild a test jar which we can run to test the built jar is runnable
Matt Corallo [Tue, 15 Jun 2021 22:02:19 +0000 (22:02 +0000)]
Build a test jar which we can run to test the built jar is runnable

3 years agoInclude native libraries in jar by shifting folder structure
Matt Corallo [Tue, 15 Jun 2021 21:07:25 +0000 (21:07 +0000)]
Include native libraries in jar by shifting folder structure

3 years agoDrop most instances of Thread.sleep in HumanObjectPeerTest
Matt Corallo [Wed, 16 Jun 2021 01:57:45 +0000 (01:57 +0000)]
Drop most instances of Thread.sleep in HumanObjectPeerTest

3 years agoDo not rely on assertions being enabled in ChannelManagerConstructor
Matt Corallo [Wed, 16 Jun 2021 00:14:30 +0000 (00:14 +0000)]
Do not rely on assertions being enabled in ChannelManagerConstructor

3 years agoUpdate README with notes about OSX addrsan
Matt [Mon, 14 Jun 2021 22:30:43 +0000 (18:30 -0400)]
Update README with notes about OSX addrsan

3 years agoAdjust compile flags for OSX, set trace on genbindings.sh
Matt Corallo [Mon, 14 Jun 2021 21:12:54 +0000 (21:12 +0000)]
Adjust compile flags for OSX, set trace on genbindings.sh

3 years agoSkip manual leak checking on OSX as -Wl,-wrap is too complicated
Matt Corallo [Mon, 14 Jun 2021 21:09:55 +0000 (21:09 +0000)]
Skip manual leak checking on OSX as -Wl,-wrap is too complicated

3 years agoSupport OSX (ie builds where int64_t is not an alias for jlong)
Matt Corallo [Mon, 14 Jun 2021 19:51:41 +0000 (19:51 +0000)]
Support OSX (ie builds where int64_t is not an alias for jlong)

3 years agoDrop _test_only_get_ptr as it is no longer used
Matt Corallo [Sat, 12 Jun 2021 21:47:48 +0000 (21:47 +0000)]
Drop _test_only_get_ptr as it is no longer used

3 years agoMerge pull request #21 from TheBlueMatt/main
Matt Corallo [Sat, 12 Jun 2021 18:16:00 +0000 (18:16 +0000)]
Merge pull request #21 from TheBlueMatt/main

Android Fixes

3 years agoUpdate auto-generated bindings with new release tag
Matt Corallo [Sat, 12 Jun 2021 17:03:04 +0000 (17:03 +0000)]
Update auto-generated bindings with new release tag

3 years agoAvoid use of covariant return type change fns fixing backwards compat v0.0.98.1
Matt Corallo [Sat, 12 Jun 2021 16:51:02 +0000 (16:51 +0000)]
Avoid use of covariant return type change fns fixing backwards compat

See, eg, https://jira.mongodb.org/browse/JAVA-2559. This results
in errors like the following:

```
2021-06-12 17:15:58.893 13340-13412/com.example.rnldk E/AndroidRuntime: FATAL EXCEPTION: NioPeerHandler NIO Thread
    Process: com.example.rnldk, PID: 13340
    java.lang.NoSuchMethodError: No virtual method clear()Ljava/nio/ByteBuffer; in class Ljava/nio/ByteBuffer; or its super classes (declaration of 'java.nio.ByteBuffer' appears in /system/framework/core-oj.jar)
        at org.ldk.batteries.NioPeerHandler.lambda$new$0$NioPeerHandler(NioPeerHandler.java:185)
        at org.ldk.batteries.-$$Lambda$NioPeerHandler$f9v_DKRzmlYYXidLTlb3OtA-tVY.run(Unknown Source:2)
        at java.lang.Thread.run(Thread.java:764)
```

3 years agoDo not cast JavaEnv to void** for AttachCurrentThread on Android
Matt Corallo [Sat, 12 Jun 2021 16:50:21 +0000 (16:50 +0000)]
Do not cast JavaEnv to void** for AttachCurrentThread on Android

3 years agoBetter support alternative targets in genbindings.sh
Matt Corallo [Sat, 12 Jun 2021 16:50:05 +0000 (16:50 +0000)]
Better support alternative targets in genbindings.sh

3 years agoMerge pull request #20 from TheBlueMatt/main v0.0.98
Matt Corallo [Fri, 11 Jun 2021 22:00:57 +0000 (22:00 +0000)]
Merge pull request #20 from TheBlueMatt/main

Update auto-generated bindings with missed files and v0.0.98 tags

3 years agoUpdate auto-generated bindings with missed files and v0.0.98 tags
Matt Corallo [Fri, 11 Jun 2021 21:20:59 +0000 (21:20 +0000)]
Update auto-generated bindings with missed files and v0.0.98 tags

3 years agoMerge pull request #18 from TheBlueMatt/main
Matt Corallo [Fri, 11 Jun 2021 21:08:33 +0000 (21:08 +0000)]
Merge pull request #18 from TheBlueMatt/main

Update to latest upstream C bindings with Invoice support

3 years agoUpdate auto-generated bindings
Matt Corallo [Mon, 7 Jun 2021 21:08:21 +0000 (21:08 +0000)]
Update auto-generated bindings

3 years agoForce CPU target to Sandy Bridge when compiling
Matt Corallo [Wed, 9 Jun 2021 01:48:07 +0000 (01:48 +0000)]
Force CPU target to Sandy Bridge when compiling

See the similar commit on ldk-c-bindings for more info.

3 years agoUse newly-exposed get_route in HumanObjectPeerTest
Matt Corallo [Mon, 7 Jun 2021 21:16:17 +0000 (21:16 +0000)]
Use newly-exposed get_route in HumanObjectPeerTest

3 years agoUpdate CI to not require git tags checked in and fix WASM32 paths.
Matt Corallo [Sun, 2 May 2021 22:34:52 +0000 (22:34 +0000)]
Update CI to not require git tags checked in and fix WASM32 paths.

3 years agoAvoid git version always appearing as dirty
Matt Corallo [Mon, 7 Jun 2021 20:38:52 +0000 (20:38 +0000)]
Avoid git version always appearing as dirty

3 years agoUpdate tests and Constructor to new APIs
Matt Corallo [Mon, 7 Jun 2021 03:19:07 +0000 (03:19 +0000)]
Update tests and Constructor to new APIs

3 years agoExpand the list of things exposed via UtilMethods
Matt Corallo [Mon, 7 Jun 2021 03:17:12 +0000 (03:17 +0000)]
Expand the list of things exposed via UtilMethods

3 years agoDrop the "LDK" prefix from unitary enums
Matt Corallo [Mon, 7 Jun 2021 03:16:53 +0000 (03:16 +0000)]
Drop the "LDK" prefix from unitary enums

3 years agoExpand and update ChannelManagerConstructor+tests for BP and Event API
Matt Corallo [Sat, 5 Jun 2021 17:06:31 +0000 (17:06 +0000)]
Expand and update ChannelManagerConstructor+tests for BP and Event API

3 years agoHandle methods taking non-ref self by using standard conversion
Matt Corallo [Sat, 5 Jun 2021 16:49:20 +0000 (16:49 +0000)]
Handle methods taking non-ref self by using standard conversion

3 years agoHandle C -> Java calls from Rust-spawned threads
Matt Corallo [Wed, 2 Jun 2021 19:26:42 +0000 (19:26 +0000)]
Handle C -> Java calls from Rust-spawned threads

Turns out you need to "attach" threads to the JVM before you can
make Java calls.

3 years agoRedo constructor function names to feel more natural in Java
Matt Corallo [Fri, 14 May 2021 15:57:13 +0000 (15:57 +0000)]
Redo constructor function names to feel more natural in Java

3 years agoSlightly reduce race conditions in NioPeerHandler
Matt Corallo [Mon, 3 May 2021 01:04:49 +0000 (01:04 +0000)]
Slightly reduce race conditions in NioPeerHandler

Sadly there's some restructuring that needs to happen to PeerHandler
before all possible race conditions go away.

3 years agoUpdate test ChannelManagerConstructor and invoice parsing as well
Matt Corallo [Sun, 2 May 2021 03:47:16 +0000 (03:47 +0000)]
Update test ChannelManagerConstructor and invoice parsing as well

3 years agoUse uint64_t instead of long for pointers represented in C
Matt Corallo [Sun, 2 May 2021 03:31:31 +0000 (03:31 +0000)]
Use uint64_t instead of long for pointers represented in C

While long is generally correct, the conversion of pointers to
long, then int64_t (passed to Java), then back to pointers
results in poor sign-extension, giving us invalid pointers.
Instead, convert to uint64_t everywhere and things work.

3 years agoExpose bindings versions and print on startup in debug mode
Matt Corallo [Sun, 2 May 2021 18:08:40 +0000 (11:08 -0700)]
Expose bindings versions and print on startup in debug mode

Also updates to latest upstream ldk-c-bindings include structure.

Co-Authored-By: Arik Sosman <git@arik.io>
3 years agoSupport debug builds on Android by calling native log and not using BT
Matt Corallo [Sun, 2 May 2021 03:33:21 +0000 (03:33 +0000)]
Support debug builds on Android by calling native log and not using BT

3 years agoHandle LDKStr in other structs and fix string conversion overread
Matt Corallo [Sat, 1 May 2021 00:01:33 +0000 (00:01 +0000)]
Handle LDKStr in other structs and fix string conversion overread

3 years agoHandle empty variant structs and enums in variants
Matt Corallo [Fri, 30 Apr 2021 21:50:03 +0000 (21:50 +0000)]
Handle empty variant structs and enums in variants

3 years agoUpdate HumanObjectPeerTest to print invoice in string form
Matt Corallo [Fri, 30 Apr 2021 04:36:49 +0000 (04:36 +0000)]
Update HumanObjectPeerTest to print invoice in string form

3 years agoUpdate tests for new upstream API and using invoicse
Matt Corallo [Fri, 30 Apr 2021 02:03:50 +0000 (02:03 +0000)]
Update tests for new upstream API and using invoicse

3 years agoUse explicit return type var names instead of guessing
Matt Corallo [Fri, 30 Apr 2021 02:03:14 +0000 (02:03 +0000)]
Use explicit return type var names instead of guessing

3 years agoMap more methods that go in UtilMethods
Matt Corallo [Thu, 29 Apr 2021 18:29:34 +0000 (18:29 +0000)]
Map more methods that go in UtilMethods

3 years agoDon't FREE things when we holds_ref if we're not calling *_free
Matt Corallo [Thu, 29 Apr 2021 18:28:36 +0000 (18:28 +0000)]
Don't FREE things when we holds_ref if we're not calling *_free

After this we still only have minor leaks across 128 runs of
HumanObjectPeerTest:
   314 allocations remained for 1126840 bytes.

3 years agoHandle u5, LDKTwentyBytes, and LDKRecoverableSignature
Matt Corallo [Thu, 29 Apr 2021 16:39:03 +0000 (16:39 +0000)]
Handle u5, LDKTwentyBytes, and LDKRecoverableSignature

3 years agoFix genbindings.sh sed call on OSX
Matt Corallo [Thu, 22 Apr 2021 17:27:25 +0000 (17:27 +0000)]
Fix genbindings.sh sed call on OSX

3 years agoHandle calls which take strings as an argument in Java
Matt Corallo [Thu, 22 Apr 2021 16:29:50 +0000 (16:29 +0000)]
Handle calls which take strings as an argument in Java

3 years agoMerge pull request #17 from TheBlueMatt/main
Matt Corallo [Thu, 22 Apr 2021 15:28:24 +0000 (15:28 +0000)]
Merge pull request #17 from TheBlueMatt/main

Update to latest upstream

3 years agoFix CI
Matt Corallo [Fri, 16 Apr 2021 02:39:52 +0000 (02:39 +0000)]
Fix CI

3 years agoUpdate tests for latest upstream API, sadly disabling the Sign wrapper test
Matt Corallo [Fri, 16 Apr 2021 00:38:28 +0000 (00:38 +0000)]
Update tests for latest upstream API, sadly disabling the Sign wrapper test

3 years agoTest new block connection API and update tests to new API
Matt Corallo [Sun, 21 Mar 2021 16:23:21 +0000 (12:23 -0400)]
Test new block connection API and update tests to new API

3 years agoUpdate auto-generated bindings
Matt Corallo [Wed, 31 Mar 2021 19:56:19 +0000 (15:56 -0400)]
Update auto-generated bindings

3 years agoHandle supertraits with constructor arguments
Matt Corallo [Thu, 15 Apr 2021 23:56:19 +0000 (23:56 +0000)]
Handle supertraits with constructor arguments

3 years agoHandle the somewhat half-mapped alias TransactionOutputs
Matt Corallo [Thu, 15 Apr 2021 23:00:35 +0000 (19:00 -0400)]
Handle the somewhat half-mapped alias TransactionOutputs

TransactionOutputs is actually a
C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ, but with a type alias that
gives it a more readable name in a few places. Sadly, we don't
support type aliases, so we have to just map it back before building
our bindings.

3 years agoTreat Txid as an alias for LDKThirtyTwoBytes
Matt Corallo [Tue, 23 Mar 2021 00:48:41 +0000 (20:48 -0400)]
Treat Txid as an alias for LDKThirtyTwoBytes

3 years agoMerge pull request #16 from TheBlueMatt/2021-03-background-manager-persister
Matt Corallo [Wed, 31 Mar 2021 20:11:43 +0000 (20:11 +0000)]
Merge pull request #16 from TheBlueMatt/2021-03-background-manager-persister

Adapt ChannelManagerConstructor to persist ChannelManager + handle events

3 years agoAdapt CI to new ldk-c-bindings genbindings.sh arguments 2021-03-background-manager-persister
Matt Corallo [Wed, 31 Mar 2021 19:52:07 +0000 (15:52 -0400)]
Adapt CI to new ldk-c-bindings genbindings.sh arguments

3 years agoUpdate auto-generated bindings
Matt Corallo [Wed, 31 Mar 2021 19:39:27 +0000 (15:39 -0400)]
Update auto-generated bindings

3 years agoSkip ChannelManagerConstructor in HumanObjectPeerTest
Matt Corallo [Wed, 31 Mar 2021 19:37:29 +0000 (15:37 -0400)]
Skip ChannelManagerConstructor in HumanObjectPeerTest

We should add a new, more generic, test later which uses it again.

3 years agoAdapt ChannelManagerConstructor to persist ChannelManager + handle events
Matt Corallo [Wed, 31 Mar 2021 19:28:23 +0000 (15:28 -0400)]
Adapt ChannelManagerConstructor to persist ChannelManager + handle events

3 years agoMerge pull request #15 from TheBlueMatt/2021-03-fix-clone
Matt Corallo [Tue, 30 Mar 2021 20:04:12 +0000 (20:04 +0000)]
Merge pull request #15 from TheBlueMatt/2021-03-fix-clone

Fix clone-required detection and handling for complex enums in vecs

3 years agoUpdate autogenerated bindings with correct FREE/clone semantics 2021-03-fix-clone
Matt Corallo [Tue, 30 Mar 2021 18:50:07 +0000 (14:50 -0400)]
Update autogenerated bindings with correct FREE/clone semantics

3 years agoFix maven import of jetbrains annotations
Matt Corallo [Tue, 30 Mar 2021 18:26:05 +0000 (14:26 -0400)]
Fix maven import of jetbrains annotations

3 years agoTest spending SpendableOutputs event contents
Matt Corallo [Tue, 30 Mar 2021 18:16:44 +0000 (14:16 -0400)]
Test spending SpendableOutputs event contents

3 years agoFix clone-required detection and handling for complex enums in vecs
Matt Corallo [Tue, 30 Mar 2021 18:15:09 +0000 (14:15 -0400)]
Fix clone-required detection and handling for complex enums in vecs

3 years agoMerge pull request #14 from TheBlueMatt/2021-03-fix-enums
Matt Corallo [Tue, 30 Mar 2021 20:02:37 +0000 (20:02 +0000)]
Merge pull request #14 from TheBlueMatt/2021-03-fix-enums

Handle tuple variants in complex enums

3 years agoUpdate tests to new enum API 2021-03-fix-enums
Matt Corallo [Tue, 30 Mar 2021 01:55:40 +0000 (21:55 -0400)]
Update tests to new enum API

3 years agoUpdate auto-generated bindings
Matt Corallo [Tue, 30 Mar 2021 01:58:56 +0000 (21:58 -0400)]
Update auto-generated bindings

3 years agoCleanup map lookup checks a bit
Matt Corallo [Tue, 30 Mar 2021 20:01:13 +0000 (16:01 -0400)]
Cleanup map lookup checks a bit

3 years agoHandle tuple variants in complex enums
Matt Corallo [Tue, 30 Mar 2021 01:53:28 +0000 (21:53 -0400)]
Handle tuple variants in complex enums

3 years agoMap result functions and rely on Rust constructors instead of news
Matt Corallo [Mon, 29 Mar 2021 21:13:48 +0000 (17:13 -0400)]
Map result functions and rely on Rust constructors instead of news