Matt Corallo [Mon, 19 Sep 2022 15:18:31 +0000 (15:18 +0000)]
Update auto-generated bindings
Matt Corallo [Mon, 19 Sep 2022 10:44:47 +0000 (10:44 +0000)]
Update C++ bindings demo to latest upstream API
Matt Corallo [Fri, 23 Sep 2022 20:47:17 +0000 (20:47 +0000)]
Add Scalar and SharedSecret type mappings for new secp256k1 types
Matt Corallo [Mon, 19 Sep 2022 14:56:41 +0000 (14:56 +0000)]
Update bindings branch to 0.0.111 and update rust-bitcoin and secp
Matt Corallo [Mon, 19 Sep 2022 12:51:02 +0000 (12:51 +0000)]
Allow liftime bounds on generic bounds
While liftime bounds require bindings users to ensure liftime
requirements are met, they're important for allowing us to export
lock wrappers. Thus, we relax the simple-bounds assertions checks
here.
Matt Corallo [Fri, 23 Sep 2022 18:57:13 +0000 (18:57 +0000)]
Don't use a turbofish when all parameters are lifetimes.
For some reason rustc doesn't like this, and its easy, so whatever.
Matt Corallo [Fri, 23 Sep 2022 16:18:55 +0000 (16:18 +0000)]
Use trait, not impl, definition for X_as_Trait functions
When we map a trait impl block, we historically didn't know how to
resolve the types in the trait context, so we just used the impl
context definitions and assumed the types were the same. Sadly, if
we have an associated type that is bounded by a trait, we need to
use the trait bound to figure out what to write for the X_as_Trait
method declarations.
Since we now have the ability to generate full trait-context type
resolvers, we do so here.
Matt Corallo [Mon, 19 Sep 2022 10:16:38 +0000 (10:16 +0000)]
Support mapping `Readable` `impl`s outside of the `lightning` crate
In order to map `Readable` `impl` blocks in crates other than the
`lightning` main crate we simply have to update the type references
to include crate name, which we do here.
Matt Corallo [Fri, 23 Sep 2022 16:12:46 +0000 (16:12 +0000)]
Prefer `Option_` mappings for more types over transparent mappings
In general, the explicit `Option_` mappings are easier for
downstream bindings to match against, and clearer for users anyway.
Sadly, originally we were trying to avoid them where possible, so
some types default to transparent mappings. Here we swap the
default, at least for manually-mapped types, with a few explicit
exceptions (that probably should be changed as well).
Matt Corallo [Thu, 4 Aug 2022 23:37:06 +0000 (23:37 +0000)]
Merge pull request #89 from TheBlueMatt/main
Don't force targeting sandybridge on all platforms
Matt Corallo [Thu, 4 Aug 2022 18:51:08 +0000 (18:51 +0000)]
Don't force targeting sandybridge on all platforms
This should fix building on macOS when using upstream clang.
Matt Corallo [Thu, 4 Aug 2022 03:56:05 +0000 (03:56 +0000)]
Merge pull request #88 from TheBlueMatt/main
Try clone'ing the field before skipping exporting a field getter
Matt Corallo [Wed, 3 Aug 2022 22:35:21 +0000 (22:35 +0000)]
Update auto-generated bindings
Matt Corallo [Wed, 3 Aug 2022 22:29:19 +0000 (22:29 +0000)]
Try clone'ing the field before skipping exporting a field getter
Matt Corallo [Wed, 27 Jul 2022 06:25:06 +0000 (06:25 +0000)]
Merge pull request #87 from TheBlueMatt/main
LDK 0.0.110
Matt Corallo [Wed, 27 Jul 2022 05:02:27 +0000 (05:02 +0000)]
Update auto-generated bindings to LDK 0.0.110
Matt Corallo [Wed, 27 Jul 2022 05:02:54 +0000 (05:02 +0000)]
Update lightning-c-bindings Cargo and CI to reference 0.0.110
Matt Corallo [Wed, 27 Jul 2022 04:50:43 +0000 (04:50 +0000)]
Update C/C++ demos to latest upstream API
Matt Corallo [Fri, 1 Jul 2022 21:41:47 +0000 (14:41 -0700)]
Merge pull request #84 from TheBlueMatt/main
0.0.109 Support
Matt Corallo [Fri, 1 Jul 2022 20:34:28 +0000 (20:34 +0000)]
Update lightning-c-bindings Cargo.toml and CI to 0.0.109
Matt Corallo [Fri, 1 Jul 2022 20:29:21 +0000 (20:29 +0000)]
Update auto-generated C bindings for 0.0.109
Matt Corallo [Fri, 1 Jul 2022 20:28:48 +0000 (20:28 +0000)]
Update demo.cpp to 0.0.109 API
Matt Corallo [Fri, 1 Jul 2022 20:08:13 +0000 (20:08 +0000)]
Support `&[[u8; N]]` passed to Rust.
Matt Corallo [Fri, 1 Jul 2022 18:57:51 +0000 (18:57 +0000)]
Support `Option<Tuple>` with elements in the tuple
Matt Corallo [Wed, 29 Jun 2022 22:03:22 +0000 (15:03 -0700)]
Merge pull request #83 from TheBlueMatt/main
Update `deterministic-build-wrappers` to include a rapid-gossip-sync match
Matt Corallo [Wed, 29 Jun 2022 22:02:16 +0000 (22:02 +0000)]
Update `deterministic-build-wrappers` to include a rapid-gossip-sync match
Matt Corallo [Wed, 29 Jun 2022 18:35:53 +0000 (11:35 -0700)]
Merge pull request #82 from TheBlueMatt/main
0.0.108.1
Matt Corallo [Wed, 29 Jun 2022 17:56:11 +0000 (17:56 +0000)]
Update auto-generated bindings to match latest 0.0.108-bindings
Matt Corallo [Wed, 29 Jun 2022 17:55:27 +0000 (17:55 +0000)]
Update demo.cpp to match updated 0.0.108-bindings API
Matt Corallo [Tue, 28 Jun 2022 21:57:11 +0000 (14:57 -0700)]
Merge pull request #81 from TheBlueMatt/main
0.0.108 Bindings Updates
Matt Corallo [Tue, 28 Jun 2022 00:42:43 +0000 (00:42 +0000)]
Fix cbindgen install to be MSRV-compatible with older hashbrown
Matt Corallo [Thu, 23 Jun 2022 03:13:16 +0000 (03:13 +0000)]
Update auto-generated bindings
Matt Corallo [Thu, 23 Jun 2022 03:02:48 +0000 (03:02 +0000)]
Update C/C++ demos to latest upstream API
Matt Corallo [Thu, 23 Jun 2022 03:13:52 +0000 (03:13 +0000)]
Update lightning-c-bindings Cargo.toml and CI to 0.0.108-bindings
Matt Corallo [Wed, 22 Jun 2022 18:58:18 +0000 (18:58 +0000)]
Add rapid gossip sync crate to generation in `std` mode.
Matt Corallo [Wed, 22 Jun 2022 19:59:45 +0000 (19:59 +0000)]
Add locally defined crates as "dependencies" without `extern crate`
We later use the `dependency` set when doing type resolution to
decide if `::asdf::T` means `current_crate::asdf::T` or `asdf::T`,
which will resolve incorrectly if we don't ensure all possible
crates are in the `dependencies` list.
Matt Corallo [Wed, 22 Jun 2022 03:48:04 +0000 (03:48 +0000)]
Support `Option<Trait>` (and `Option<&Trait>`, implemented the same)
Matt Corallo [Wed, 22 Jun 2022 02:36:09 +0000 (02:36 +0000)]
Use new `Type`-based resolution to decide if a container is transparent
We also assert that we were able to resolve paths inside containers
as we shouldn't be deciding if a container is transparent without
all the context.
Matt Corallo [Sat, 18 Jun 2022 19:39:59 +0000 (19:39 +0000)]
Use new `Type`-based generic resolution in `write_rust_path`
This gives us better generic resolution, but because we determine
whether to include a `crate::` prefix or not based on generic
resolution it means we have to pipe through the "type is a generic that
was resolved" flag from `write_rust_type`. We also take this opporunity
to do better decision making for the `crate::` prefix entirely, which
is important for enums that contain trait instances.
Matt Corallo [Fri, 17 Jun 2022 21:01:14 +0000 (21:01 +0000)]
Pass `with_ref_lifetime` through to rust-type-printing from C-path printing
If we get to `write_c_path_intern` with `c_ty` unset, we delegate to
`write_rust_path`, however it would lose the `with_ref_lifetime`
flag, causing us to miss `'static` when printing references in
generic arguments. Here we simply pipe it through.
Matt Corallo [Fri, 17 Jun 2022 21:00:39 +0000 (21:00 +0000)]
Check whether the fields of an enum are clonable before implementing clone
Matt Corallo [Fri, 17 Jun 2022 21:00:13 +0000 (21:00 +0000)]
Do a second initial-walk pass to apply clonable flags to aliases
This enables the clonable flags for `*Features`.
Matt Corallo [Fri, 24 Jun 2022 01:15:53 +0000 (01:15 +0000)]
Move code to map aliased types into a virtual impl block into a helper
This will allow us to create virtual impl blocks during the early
code passes before we go to do the full conversion pass.
Matt Corallo [Thu, 23 Jun 2022 16:13:06 +0000 (16:13 +0000)]
Generate mutable references in `default_generics` when relevant
As we move towards resolving generics via the new `Type`-based
interface instead of the string-based one, we need to ensure we
retain the mutability flag when resolving references, which we do
here.
Matt Corallo [Thu, 2 Jun 2022 20:40:54 +0000 (20:40 +0000)]
Move overly-specific check to an assertion where its relevant
Matt Corallo [Fri, 24 Jun 2022 01:20:33 +0000 (01:20 +0000)]
Do not make `Deref<T>` generic params always a `&T` for traits.
We never expect traits to be passed by reference, so when using
the new-style generic resolution, we shouldn't force all `Deref`s
to `&T`, at least if the `T` is a trait.
Matt Corallo [Tue, 28 Jun 2022 02:17:18 +0000 (02:17 +0000)]
Print field documentation even for unnamed enum variant fields
Matt Corallo [Tue, 28 Jun 2022 02:14:20 +0000 (02:14 +0000)]
Add a note in output documentation for fields with refs to opaques
Because we (probably shouldn't, but do) map "opaque" structs with
an `is_owned` field instead of having a dedicated reference type,
fields which are a `Deref<Struct>` are simply mapped as
`OpaqueMappedStruct`. This is confusing for downstream `lightning.h`
consumers as they cannot differentiate between a field that expects
to own a `Struct` and one which expects to own a reference to it.
This is worked around here by adding documentation which can be
matched on, though ultimately structs should move towards full
ownership.
Matt Corallo [Fri, 24 Jun 2022 01:19:59 +0000 (01:19 +0000)]
Set `ptr_for_ref` correctly when writing conversions for enum fields
Matt Corallo [Fri, 24 Jun 2022 01:16:46 +0000 (01:16 +0000)]
Correctly set the `ptr_for_ref` arg on `write_c_type` calls in enum printing
This avoids adding references to opaque structs in enum fields,
where we should, of course, map them as owned opaque structs.
It does generate some difficult-to-parse-by-downstream-bindings
code, which is addressed in a later commit by adding documentation.
Note that it also relies on the types being mapped differently
being opaque as it now needs logic to map a reference to a
non-reference with `is_owned` unset.
Matt Corallo [Fri, 24 Jun 2022 01:18:00 +0000 (01:18 +0000)]
Correctly define the `native` type alias for enums with generic params
Matt Corallo [Fri, 24 Jun 2022 01:15:31 +0000 (01:15 +0000)]
Correctly generate `impl` blocks for traits with generics
Matt Corallo [Thu, 2 Jun 2022 20:39:47 +0000 (20:39 +0000)]
Support `T: Deref...where` in underlying structs from type aliases
Matt Corallo [Thu, 23 Jun 2022 16:03:06 +0000 (16:03 +0000)]
Handle trait methods with a default implementation
This does not currently expose the default implementation to users
who wish to avoid manually implementing the method.
Matt Corallo [Mon, 30 May 2022 23:51:54 +0000 (23:51 +0000)]
Include the `where` clause from a "real" type when mapping type aliases
ie if we have a
```
struct A<T: Deref> where T::Target: Trait {}
pub type B<T> = A<T>;
```
this includes the `where` clause so that we end up calling
`writeln_opaque` for `struct B<T: Deref> where T::Target: Trait {}`
instead of `struct B<T: Deref> {}`.
Matt Corallo [Wed, 22 Jun 2022 19:30:05 +0000 (19:30 +0000)]
Add where-clause generic params to `default_generics` map
This moves yet more generic resolution to being able to rely on the
`default_generics` map for full-`Type` resolution rather than
string-based name resolution.
Matt Corallo [Wed, 22 Jun 2022 19:19:54 +0000 (19:19 +0000)]
Make panics in macros more debug-able by giving them a unique print
Matt Corallo [Sat, 28 May 2022 01:06:56 +0000 (01:06 +0000)]
Support `use ...::self` imports
Previously we'd supported `use self:...` but this adds support for
using some path that ends with `self`.
Jeffrey Czyz [Thu, 19 May 2022 15:26:35 +0000 (10:26 -0500)]
Support arrays inside Option types
Previously we'd supported arrays in options only if the real type
was something which we'd aliased to an array, so its not a big
stretch to support Options containing arrays explicitly.
Matt Corallo [Fri, 17 Jun 2022 21:01:46 +0000 (21:01 +0000)]
Add more manually-generated types to the on-startup clonable list
Matt Corallo [Tue, 28 Jun 2022 15:51:47 +0000 (15:51 +0000)]
Update c_types `IOError` type to support `no-std` via `core2`
Jeffrey Czyz [Thu, 19 May 2022 15:22:56 +0000 (10:22 -0500)]
Add C type for bitcoin::util::address::WitnessVersion
Matt Corallo [Mon, 30 May 2022 03:14:43 +0000 (03:14 +0000)]
Update `lightning-c-bindings` to new `bitcoin`/`secp256k1`
including new error types for `secp256k1::Error`
Jeffrey Czyz [Thu, 19 May 2022 14:12:52 +0000 (09:12 -0500)]
Update type mappings for bitcoin 0.28.1
Matt Corallo [Thu, 19 May 2022 16:42:14 +0000 (16:42 +0000)]
Merge pull request #77 from jurvis/main
Use GNU sed if available on macOS
Jurvis Tan [Thu, 19 May 2022 02:48:19 +0000 (19:48 -0700)]
Check if GNU sed is available on macOS
Check if is_gnu_sed is true
Matt Corallo [Mon, 16 May 2022 19:01:51 +0000 (19:01 +0000)]
Merge pull request #75 from TheBlueMatt/main
Fix M1 build
Matt Corallo [Mon, 16 May 2022 18:51:35 +0000 (18:51 +0000)]
Add a warning before we run a ton of sed's
Matt Corallo [Thu, 12 May 2022 20:55:17 +0000 (20:55 +0000)]
Skip building x86_64 release binaries on M1 Macs
Matt Corallo [Thu, 12 May 2022 20:45:48 +0000 (20:45 +0000)]
Explicitly specify a target when calling local clang
This should fix using upstream x86_64 clang on an M1 Mac via Rosetta
Matt Corallo [Thu, 12 May 2022 20:42:23 +0000 (20:42 +0000)]
Don't use -mcpu=native on aarch64-macos
Matt Corallo [Fri, 29 Apr 2022 20:48:24 +0000 (20:48 +0000)]
Merge pull request #74 from TheBlueMatt/main
[ldk-net] Correct pollfds array offset after reads
Matt Corallo [Fri, 29 Apr 2022 19:30:05 +0000 (19:30 +0000)]
[ldk-net] Correct pollfds array offset after reads
Previously, we were copying the pollfds array at an offset of one
into the handler thread's stack. However, when it was changed to
copying at a 0 offset (adding the pipe read fd at the end instead
of beginning), the disable-read handling code was not updated.
This leads to an assertion failure at runtime if LDK decides we
need to stop reading due to the outbound buffer of a peer being
full.
Matt Corallo [Tue, 19 Apr 2022 23:19:47 +0000 (23:19 +0000)]
Merge pull request #73 from TheBlueMatt/main
Handle impl blocks outside of the mod of the being-implemented object
Matt Corallo [Tue, 19 Apr 2022 20:32:07 +0000 (20:32 +0000)]
Drop now-unused code from c-bindings-gen
Matt Corallo [Tue, 19 Apr 2022 20:00:30 +0000 (20:00 +0000)]
Update auto-generated bindings
Matt Corallo [Tue, 19 Apr 2022 19:39:29 +0000 (19:39 +0000)]
Handle impl blocks exist outside of the mod of the being-implemented object
This allows us to implement the feature bit accessor functions.
Matt Corallo [Tue, 19 Apr 2022 19:24:50 +0000 (19:24 +0000)]
Use full paths in impl block handling instead of assuming in-file idents
In the next commit we'll want to handle impl blocks in one module
for an object that is defined in a different model. This violates
several existing assumptions in the impl block handling code,
namely that we're implementing for an object declared in the
current module. This relaxes that assumption in a few places.
Matt Corallo [Mon, 18 Apr 2022 12:53:05 +0000 (12:53 +0000)]
Merge pull request #71 from TheBlueMatt/main
Make `Str`'s `clone` always clone the underlying bytes
Matt Corallo [Mon, 18 Apr 2022 02:56:05 +0000 (02:56 +0000)]
Make `Str`'s `clone` always clone the underlying bytes
Its incredibly unexpected that you can clone a higher-level object
(eg an Event with a ClosureReason that contains an `Str`) and have
a pointer back to the original object. To avoid this, `clone` needs
to actually `clone`.
Matt Corallo [Wed, 13 Apr 2022 20:51:24 +0000 (20:51 +0000)]
Merge pull request #70 from TheBlueMatt/main
Expose consistent free+clone methods for `Bech32Error`
Matt Corallo [Wed, 13 Apr 2022 17:33:38 +0000 (17:33 +0000)]
Update auto-generated bindings
Matt Corallo [Wed, 13 Apr 2022 17:30:40 +0000 (17:30 +0000)]
Expose consistent free+clone methods for `Bech32Error`
Matt Corallo [Mon, 4 Apr 2022 21:33:49 +0000 (21:33 +0000)]
Merge pull request #69 from TheBlueMatt/main
Matt Corallo [Mon, 4 Apr 2022 18:07:45 +0000 (18:07 +0000)]
Update auto-generated bindings with FromStr errors
Matt Corallo [Mon, 4 Apr 2022 18:04:40 +0000 (18:04 +0000)]
Send peers the remote address we have for them in ldk-net
The majority of this commit was authored by
Jeffrey Czyz <jkczyz@gmail.com>
Matt Corallo [Mon, 4 Apr 2022 16:25:33 +0000 (16:25 +0000)]
Use `_none()` constructor instead of setting tag in C++ demo
Matt Corallo [Mon, 4 Apr 2022 01:54:46 +0000 (01:54 +0000)]
Expose error types when implementing FromStr
Fixes #64.
Matt Corallo [Mon, 4 Apr 2022 01:53:24 +0000 (01:53 +0000)]
Add additional error type conversion logic
Matt Corallo [Mon, 4 Apr 2022 16:20:18 +0000 (16:20 +0000)]
Merge pull request #68 from jkczyz/2022-03-ldk-0-0-106
Update to 0.0.106
Jeffrey Czyz [Sun, 3 Apr 2022 23:41:01 +0000 (18:41 -0500)]
Update bindings workflow in CI to 0.0.106
Jeffrey Czyz [Sun, 3 Apr 2022 23:38:22 +0000 (18:38 -0500)]
Update auto-generated bindings to 0.0.106
Jeffrey Czyz [Sun, 3 Apr 2022 23:27:00 +0000 (18:27 -0500)]
Add a .gitignore for output of genbindings.sh
Jeffrey Czyz [Fri, 1 Apr 2022 23:22:31 +0000 (18:22 -0500)]
Update ldk_net.c for 0.0.106
Jeffrey Czyz [Fri, 1 Apr 2022 22:40:06 +0000 (17:40 -0500)]
Update demo.cpp for 0.0.106
Matt Corallo [Wed, 30 Mar 2022 17:16:02 +0000 (17:16 +0000)]
Merge pull request #67 from TheBlueMatt/main
Redo tuple-reference mapping and prep for 106
Matt Corallo [Tue, 29 Mar 2022 22:37:38 +0000 (22:37 +0000)]
Update auto-generated bindings
Matt Corallo [Tue, 29 Mar 2022 22:33:27 +0000 (22:33 +0000)]
Crack `ReadableArgs` params when they're tuples
This replaces the special handling we'd had in 0.0.105.2 for
tuples-containing-references by instead just cracking open the
tuples and converting each field individually when calling
`ReadableArgs` where the argument is a tuple.
Matt Corallo [Tue, 29 Mar 2022 21:02:05 +0000 (21:02 +0000)]
Revert "Consider all reference types clonable (because they are)"
This reverts commit
291aea2200e01843623a67d42112500b1810d276.
Matt Corallo [Tue, 29 Mar 2022 21:01:57 +0000 (21:01 +0000)]
Revert "Manually handle generated types containing references to opaques"
This reverts commit
3798e35c9b8f23fa1500b8bc9867fef319287133.