What's Changed
- (
c2rust-analyze
) Relax the transmutable checks from two-way to one-way, now allowing for arrays and slices to decay by @kkysen in #841 - c2rust-analyze: initial implementation of error recovery by @spernsteiner in #876
- analyze: preserve refs by @spernsteiner in #923
- (
c2rust-analyze/tests
) Specify--edition 2021
for the tests, fixing issues with imports andcore
(#912) by @kkysen in #935 - analyze: fix panic on
addr_of!(...) as ...
by @spernsteiner in #945 - analyze: add function attrs for testing by @spernsteiner in #942
- analyze: add support for some unsupported casts by @spernsteiner in #929
- (
c2rust-analyze
) Support ptr-to-ptr casts between safely transmutable types, for now limited to same-sized integers by @kkysen in #839 - analyze: refactor
rewrite::apply
by @spernsteiner in #937 - analyze: new implementation of MIR-to-HIR rewrite lifting by @spernsteiner in #934
- analyze: generate casts around call arguments and results by @spernsteiner in #936
- (
c2rust-analyze/tests
) Enable transpiled string literals in tests by @kkysen in #955 - Add hypothetical lifetime to structure rewrites with empty generic type parameter lists by @aneksteind in #956
- rewrite: add #[derive(Clone)] test case by @aneksteind in #958
- Update
README.md
to addcompile_commands.json
setup formeson
by @orowith2os in #954 - Fix the permissions of some scripts by @mjgarton in #962
- Do not rewrite ADTs mentioned in extern blocks by @aneksteind in #960
- Improve Fedora detection by @mjgarton in #963
- mark extern block function signatures as FIXED by @aneksteind in #966
- [c2rust-analyze] Run analysis on pdg input by @fw-immunant in #894
- analyze: account for
Span
s indexing into aggregated sources, not individual files by @fw-immunant in #967 - add test case showing #905 is resolved by @aneksteind in #970
- analyze: README: fix invocation by @fw-immunant in #972
- analyze: generate shims for calls from non-rewritten to rewritten code by @spernsteiner in #939
- add support for emitting casts to and from *mut T and Cell by @aneksteind in #968
- analyze: recover from failures in shim generation by @spernsteiner in #979
- fix mismatch in number of origin parameters for cast result by @aneksteind in #976
- (
c2rust-analyze
) Addknown_fns!
for declaring the permissions on ptrs in known (i.e.libc
)UnknownDef
fn
s by @kkysen in #978 - (
c2rust-analyze
) Allow calls toUnknownDef
KnownFn
s with known ptr perms by @kkysen in #980 - (
c2rust-analyze
) RemoveUNIQUE
from initial ptr perms before asserting it's empty by @kkysen in #981 - instrument: README: fix invocation by @fw-immunant in #973
- (
c2rust-analyze/tests
) Add a genericextern "rust-intrinsic" foreign
fn` test (currently disabled as we crash on it) by @kkysen in #1001 - provide statics with hypothetical origins by @aneksteind in #975
- fix subset relation comment between fn argument nested lifetimes by @aneksteind in #1003
- analyze: don't add fields to adt_metadata_table by @spernsteiner in #1004
- (
c2rust-analyze
) Add almost alllibc
KnownFn
s used inlighttpd_rust_amalgamated
by @kkysen in #998 - analyze: refactor struct and static rewrites by @spernsteiner in #1005
- analyze: add extern statics to gacx.static_tys by @spernsteiner in #1008
- Add hypothetical lifetime parameters and arguments to function signatures by @aneksteind in #1000
- replace allow_unused with leading underscore for TyGenericParams by @aneksteind in #1011
- add test for unions by @aneksteind in #1012
- analyze: add DefId filter by @spernsteiner in #1014
- analyze: omit unused hypothetical lifetimes during rewriting by @spernsteiner in #1015
- handle
deconstruct_hir_ty
for function pointers by @aneksteind in #1019 - Test.lighttpd.md5 by @aneksteind in #1020
- analyze: fix deconstruct_hir_ty adt/path case by @spernsteiner in #1023
- Support intermediate casts in calls. by @aneksteind in #1022
- analyze: assign fresh PointerIds to Ref and AddressOf rvalues by @spernsteiner in #1028
- analyze: add pointee_type analysis by @spernsteiner in #1029
- dataflow: avoid propagating offset permissions upward from field access by @aneksteind in #1031
- build(deps): bump rustix from 0.37.19 to 0.37.25 by @dependabot in #1032
- fix typos by @not-my-profile in #1016
c2rust-analyze
: Move all ofmain.rs
toanalyze.rs
except forfn main
by @kkysen in #1035c2rust-analyze
: Add acargo
wrapper by @kkysen in #1036- Support llvm 17.0.0 by @thedataking in #1041
- analyze: memcpy/memset, void* rewrites, and other fixes for algo_md5 by @spernsteiner in #1043
- LLVM17: Fix preprocessor expression in AstExporter.cpp by @thedataking in #1044
c2rust transpile
: When castingbool
s to floats, go through the integral typeu8
by @dgherzka in #1030- support
c2rust <path/to/*.c>
in lieu ofcompile_commands.json
by @aneksteind in #1037 - Fix nix build by @HKalbasi in #1047
- analyze: borrowck: cache results of polonius runs on disk by @spernsteiner in #1056
- build(deps): bump shlex from 1.1.0 to 1.3.0 by @dependabot in #1062
- Add support for LLVM18 by @thedataking in #1067
- analyze: CLI options by @spernsteiner in #1057
- ast-exporter: use major, not full, version for clang resource dir by @fw-immunant in #1075
- Demonstrate use of PDG from dynamic analysis in static analysis by @fw-immunant in #1069
c2rust transpile
: Allow any integral types in init lists, not justchar
andint
by @kkysen in #1076- analyze: add C2RUST_ANALYZE_NO_CARGO env var to disable cargo integration by @spernsteiner in #1070
- analyze: emit inline annotations for debugging by @spernsteiner in #1071
- analyze: track reasons why functions are not rewritten by @spernsteiner in #1072
- analyze: add --rewrite-mode pointwise by @spernsteiner in #1073
- Fix noop deref warning by @LegNeato in #1082
- analyze: initial implementation of NON_NULL static analysis by @spernsteiner in #1081
- analyze: add scripts for computing pointwise metrics by @spernsteiner in #1074
- c2rust-transpile: only delete compile_commands.json if it was a temp file by @fw-immunant in #1079
- analyze: uncomment line in scripts/run_pointwise_metrics.sh by @spernsteiner in #1087
- analyze: allow overriding dataflow for specific permissions by @spernsteiner in #1088
- Switch to crossbeam-queue for events by @ahomescu in #1091
- analyze: add NON_NULL rewrites by @spernsteiner in #1095
- Fix ordering of clang libs for static linking by @thedataking in #1100
- analyze: support rewriting field projections on nullable pointers by @spernsteiner in #1096
- Fix c2rust-analyze panic for variadic functions by @ahomescu in #1105
- analyze: borrowck performance improvements by @spernsteiner in #1111
- transpile: remove
git-testament
dependency (for now) to removetime
dependency to build on 1.80.0 by @kkysen in #1115 - Release 0.19.0 by @kkysen in #1116
New Contributors
- @orowith2os made their first contribution in #954
- @not-my-profile made their first contribution in #1016
- @dgherzka made their first contribution in #1030
- @HKalbasi made their first contribution in #1047
Full Changelog: v0.18.0...v0.19.0