]> git.bitcoin.ninja Git - ldk-c-bindings/log
ldk-c-bindings
2 years agoUpdate git commit in Cargo.toml to upstream bindings changes
Matt Corallo [Tue, 30 Nov 2021 15:40:46 +0000 (15:40 +0000)]
Update git commit in Cargo.toml to upstream bindings changes

2 years agoUpdate auto-generated bindings
Matt Corallo [Fri, 19 Nov 2021 20:12:13 +0000 (20:12 +0000)]
Update auto-generated bindings

2 years agoExpose a method to unmangle pointers in test builds
Matt Corallo [Mon, 29 Nov 2021 01:28:30 +0000 (01:28 +0000)]
Expose a method to unmangle pointers in test builds

This is used by Java bindings to compare all pointers against those
returned by its malloc wrap, possibly catching some simple
use-after-free or invalid pointer deref bugs.

It is exposed only when built as debug and defined in C headers
with `LDK_DEBUG_BUILD` defined.

2 years agoSupport `use self::...` statements as they are sometimes use for submodules
Matt Corallo [Wed, 24 Nov 2021 18:07:57 +0000 (18:07 +0000)]
Support `use self::...` statements as they are sometimes use for submodules

2 years agoSupport new c_bindings cfg flag to enable bindings-specific logic
Matt Corallo [Mon, 22 Nov 2021 02:06:37 +0000 (02:06 +0000)]
Support new c_bindings cfg flag to enable bindings-specific logic

2 years agoUpdate C/C++ demos to support new Logger API
Matt Corallo [Sun, 21 Nov 2021 18:46:53 +0000 (18:46 +0000)]
Update C/C++ demos to support new Logger API

2 years agoStop special-casing `Logger`, instead map fmt::Arguments to string
Matt Corallo [Sun, 21 Nov 2021 18:19:14 +0000 (18:19 +0000)]
Stop special-casing `Logger`, instead map fmt::Arguments to string

2 years agoCorrectly print lifetime parameters when printing generic arguments
Matt Corallo [Sun, 21 Nov 2021 18:17:35 +0000 (18:17 +0000)]
Correctly print lifetime parameters when printing generic arguments

2 years agoSupport traits and structs with lifetime bounds (which are ignored)
Matt Corallo [Fri, 29 Oct 2021 18:59:25 +0000 (18:59 +0000)]
Support traits and structs with lifetime bounds (which are ignored)

2 years agoSupport mapping MaybeReadable
Matt Corallo [Fri, 19 Nov 2021 20:04:36 +0000 (20:04 +0000)]
Support mapping MaybeReadable

This fixes https://github.com/lightningdevkit/ldk-garbagecollected/issues/62

2 years agoAdd helper method on results to return `result_ok`
Matt Corallo [Fri, 19 Nov 2021 20:11:56 +0000 (20:11 +0000)]
Add helper method on results to return `result_ok`

This fixes https://github.com/lightningdevkit/ldk-garbagecollected/issues/59

3 years agoMerge pull request #48 from TheBlueMatt/main v0.0.103.0
Matt Corallo [Wed, 3 Nov 2021 21:17:11 +0000 (21:17 +0000)]
Merge pull request #48 from TheBlueMatt/main

0.0.103.0 Updates

3 years agoUpdate upstream git tag
Matt Corallo [Wed, 3 Nov 2021 03:52:52 +0000 (03:52 +0000)]
Update upstream git tag

3 years agoUse a branch for bindings, as rustc prevents us from using main
Matt Corallo [Wed, 3 Nov 2021 03:39:09 +0000 (03:39 +0000)]
Use a branch for bindings, as rustc prevents us from using main

3 years agoUpdate auto-generated bindings
Matt Corallo [Mon, 1 Nov 2021 21:49:12 +0000 (21:49 +0000)]
Update auto-generated bindings

3 years agoUpdate C++ bindings to latest upstream API + test PaymentRetrier
Matt Corallo [Mon, 1 Nov 2021 03:38:31 +0000 (03:38 +0000)]
Update C++ bindings to latest upstream API + test PaymentRetrier

