George Thomas
8d4f9c7ca0
Minor refactor to avoid long line
2026-04-15 01:40:47 +01:00
George Thomas
ccdf4a9bce
Combine overrides
2026-04-15 01:40:47 +01:00
George Thomas
e0adce3802
Inline project Nix file
2026-04-15 01:40:47 +01:00
George Thomas
18a8b04537
Remove unused binding
2026-04-15 01:40:47 +01:00
George Thomas
f7d5a8df0a
Simplify build script
...
Seeing as we now no longer need to modify generated header files.
2026-04-15 01:40:47 +01:00
George Thomas
b6a3b56f7f
Bump hs-bindgen to avoid header patching hack
2026-04-15 01:40:47 +01:00
George Thomas
fd8baf949f
stuff from Yuri
2026-04-15 01:40:40 +01:00
George Thomas
c228354a13
Use nix-haskell and provide source-repository-packages to Cabal in shell
2026-03-24 16:01:44 +00:00
George Thomas
52f0a49d87
Fix build script to work correctly on clean checkout
2026-03-24 15:29:36 +00:00
George Thomas
df1f73eb8a
Script the full build
2026-03-24 11:24:40 +00:00
George Thomas
6bb06b117f
Symlink static lib instead of copying
...
This means we need to run the script much less often.
2026-03-24 11:24:40 +00:00
George Thomas
649c1b466f
Revert "Ditch Bash script for custom setup"
...
This reverts commit 1f1c0d959da699ce04f7951ecbcdb7976c8c0750.
This doesn't work well with multi-component builds. For example, it requires `"haskell.sessionLoading": "singleComponent"` in VSCode, which makes HLS work less reliably.
2026-03-24 11:24:40 +00:00
George Thomas
b79a4c0804
Ditch Bash script for custom setup
2026-03-24 11:24:40 +00:00
George Thomas
b68d6257d3
Move bindings generation to Rust build script
2026-03-24 11:24:40 +00:00
George Thomas
b94e8ef11b
Make staged imports consistent
2026-03-24 11:24:40 +00:00
George Thomas
4ecd0b16e2
Drop build hooks in favour of just using bundled libraries properly
...
The script addition is a bit hacky, but there's no obvious straightforward arch/version-independent way to get most of the build path. And eventually, once issues with HLS etc. are sorted out we will revert to using Cabal hooks anyway.
2026-03-23 23:06:29 +00:00
George Thomas
ddb9c300cf
Switch to Hooks API instead of using cabal configure hack for lib/include dirs
2026-03-23 22:57:34 +00:00
George Thomas
718554cb2e
Bump hs-bindgen for record-dot support
2026-03-19 11:34:50 +00:00
George Thomas
a018cc389a
Generate header in Rust build output directory
2026-02-20 09:53:12 +00:00
George Thomas
96ec5c1cb1
Switch to Template Haskell mode for hs-bindgen
2026-02-20 09:08:16 +00:00
George Thomas
20b47594c6
Avoid IO for tree sum
2026-02-19 21:35:35 +00:00
George Thomas
71e4ffaede
Make Rust tree type polymorphic
2026-02-19 21:28:00 +00:00
George Thomas
58005ee261
Refactor to use continuation monad
2026-02-19 21:18:37 +00:00
George Thomas
ca063b1dd6
Rename tree types
2026-02-19 21:11:58 +00:00
George Thomas
261acca8a4
Define nicer Rust tree type and coerce
2026-02-19 21:11:23 +00:00
George Thomas
55a781eeb8
Add tree example
2026-02-19 20:44:04 +00:00
George Thomas
06767e17ea
Add newline for consistency
2026-02-19 19:37:46 +00:00
George Thomas
2a80e5b219
Minor simplification
2026-02-19 17:22:15 +00:00
George Thomas
e977181252
Avoid typedefs
...
This makes the header simpler, and silences `hs-bindgen` notices about "squashed" typedefs.
2026-02-19 17:22:15 +00:00
George Thomas
9ca4f615d8
Use simpler tagged union translation
...
Avoids the worst part of the header hack, and makes Haskell wrapper simpler.
2026-02-19 17:22:15 +00:00
George Thomas
5019af701f
Mark pure function
2026-02-19 17:22:15 +00:00
George Thomas
5907a064a7
Use fixed-width integers
...
Even though `Int` and `isize` should be the same in practice, we can't cleanly convert, as the type information isn't quite there. And anyway, strictly speaking per the report, `Int` is only guaranteed to hold 30 bits.
Note that this is essentially unchanged even if we specify `usize_is_size_t = true` for `cbindgen`.
2026-02-19 17:19:28 +00:00
George Thomas
024b6aec87
Implement function with return value
2026-02-19 16:29:52 +00:00
George Thomas
40bb939302
Stick to Rust debug builds in shell to avoid C lib dir confusion
2026-02-19 16:29:52 +00:00
George Thomas
ddc8b9097d
Avoid absolute path hack
2026-02-19 16:29:52 +00:00
George Thomas
25875c7dc1
Move Haskell package to top level
2026-02-19 16:29:52 +00:00
George Thomas
2bab0ff94e
Rename Haskell.nix flake input
2026-02-19 16:29:52 +00:00
George Thomas
7d90990b74
Bump flake inputs
2026-02-19 16:29:52 +00:00
George Thomas
56370bb8a4
Reformat
2026-02-19 16:29:52 +00:00
George Thomas
b9e2e59174
Refactor Nix flake inputs
2026-02-19 16:29:52 +00:00
George Thomas
97a4f1c359
Disable dead code warning for whole Rust file
2026-02-19 16:29:52 +00:00
George Thomas
d8c12b5418
Call struct function with different arguments
2026-02-19 16:29:52 +00:00
George Thomas
0e54cccd74
Create manual high level wrapper
2026-02-19 16:29:52 +00:00
George Thomas
f1ec06fcca
Add Bash script dependencies to Nix shell
2026-02-19 16:29:52 +00:00
George Thomas
13b9324bc4
Simplify use sites by passing by value
2026-02-19 16:29:52 +00:00
George Thomas
5f1e49c4ce
Use ByteString
2026-02-19 16:29:52 +00:00
George Thomas
7e09c1d681
Add more complex data types
2026-02-19 16:29:52 +00:00
George Thomas
0a1911862f
Expose explicit C interface
...
We drop the tools specifically designed for Haskell and Rust together, in favour of general tools for using each with C.
Namely, we use Mozilla's `cbindgen` for generating header files from the Rust source, and Well-Typed's new `hs-bindgen` tool for generating Haskell from those header files.
The Rust code here is essentially the result of expanding the old macro, then inlining and renaming internals.
The most important thing here is that we're now relying solely on robust well-maintained tools.
2026-02-19 16:29:41 +00:00
George Thomas
60f5f23b2d
Move Haskell executable in to subdirectory
2026-02-19 13:57:14 +00:00
George Thomas
400960b0be
Remove empty other-modules
2026-02-19 13:57:14 +00:00