Matt Corallo [Fri, 10 Nov 2023 02:07:56 +0000 (02:07 +0000)]
Merge pull request #115 from TheBlueMatt/main
Fix race in peer connection in C++ demo app
Matt Corallo [Thu, 9 Nov 2023 22:10:17 +0000 (22:10 +0000)]
Add simple wrapper to call clang with a windows target
This enables building for Windows with the existing
LDK_C_BINDINGS_EXTRA_TARGETS and LDK_C_BINDINGS_EXTRA_TARGETS_CCS
environment variables.
Matt Corallo [Sun, 29 Oct 2023 18:40:47 +0000 (18:40 +0000)]
Fix race in peer connection in C++ demo app
When we disconnect then immediately reconnect from one peer we may
still get the second connection through before the disconnection is
handled on the other end, causing connection failures. We fix this
here by disconnecting on both ends before reconnecting.
Matt Corallo [Fri, 27 Oct 2023 15:49:07 +0000 (15:49 +0000)]
Merge pull request #114 from TheBlueMatt/main
0.0.118
Matt Corallo [Tue, 24 Oct 2023 00:48:49 +0000 (00:48 +0000)]
Update Cargo.toml and CI references to LDK 0.0.118
Matt Corallo [Mon, 23 Oct 2023 23:37:30 +0000 (23:37 +0000)]
Update C/C++ demo to LDK 0.0.118 API
Matt Corallo [Tue, 24 Oct 2023 00:48:26 +0000 (00:48 +0000)]
Update auto-generated bindings to LDK 0.0.118
Matt Corallo [Mon, 23 Oct 2023 23:45:03 +0000 (23:45 +0000)]
Support trait impls on enums
Previously we'd only generate correct code for trait impls on
structs, but there's no reason for that restriction. Here we also
implement it on enums.
Matt Corallo [Mon, 23 Oct 2023 23:36:44 +0000 (23:36 +0000)]
Correct manual conversion for `ChainHash`
Matt Corallo [Mon, 16 Oct 2023 01:35:28 +0000 (01:35 +0000)]
Drop `#[no_mangle]` from `*_write_void` to make cbindgen not export
cbindgen recently switched to exporting all `#[no_mangle]` and
`extern "C"` functions. Our `*_write_void` methods are
internal-only but we'd marked them `#[no_mangle]`, which resulted
in them spuriously appearing in `lightning.h`.
Matt Corallo [Mon, 9 Oct 2023 16:43:17 +0000 (16:43 +0000)]
Merge pull request #113 from TheBlueMatt/main
Update args on supertraits of supertraits when cloning trait impls
Matt Corallo [Sun, 8 Oct 2023 06:07:21 +0000 (06:07 +0000)]
Update auto-generated bindings
Matt Corallo [Sun, 8 Oct 2023 05:53:25 +0000 (05:53 +0000)]
Update args on supertraits of supertraits when cloning trait impls
When cloning implementations of traits from in-crate structs, we
forgot to update the arguments for supertraits of supertraits,
causing methods on that trait to be called against the previous
struct, not the cloned one.
This was ultimately identified downstream in the Java bindings,
fixes https://github.com/lightningdevkit/ldk-garbagecollected/issues/138
Matt Corallo [Sun, 8 Oct 2023 05:52:44 +0000 (05:52 +0000)]
Drop unused parameter from `get_module_type_resolver`
Matt Corallo [Fri, 6 Oct 2023 03:35:55 +0000 (03:35 +0000)]
Merge pull request #112 from TheBlueMatt/main
Upgrade to 0.0.117
Matt Corallo [Thu, 5 Oct 2023 01:22:09 +0000 (01:22 +0000)]
Avoid dependencies of build-deps on MacOS by pinning cc
Sadly we have to hack around cargo to make this work with
`-Zbuild-std`.
Matt Corallo [Wed, 4 Oct 2023 20:57:16 +0000 (20:57 +0000)]
Pin memchr so that no-std builds work
Matt Corallo [Wed, 4 Oct 2023 00:34:55 +0000 (00:34 +0000)]
Update CI and Cargo.toml references to 0.0.117-bindings
Matt Corallo [Thu, 28 Sep 2023 03:21:08 +0000 (03:21 +0000)]
Update auto-generated bindings
Matt Corallo [Sun, 1 Oct 2023 23:05:26 +0000 (23:05 +0000)]
Include argument info docs on all-pub struct constructors
Fixes https://github.com/lightningdevkit/ldk-garbagecollected/issues/129
Matt Corallo [Thu, 28 Sep 2023 01:19:46 +0000 (01:19 +0000)]
Update C/C++ demo bindings and ldk-net to LDK 0.0.117
Matt Corallo [Thu, 28 Sep 2023 00:38:27 +0000 (00:38 +0000)]
Update hardcoded and manually-defined types for LDK 0.0.117
Matt Corallo [Tue, 3 Oct 2023 05:59:41 +0000 (05:59 +0000)]
Drop `#[no_mangle]`/`extern` flag for internal-only method
This prevents new `cbindgen` from generating bindings for things we
don't actually want to export.
Matt Corallo [Thu, 28 Sep 2023 02:29:48 +0000 (02:29 +0000)]
Drop `empty_val_check_suffix_from_path` for Signature as its unused
Matt Corallo [Thu, 28 Sep 2023 02:33:58 +0000 (02:33 +0000)]
Handle type references which refer to a module defined in scope
eg
```
mod module;
fn a() -> module::Type { todo!() }
```
Matt Corallo [Thu, 28 Sep 2023 01:16:56 +0000 (01:16 +0000)]
Print fewer types in call generics, leaning on rustc to pick types
Picking types is hard, its easier to make rustc do it.
Matt Corallo [Thu, 28 Sep 2023 01:14:41 +0000 (01:14 +0000)]
Use the resolved type name in generic strings, not the original
This makes some generics less readable, but some more, and reduces
generic type pollution. Some cases are a loss, eg
`Option_PaymentHashZ` gets converted to `Option_ThirtyTwoBytesZ`
(which less less readable but fewer total types as a result), but
we ultimately need this because we now have `schnorr::Signature`
and `ecdsa::Signature` so we can't rely on just using `Signature`
and having it be unique :(.
Matt Corallo [Thu, 28 Sep 2023 00:36:43 +0000 (00:36 +0000)]
Handle `Deref<Self::Type>` bounds as `Self::Type`'s trait bound
Matt Corallo [Thu, 28 Sep 2023 00:32:55 +0000 (00:32 +0000)]
Accept `DerefMut` bounds on generics as if they were `Deref`
Matt Corallo [Tue, 26 Sep 2023 00:37:11 +0000 (00:37 +0000)]
Support `f64` as a primitive type
Matt Corallo [Tue, 26 Sep 2023 00:35:50 +0000 (00:35 +0000)]
impl `DerefMut` for all traits
This is sometimes required in LDK now, and there's no real reason
not to implement it.
Matt Corallo [Tue, 26 Sep 2023 00:35:27 +0000 (00:35 +0000)]
Allow `Sized` bounds
There was no reason to only allow `Sized`, rustc will let us know
if something is wrong.
Matt Corallo [Tue, 26 Sep 2023 00:33:39 +0000 (00:33 +0000)]
Include `String` in the default import, since we use it now
Matt Corallo [Mon, 31 Jul 2023 15:36:08 +0000 (15:36 +0000)]
Merge pull request #110 from TheBlueMatt/main
LDK 0.0.116
Matt Corallo [Fri, 28 Jul 2023 23:27:07 +0000 (23:27 +0000)]
Update auto-generated bindings to LDK 0.0.116
Matt Corallo [Sat, 22 Jul 2023 18:20:36 +0000 (18:20 +0000)]
Update lightning-c-bindings Cargo.toml & CI to point to 0.0.116
Matt Corallo [Sat, 22 Jul 2023 18:19:39 +0000 (18:19 +0000)]
Update C/C++ demo apps for new upstream API
Matt Corallo [Sat, 22 Jul 2023 18:19:08 +0000 (18:19 +0000)]
Update hard-coded types and add some new manual bitcoin types
Matt Corallo [Sun, 30 Jul 2023 03:36:56 +0000 (03:36 +0000)]
Include a `struct` before trait return fields
EIther `struct Type` or `Type` work fine because of our type
declarations, but cbindgen uses `struct Type` everywhere so its
easiest if we match it, especially for downstream code.
Matt Corallo [Sat, 22 Jul 2023 20:03:11 +0000 (20:03 +0000)]
Allow generation of manual types in reference options
The limiting of supported types in `write_template_generics` isn't
super useful as its only called once per type - later uses of the
same type with the reference flag set or wiped doesn't change
anything. Still, it is relied on somewhat, so we can't drop it
entirely.
Now that we've moved more of the `[u8; 32]` newtypes to option
wrappers, failing for non-primitive references spuriously breaks.
Instead, we just allow it for manually-mapped types and let the
compiler complain if we do something invalid.
Matt Corallo [Thu, 20 Jul 2023 22:51:01 +0000 (22:51 +0000)]
Handle all traits in type resolution, including no-export ones
In the previous commit, we set up handling of no-export traits with
only a single implementor. In order to utilize that, we need such
traits to participate in type resolution, which we add support for
here.
Matt Corallo [Mon, 17 Jul 2023 02:16:01 +0000 (02:16 +0000)]
Handle no-export traits which are only implemented once as the implementor
If we have a trait marked no-export, and there's a single
implementor, we can just pretend its always the implementor. This
makes sense in LDK, for example, for the `APeerManager` trait,
which is implemented for all `PeerManager`s, but doesn't make sense
in bindings.
Matt Corallo [Sat, 22 Jul 2023 17:38:46 +0000 (17:38 +0000)]
Support Unit struct types
Matt Corallo [Mon, 17 Jul 2023 02:14:12 +0000 (02:14 +0000)]
Allow `?Sized` bounds in some cases
Matt Corallo [Mon, 17 Jul 2023 01:59:11 +0000 (01:59 +0000)]
Drop special handling for more Option types and all-0 array handling
Matt Corallo [Mon, 17 Jul 2023 02:19:46 +0000 (02:19 +0000)]
Correct `use` resolution for submodule use statements
Otherwise we fail to resolve a `use` that starts with a submodule
of the current module.
Matt Corallo [Mon, 17 Jul 2023 01:58:00 +0000 (01:58 +0000)]
Drop `#[must_use]` that rustc complains is ignored
Matt Corallo [Fri, 28 Jul 2023 23:00:25 +0000 (23:00 +0000)]
Merge pull request #111 from TheBlueMatt/2023-07-0.0.115-aliasing-fix
[0.0.115] Fix strict-aliasing violation on traits holding inner fields
Matt Corallo [Fri, 28 Jul 2023 18:07:20 +0000 (18:07 +0000)]
Update auto-generated bindings with aliasing fix.
Matt Corallo [Tue, 25 Jul 2023 17:15:17 +0000 (17:15 +0000)]
Pin quote and proc-macro2 in CI to meet MSRV
Matt Corallo [Thu, 27 Jul 2023 20:00:25 +0000 (20:00 +0000)]
Fix strict-aliasing violation on traits holding inner fields
When we map a trait method which returns a reference to a struct,
we map it by storing said struct in the trait implementation
struct. Then, we create a setter method which ensures the new field
is set. Sadly, because the original Rust trait method may take a
non-mutable reference to self, we have to update the field without
a mutable reference to the trait implementation struct.
Previously we did this by simply unsafe-casting a pointer to
mutable, which violates the aliasing rules in Rust. In a recent
rustc (at least on macOS), this broke.
Here, we convert the stored struct to wrap it in an `UnsafeCell`,
which fixes the issue.
Matt Corallo [Sat, 3 Jun 2023 21:15:16 +0000 (21:15 +0000)]
Merge pull request #108 from TheBlueMatt/main
Skip address sanitizer builds on OSX
Matt Corallo [Sat, 3 Jun 2023 17:50:02 +0000 (17:50 +0000)]
Skip address sanitizer builds on OSX
...cause it appears broken on newer macOS and I'm skeptical its
detecting real leaks.
Matt Corallo [Sat, 3 Jun 2023 02:04:53 +0000 (02:04 +0000)]
Merge pull request #107 from TheBlueMatt/main
Support Building OSX binaries on Linux
Matt Corallo [Sat, 3 Jun 2023 02:04:12 +0000 (02:04 +0000)]
Update the set of OSX runners since github removed 10.15
Matt Corallo [Fri, 2 Jun 2023 19:32:42 +0000 (19:32 +0000)]
Build OSX releases on Linux if `MACOS_SDK` is set
Matt Corallo [Fri, 2 Jun 2023 18:35:45 +0000 (18:35 +0000)]
Make `clang-lto-link-osx` work on Linux (by forcing bash)
Matt Corallo [Wed, 31 May 2023 22:54:10 +0000 (22:54 +0000)]
Merge pull request #106 from TheBlueMatt/main
Make `BitEndianScalar` clonable
Matt Corallo [Wed, 31 May 2023 20:40:00 +0000 (20:40 +0000)]
Update auto-generated bindings
Matt Corallo [Thu, 27 Apr 2023 05:38:33 +0000 (05:38 +0000)]
Make `BitEndianScalar` clonable
Matt Corallo [Wed, 31 May 2023 20:27:17 +0000 (20:27 +0000)]
Merge pull request #105 from arik-so/2023-05-115-debugging
Add debugging lines to demo.cpp
Arik Sosman [Tue, 23 May 2023 02:52:31 +0000 (19:52 -0700)]
Add debugging lines to demo.cpp
Matt Corallo [Wed, 26 Apr 2023 20:26:20 +0000 (20:26 +0000)]
Merge pull request #103 from TheBlueMatt/main
Update to LDK 0.0.115
Matt Corallo [Wed, 26 Apr 2023 01:08:26 +0000 (01:08 +0000)]
Update CI+Cargo.toml bindings branch to 0.0.115
Matt Corallo [Wed, 26 Apr 2023 01:03:19 +0000 (01:03 +0000)]
Update auto-generated bindings for LDK 0.0.115
Matt Corallo [Tue, 25 Apr 2023 22:17:42 +0000 (22:17 +0000)]
Update C++ demo application to LDK 0.0.115
Matt Corallo [Tue, 25 Apr 2023 22:13:38 +0000 (22:13 +0000)]
Ensure an option always unwraps to a non-reference type
Matt Corallo [Tue, 25 Apr 2023 20:21:03 +0000 (20:21 +0000)]
Handle Option<Vec<_>> with a much cleaner option converter
Matt Corallo [Tue, 25 Apr 2023 20:20:13 +0000 (20:20 +0000)]
Handle use of `#[doc]` in the original source
Matt Corallo [Tue, 25 Apr 2023 17:14:37 +0000 (17:14 +0000)]
Replace type resolution assertions with failures
Type resolution now supports failing, but some assertions are still
left over from when it didn't. Replace some of those which now fail
on LDK 0.0.115.
Matt Corallo [Mon, 17 Apr 2023 17:43:13 +0000 (17:43 +0000)]
Update hard-coded type definitions
Matt Corallo [Mon, 17 Apr 2023 17:42:40 +0000 (17:42 +0000)]
Fix documentation on generated _hash methods for std::hash::Hash
Matt Corallo [Mon, 17 Apr 2023 15:50:18 +0000 (15:50 +0000)]
Support the new no-exported tag that is more human readable
Matt Corallo [Thu, 9 Mar 2023 19:50:04 +0000 (19:50 +0000)]
Merge pull request #102 from TheBlueMatt/main
Fix C++ demo bindings build due to function signature mismatch
Matt Corallo [Thu, 9 Mar 2023 19:49:19 +0000 (19:49 +0000)]
Fix C++ demo bindings build due to function signature mismatch
Matt Corallo [Thu, 9 Mar 2023 19:40:54 +0000 (19:40 +0000)]
Merge pull request #101 from TheBlueMatt/main
Update to use `find_route_with_id` to match upstream changes
Matt Corallo [Thu, 9 Mar 2023 19:35:49 +0000 (19:35 +0000)]
Update to use `find_route_with_id` to match upstream changes
Matt Corallo [Tue, 7 Mar 2023 17:16:45 +0000 (17:16 +0000)]
Merge pull request #100 from TheBlueMatt/main
LDK 0.0.114
Matt Corallo [Mon, 6 Mar 2023 20:50:13 +0000 (20:50 +0000)]
Workaround github actions brokenness
Matt Corallo [Mon, 6 Mar 2023 04:11:24 +0000 (04:11 +0000)]
Update `rust-lightning` branch to 0.0.114-bindings
Matt Corallo [Wed, 1 Mar 2023 05:53:56 +0000 (05:53 +0000)]
Update auto-generated bindings
Matt Corallo [Tue, 28 Feb 2023 06:58:25 +0000 (06:58 +0000)]
Note that cross-language LTO requires lld in addition to clang
Matt Corallo [Wed, 1 Mar 2023 00:13:01 +0000 (00:13 +0000)]
Print something for custom messages in C++ demo
Matt Corallo [Tue, 28 Feb 2023 06:54:29 +0000 (06:54 +0000)]
Fix connection race in C++ demo
Matt Corallo [Tue, 28 Feb 2023 02:31:15 +0000 (02:31 +0000)]
Update C/C++ Demos to latest upstream API
Matt Corallo [Fri, 3 Mar 2023 02:04:32 +0000 (02:04 +0000)]
Add `lightning-background-processor`'s new std feature
Matt Corallo [Mon, 27 Feb 2023 21:45:53 +0000 (21:45 +0000)]
Support new rust-bitcoin type mappings for various hashes
Matt Corallo [Mon, 27 Feb 2023 21:45:29 +0000 (21:45 +0000)]
Ignore discriminants on enum variants
While this loses the value information, its better than failing to
generate bindings at all.
Matt Corallo [Tue, 28 Feb 2023 23:31:11 +0000 (23:31 +0000)]
Support tuples containing array elements
Matt Corallo [Tue, 28 Feb 2023 23:25:38 +0000 (23:25 +0000)]
Add type for 8 u16s (which is used for the scoring data)
Matt Corallo [Tue, 28 Feb 2023 23:25:26 +0000 (23:25 +0000)]
Support non-u8 (primitive) arrays
Matt Corallo [Mon, 27 Feb 2023 21:25:27 +0000 (21:25 +0000)]
Support supertraits-of-supertraits
If we have a supertrait that requires an in-crate supertrait, we
handle that here by writing the required impls. We don't support
a supertrait-of-a-supertrait-of-a-supertrait.
Matt Corallo [Mon, 27 Feb 2023 21:45:14 +0000 (21:45 +0000)]
Fix typo in path resolution leading to a "crate name" of a full path
Matt Corallo [Mon, 27 Feb 2023 18:51:59 +0000 (18:51 +0000)]
Support passing `Option<&OpaqueStruct>` to C
Luckily the solution is trivial - just treat the conversion for the
inner pointer as `ptr_for_ref`, because we ultimately want a
pointer on the inside, not on the outside.
Matt Corallo [Fri, 13 Jan 2023 06:12:12 +0000 (06:12 +0000)]
Merge pull request #98 from TheBlueMatt/main
Fix OSX building by not redirecting to `/dev/null`
Matt Corallo [Fri, 13 Jan 2023 06:09:30 +0000 (06:09 +0000)]
Fix OSX building by not redirecting to `/dev/null`
Somehow this results in a broken pipe error...cause macOS is trash.
Matt Corallo [Fri, 13 Jan 2023 04:12:57 +0000 (04:12 +0000)]
Merge pull request #97 from TheBlueMatt/main
Fix LTO compilation with latest ld.lld on OSX
Matt Corallo [Fri, 13 Jan 2023 03:34:59 +0000 (03:34 +0000)]
Stop timing C++ demo bindings run cause OSX is, as usual, garbage
Matt Corallo [Thu, 12 Jan 2023 23:28:27 +0000 (23:28 +0000)]
Update CI references to OSX clang 15.0.3
Matt Corallo [Thu, 12 Jan 2023 23:27:19 +0000 (23:27 +0000)]
Fix LTO compilation with latest ld.lld on OSX