3 years agoAvoid double-`ObjOps::nonnull_ptr_to_inner` on options in some cases
Matt Corallo [Tue, 2 Nov 2021 05:58:14 +0000 (05:58 +0000)]
Avoid double-`ObjOps::nonnull_ptr_to_inner` on options in some cases

3 years agoSeparate logic to print `create_ownable_reference` types
Matt Corallo [Mon, 1 Nov 2021 18:35:30 +0000 (18:35 +0000)]
Separate logic to print `create_ownable_reference` types

These types aren't actually mapped in the same way as all other
types, so we really shouldn't be trying to use the same conversion
logic for both.

3 years agoImplement additional `Into<Str>` auto-conversion
Matt Corallo [Mon, 1 Nov 2021 18:35:43 +0000 (18:35 +0000)]
Implement additional `Into<Str>` auto-conversion

3 years agoTrack generic param count and print types in ptr-conversion
Matt Corallo [Mon, 1 Nov 2021 17:55:20 +0000 (17:55 +0000)]
Track generic param count and print types in ptr-conversion

This will allow rustc to prevent an issue where we accidentally
map `&&Object as *const _` to get a `*const Object`, instead
getting a pointer to a pointer.

3 years agoAdd constructor for tuple types where all contained types are known
Matt Corallo [Mon, 1 Nov 2021 04:33:09 +0000 (04:33 +0000)]
Add constructor for tuple types where all contained types are known

3 years agoCheck if types are understood before we map an impl block for them
Matt Corallo [Sun, 31 Oct 2021 23:32:55 +0000 (23:32 +0000)]
Check if types are understood before we map an impl block for them

3 years agoSupport `use crate::*` statements
Matt Corallo [Sun, 31 Oct 2021 18:13:00 +0000 (18:13 +0000)]
Support `use crate::*` statements

3 years agoMap `PaymentId` to a `[u8; 32]` like other Payemt* IDs.
Matt Corallo [Sun, 31 Oct 2021 18:11:10 +0000 (18:11 +0000)]
Map `PaymentId` to a `[u8; 32]` like other Payemt* IDs.

This should solve https://github.com/lightningdevkit/ldk-garbagecollected/issues/52

3 years agoSupport resolving non-trivial bounds from parent generic contexts
Matt Corallo [Sun, 31 Oct 2021 23:27:11 +0000 (23:27 +0000)]
Support resolving non-trivial bounds from parent generic contexts

3 years agoSupport converting Option<&[]> to C
Matt Corallo [Sun, 31 Oct 2021 23:14:41 +0000 (23:14 +0000)]
Support converting Option<&[]> to C

3 years agoimpl-Trait on in-crate types in a diff mod from the type definition
Matt Corallo [Sun, 31 Oct 2021 18:09:31 +0000 (18:09 +0000)]
impl-Trait on in-crate types in a diff mod from the type definition

3 years agoSupport printing lifetime generics on an impl-Trait block
Matt Corallo [Sun, 31 Oct 2021 18:07:47 +0000 (18:07 +0000)]
Support printing lifetime generics on an impl-Trait block

3 years agoSupport printing impl generics without an immediate bound
Matt Corallo [Sun, 31 Oct 2021 18:06:42 +0000 (18:06 +0000)]
Support printing impl generics without an immediate bound

(e.g. if you have `fn <A> ... where A: Trait` we'd not have printed
`<A>`)

This further supports printing impl generics with a reference to a
struct (not a trait), which we concretize with a regular reference.

3 years agoSwap --pretty=expanded with -Zunpretty=expanded
Matt Corallo [Sun, 31 Oct 2021 04:42:10 +0000 (04:42 +0000)]
Swap --pretty=expanded with -Zunpretty=expanded

Apparently the `--pretty` option was dropped in newer
rustc, see https://github.com/rust-lang/rust/pull/83491

3 years agoMerge pull request #46 from TheBlueMatt/main v0.0.102.0
Matt Corallo [Mon, 18 Oct 2021 20:43:06 +0000 (20:43 +0000)]
Merge pull request #46 from TheBlueMatt/main

0.0.102 Bindings Updates

3 years agoBump upstream git commit to latest
Matt Corallo [Sun, 17 Oct 2021 00:05:09 +0000 (00:05 +0000)]
Bump upstream git commit to latest

3 years agoUpdate auto-generated bindings
Matt Corallo [Sat, 16 Oct 2021 22:22:11 +0000 (22:22 +0000)]
Update auto-generated bindings

3 years agoUpdate C++ demo to latest upstream changes
Matt Corallo [Sat, 16 Oct 2021 22:16:44 +0000 (22:16 +0000)]
Update C++ demo to latest upstream changes

3 years agoHandle bitcoin::Transaction aliases instead of the full path
Matt Corallo [Sat, 16 Oct 2021 22:16:27 +0000 (22:16 +0000)]
Handle bitcoin::Transaction aliases instead of the full path

3 years agoCorrectly convert Option<Generic<Inner>> to C
Matt Corallo [Tue, 12 Oct 2021 02:09:03 +0000 (02:09 +0000)]
Correctly convert Option<Generic<Inner>> to C

3 years agoDrop stale manual path mappings for generic containers
Matt Corallo [Tue, 12 Oct 2021 02:07:34 +0000 (02:07 +0000)]
Drop stale manual path mappings for generic containers

These are all mapped as generic containers now so there's no need
for manual mapping entries.

3 years ago[net] Ensure we don't spin loop by keeping the poll write bit set
Matt Corallo [Sun, 3 Oct 2021 21:41:18 +0000 (21:41 +0000)]
[net] Ensure we don't spin loop by keeping the poll write bit set

Previously we'd not been unsetting POLLOUT, which will result in
us spin-loop'ing with ChannelManager_write_buffer_space_avail.

Further, we'd also not been unsetting the POLLIN bit, which would
result in us never pausing read as the SocketDescriptor API
requires us to.

3 years agoMerge pull request #45 from TheBlueMatt/main
Matt Corallo [Tue, 28 Sep 2021 01:54:37 +0000 (01:54 +0000)]
Merge pull request #45 from TheBlueMatt/main

Correct clone logic for `Str`.

3 years agoUpdate auto-generated bindings to latest upstream
Matt Corallo [Tue, 28 Sep 2021 01:07:41 +0000 (01:07 +0000)]
Update auto-generated bindings to latest upstream

3 years agoUpdate git commit dependency to latest upstream
Matt Corallo [Tue, 28 Sep 2021 01:08:14 +0000 (01:08 +0000)]
Update git commit dependency to latest upstream

3 years agoCorrect clone logic for `Str`. v0.0.101.3
Matt Corallo [Mon, 27 Sep 2021 23:24:43 +0000 (23:24 +0000)]
Correct clone logic for `Str`.

Previously we'd blindly clone'd the fields, which, if
`data_is_owned` is set, will always result in a a double-free.

Instead, we always clone the underlying bytes, setting
`data_is_owned` on the returned value since its likely the caller
wants to hold onto the string outside of the current context.

3 years agoMerge pull request #44 from TheBlueMatt/main v0.0.101.2
Matt Corallo [Sun, 26 Sep 2021 22:54:31 +0000 (22:54 +0000)]
Merge pull request #44 from TheBlueMatt/main

3 years agoDetect a type as clonable with an explicit `impl Clone`
Matt Corallo [Sun, 26 Sep 2021 06:19:07 +0000 (06:19 +0000)]
Detect a type as clonable with an explicit `impl Clone`

These stay `impl Clone` even after the pretty-print rustc pass so
we cannot only match `core::clone::Clone`

3 years agoFix races in demo C++ bindings that can hang valgrind in CI
Matt Corallo [Sat, 25 Sep 2021 21:43:38 +0000 (21:43 +0000)]
Fix races in demo C++ bindings that can hang valgrind in CI

3 years agoCache multi-line sed replacements across methods to improve runtime
Matt Corallo [Sat, 25 Sep 2021 00:38:03 +0000 (00:38 +0000)]
Cache multi-line sed replacements across methods to improve runtime

3 years agoMerge pull request #43 from TheBlueMatt/main v0.0.101.1
Matt Corallo [Fri, 24 Sep 2021 22:56:26 +0000 (22:56 +0000)]
Merge pull request #43 from TheBlueMatt/main

Link libm for debug builds in testing due to new rust libstd dep

3 years agoLink libm for debug builds in testing due to new rust libstd dep
Matt Corallo [Fri, 24 Sep 2021 22:46:35 +0000 (22:46 +0000)]
Link libm for debug builds in testing due to new rust libstd dep

3 years agoMerge pull request #42 from TheBlueMatt/main
Matt Corallo [Fri, 24 Sep 2021 21:25:35 +0000 (21:25 +0000)]
Merge pull request #42 from TheBlueMatt/main

Update to v0.0.101

3 years agoBump lightning dep gitish to v0.0.101
Matt Corallo [Thu, 23 Sep 2021 18:45:18 +0000 (18:45 +0000)]
Bump lightning dep gitish to v0.0.101

3 years agoUpdate C and C++ demos to latest API and test custom messages
Matt Corallo [Thu, 23 Sep 2021 02:57:30 +0000 (02:57 +0000)]
Update C and C++ demos to latest API and test custom messages

3 years agoUpdate auto-generated bindings
Matt Corallo [Mon, 6 Sep 2021 01:13:29 +0000 (01:13 +0000)]
Update auto-generated bindings

3 years agoCall clone explicitly to avoid deref recursion when cloning traits
Matt Corallo [Fri, 24 Sep 2021 18:28:18 +0000 (18:28 +0000)]
Call clone explicitly to avoid deref recursion when cloning traits

3 years agoAdd missing C++ header for LDK::Str
Matt Corallo [Thu, 23 Sep 2021 02:59:04 +0000 (02:59 +0000)]
Add missing C++ header for LDK::Str

3 years agoStop tracking unused syn::Type mappings in GenericResolver
Matt Corallo [Thu, 23 Sep 2021 20:02:20 +0000 (20:02 +0000)]
Stop tracking unused syn::Type mappings in GenericResolver

They are now unused as of the previous commit

3 years agoUse `GenericTypes`'s type resolver instead of re-resolving
Matt Corallo [Wed, 22 Sep 2021 06:04:50 +0000 (06:04 +0000)]
Use `GenericTypes`'s type resolver instead of re-resolving

When we resolve a type with `GenericTypes::maybe_resolve_path` it
returns a resolved-path string as well as a syn::Path. When
resolving we'd previously then re-resolve the Path with the current
type/import information, instead of just accepting what was already
resolved. Simply accepting what was already resolved not only
simplifies a few cases, but also allows us to clean up where the
"crate::" prefix is printed, keeping "crate::" prefixes out of all
type resolution.

3 years agoWork around broken resolution on non-pub use aliasing in another module
Matt Corallo [Wed, 22 Sep 2021 23:14:41 +0000 (23:14 +0000)]
Work around broken resolution on non-pub use aliasing in another module

3 years agoHandle uncallable trait methods that use Infallible in a parameter
Matt Corallo [Thu, 23 Sep 2021 04:17:21 +0000 (04:17 +0000)]
Handle uncallable trait methods that use Infallible in a parameter

3 years agoMap core::convert::Infallible to a similar manually-defined struct
Matt Corallo [Wed, 22 Sep 2021 23:13:34 +0000 (23:13 +0000)]
Map core::convert::Infallible to a similar manually-defined struct

3 years agoSupport std::io::Read natively by mapping it to and u8slice
Matt Corallo [Thu, 23 Sep 2021 17:47:51 +0000 (17:47 +0000)]
Support std::io::Read natively by mapping it to and u8slice

3 years agoSupport converting C `OutPoint`s to `bitcoin` `OutPoint`s
Matt Corallo [Thu, 23 Sep 2021 17:46:30 +0000 (17:46 +0000)]
Support converting C `OutPoint`s to `bitcoin` `OutPoint`s

3 years agoUpdate io::Read manual implementation to upstream API changes
Matt Corallo [Thu, 23 Sep 2021 17:45:51 +0000 (17:45 +0000)]
Update io::Read manual implementation to upstream API changes

3 years agoAvoid mapping optionals as owned pointers
Matt Corallo [Wed, 22 Sep 2021 02:46:10 +0000 (02:46 +0000)]
Avoid mapping optionals as owned pointers

Using an owned pointer to map an optional turned out to be quite
annoying to avoid downstream memory issues. Instead, we use the
much more explicit `COption_TypeZ` enums everywhere.

This also fixes Option-al mapping of enums.

3 years agoHandle `W: X<T = Y>` generics where `Y` is used as `Z<Y>`
Matt Corallo [Wed, 22 Sep 2021 02:45:02 +0000 (02:45 +0000)]
Handle `W: X<T = Y>` generics where `Y` is used as `Z<Y>`

This simply requires calling `resolve_type` in a few more places.

3 years agoCall methods explicitly on traits to avoid to deref recursion
Matt Corallo [Wed, 22 Sep 2021 23:15:20 +0000 (23:15 +0000)]
Call methods explicitly on traits to avoid to deref recursion

3 years agoCorrect printing generic methods in traits
Matt Corallo [Wed, 22 Sep 2021 18:39:46 +0000 (18:39 +0000)]
Correct printing generic methods in traits

If a trait method is generic (and not the object itself), we
previously would print the concrete resolved types in the
`impl nativeTrait for TraitStruct` block instead of the generic
names, leading to compilation failures.

3 years agoLearn supertrait associated types when processing traits
Matt Corallo [Wed, 22 Sep 2021 04:13:16 +0000 (04:13 +0000)]
Learn supertrait associated types when processing traits

3 years agoDefine a macro for constructing a TypeResolver for a given module
Matt Corallo [Thu, 23 Sep 2021 04:16:48 +0000 (04:16 +0000)]
Define a macro for constructing a TypeResolver for a given module

This is used to resolve types referenced in modules other than the
current one.

3 years agoSupport mapping core::fmt::Debug as a supertrait
Matt Corallo [Wed, 22 Sep 2021 02:43:51 +0000 (02:43 +0000)]
Support mapping core::fmt::Debug as a supertrait

3 years agoTest fetching a Vec<Vec<Opaque>> via a generated getter in C++ demo
Matt Corallo [Mon, 6 Sep 2021 01:01:16 +0000 (01:01 +0000)]
Test fetching a Vec<Vec<Opaque>> via a generated getter in C++ demo

3 years agoSupport mapping slices which contain slices which contain opaques
Matt Corallo [Mon, 6 Sep 2021 01:00:23 +0000 (01:00 +0000)]
Support mapping slices which contain slices which contain opaques

Fixes https://github.com/lightningdevkit/ldk-garbagecollected/issues/43

3 years agoMap Vecs to slices when constructing a getter for a public field
Matt Corallo [Mon, 6 Sep 2021 00:53:56 +0000 (00:53 +0000)]
Map Vecs to slices when constructing a getter for a public field

This adds logic to allow constructing a getter for a public Vec
field where the inner items are opaque structs. In order to do this
we map them as slices, which will end up generating Vecs with
elements which all have their `is_owned` flags unset.

3 years agoDrop debug print that slipped in in a previous PR
Matt Corallo [Wed, 22 Sep 2021 06:04:24 +0000 (06:04 +0000)]
Drop debug print that slipped in in a previous PR

3 years agoMerge pull request #40 from TheBlueMatt/main
Matt Corallo [Thu, 19 Aug 2021 18:29:35 +0000 (18:29 +0000)]
Merge pull request #40 from TheBlueMatt/main

Differentiate inner pointers representing None and Some(ZST)

3 years agoUpdate git hash to latest upstream
Matt Corallo [Thu, 19 Aug 2021 00:01:56 +0000 (00:01 +0000)]
Update git hash to latest upstream

3 years agoUpdate auto-generated bindings to latest upstream
Matt Corallo [Thu, 19 Aug 2021 00:01:04 +0000 (00:01 +0000)]
Update auto-generated bindings to latest upstream

3 years agoUpdate auto-generated bindings
Matt Corallo [Wed, 18 Aug 2021 22:53:37 +0000 (22:53 +0000)]
Update auto-generated bindings

3 years agoBuild native debug binaries with --cfg=test_mod_pointers
Matt Corallo [Wed, 18 Aug 2021 21:13:52 +0000 (21:13 +0000)]
Build native debug binaries with --cfg=test_mod_pointers

3 years agoDifferentiate `inner` pointers representing `None` and `Some(ZST)`
Matt Corallo [Wed, 18 Aug 2021 21:51:28 +0000 (21:51 +0000)]
Differentiate `inner` pointers representing `None` and `Some(ZST)`

For zero-sized-types, rust `Box::into_inner(Box::new(ZST {}))`
returns `1usize as *mut ZST`, which confuses our Java bindings
which check for `None` by checking if `inner < 1024`. While we
could convert the Java bindings to check for `inner == 0`, the
magic value for ZST pointers is not, to my knowledge, an ABI
guarantee Rust provides.

Instead, we add an offset to the `inner` pointers to push them
past the zero page for ZSTs, taking this opportunity to clean up
some of our pointer conversion and push them through a common set
of utility functions.

We also add testing infrastructure to add similar offsets to
non-ZSTs to get good test coverage of the offset addition-removal,
though Rust should largely be ignoring pointer values for ZSTs
anyway so there should be little risk in anything going wrong here.

3 years agoMerge pull request #39 from TheBlueMatt/main v0.0.100.0
Matt Corallo [Tue, 17 Aug 2021 21:53:38 +0000 (21:53 +0000)]
Merge pull request #39 from TheBlueMatt/main

Update to 0.0.100

3 years agoUse v0.0.100 for lightning-c-bindings rust-lightning dep
Matt Corallo [Tue, 17 Aug 2021 20:39:29 +0000 (20:39 +0000)]
Use v0.0.100 for lightning-c-bindings rust-lightning dep

3 years agoCommit latest auto-generated C bindings based on 0.0.100
Matt Corallo [Tue, 17 Aug 2021 19:50:20 +0000 (19:50 +0000)]
Commit latest auto-generated C bindings based on 0.0.100

3 years agoAdd support for bitcoin::hash_types references and NonZeroU8
Matt Corallo [Tue, 17 Aug 2021 19:44:02 +0000 (19:44 +0000)]
Add support for bitcoin::hash_types references and NonZeroU8

3 years agoMerge pull request #38 from TheBlueMatt/main
Matt Corallo [Sun, 8 Aug 2021 18:16:10 +0000 (18:16 +0000)]
Merge pull request #38 from TheBlueMatt/main

Provide full (new) struct to trait clone functions

3 years agoUpdate auto-generated bindings
Matt Corallo [Sun, 18 Jul 2021 02:16:31 +0000 (02:16 +0000)]
Update auto-generated bindings

3 years agoUpdate git hash to latest upstream
Matt Corallo [Wed, 28 Jul 2021 03:09:17 +0000 (03:09 +0000)]
Update git hash to latest upstream

3 years agoBump rust-bitcoin dependency to match rust-lightning
Matt Corallo [Sat, 7 Aug 2021 00:57:18 +0000 (00:57 +0000)]
Bump rust-bitcoin dependency to match rust-lightning

3 years agoAdd utility method to construct new complex enums
Matt Corallo [Sat, 7 Aug 2021 19:03:27 +0000 (19:03 +0000)]
Add utility method to construct new complex enums

This is incredibly useful for downstream languages eg Java as it
avoids having to manually implement constructors and can just use
common function-mapping logic.

3 years agoNote which parameters or return values are (secretly) Options
Matt Corallo [Thu, 5 Aug 2021 01:53:48 +0000 (01:53 +0000)]
Note which parameters or return values are (secretly) Options

Because `Option<OpaqueType>` is mapped the same as `OpaqueType` its
not immediately clear which values in the API are actually
`Option<>`al. Thus, we should at least have documentation noting
this.

3 years agoExpose struct method calls on trait structs to C++ directly
Matt Corallo [Wed, 21 Jul 2021 18:51:54 +0000 (18:51 +0000)]
Expose struct method calls on trait structs to C++ directly

We can add method calls for non-trait structs later, but this is
particularly useful as otherwise you need to extract both the
method and the `this_arg` to make the call.

3 years agoUpdate C++ demo and ldk_net to new clone API
Matt Corallo [Sat, 7 Aug 2021 21:08:09 +0000 (21:08 +0000)]
Update C++ demo and ldk_net to new clone API

3 years agoUpdate C++ demo to new upstream changes
Matt Corallo [Sat, 7 Aug 2021 21:07:55 +0000 (21:07 +0000)]
Update C++ demo to new upstream changes

3 years agoProvide full (new) struct to trait clone functions
Matt Corallo [Sun, 18 Jul 2021 02:09:45 +0000 (02:09 +0000)]
Provide full (new) struct to trait clone functions

Previously, when we went to clone a trait-implementation struct,
we'd provide only the `this_arg` void pointer, requiring that the
`this_arg` pointer be cloned into a new object while all remaining
fields are copied over exactly.

This has a few important limitations:
 * When a struct is cloned, it is not possible to set a `free`
   function to free any new data placed in `this_arg` without it
   also being set on the original struct.
 * Supertrait fields cannot be updated in the subtrait clone
   method, including the `this_arg` and `free` methods.

The first limitation prevents us from setting `free` after a clone
when the original trait may or may not have had `free` set. For
example, if the original trait was created with a `Obj_as_Trait`
method, cloned copies would never be free'd.

The second limitation prevents us from keeping the super and
subtrait `this_arg` fields in sync, in addition to limitations
similar to the above.

This resulted in Java code double-free'ing the `this_arg` field in
`InMemorySigner` objects which were accessed as both `Sign` and
`BaseSign` traits.

3 years agoCorrect args passed to supertrait C methods in subtrait impls
Matt Corallo [Sat, 17 Jul 2021 17:39:44 +0000 (17:39 +0000)]
Correct args passed to supertrait C methods in subtrait impls

3 years agoCopy PeerManager pointer in ldk_net
Matt Corallo [Wed, 28 Jul 2021 17:04:34 +0000 (17:04 +0000)]
Copy PeerManager pointer in ldk_net

3 years agoSwap include <> for include "" to make downstream Swift projects happy
Matt Corallo [Wed, 28 Jul 2021 00:45:46 +0000 (00:45 +0000)]
Swap include <> for include "" to make downstream Swift projects happy

3 years agoIf we're leaving binaries around, use -fPIC for ldk_net.o
Matt Corallo [Wed, 28 Jul 2021 00:39:47 +0000 (00:39 +0000)]
If we're leaving binaries around, use -fPIC for ldk_net.o

This is needed if downstream projects want to just take our
ldk_net.o binary and link them in directly, eg with addrsan to
avoid figuring out exact compile flags.

3 years agoFix LLVM version-suffixed binary name checking
Matt Corallo [Tue, 27 Jul 2021 23:47:01 +0000 (23:47 +0000)]
Fix LLVM version-suffixed binary name checking

Most hosts will install clang/LLVM binaries with the -MAJOR_VER
suffix, but we were searching for -MAJOR_VER.MINOR_VER suffix.

3 years agoMerge pull request #36 from TheBlueMatt/main v0.0.99.2
Matt Corallo [Wed, 14 Jul 2021 00:07:11 +0000 (00:07 +0000)]
Merge pull request #36 from TheBlueMatt/main

Fix Determinism with Newer Rustc and support additional targets (for Android)

3 years agoEnable macos-11 in CI
Matt Corallo [Tue, 13 Jul 2021 23:39:32 +0000 (23:39 +0000)]
Enable macos-11 in CI