| 
3 | 3 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),  | 
4 | 4 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).  | 
5 | 5 | 
 
  | 
 | 6 | +## [0.7.0] - 2020-03-06  | 
 | 7 | + | 
 | 8 | +### Added  | 
 | 9 | + | 
 | 10 | +- rcc now has a Just-In-Time compiler (JIT)!  | 
 | 11 | +This feature is turned off by default as it adds a dependency on `cranelift-simplejit`.  | 
 | 12 | +To use it, add `features = ["jit"]` to your `Cargo.toml`.  | 
 | 13 | +As a side effect, rcc now has proper benchmarks using in-memory compilation to avoid noise from IO.  | 
 | 14 | +A giant thank you to @playx for implementing this!  | 
 | 15 | + | 
 | 16 | +- The `-I` flag has been implemented. No more will you have to play silly games with symbolic links!  | 
 | 17 | +(See `--help` for a full description)  | 
 | 18 | + | 
 | 19 | +- There is now a `.github/report-issue.sh` script in case you report issues a lot.  | 
 | 20 | +See `CONTRIBUTING.md` for more details as well as how to use it.  | 
 | 21 | + | 
 | 22 | +### Changed  | 
 | 23 | + | 
 | 24 | +- The long-neglected README has been updated to reflect the currently implemented features and TODOs.  | 
 | 25 | + | 
 | 26 | +### Fixed  | 
 | 27 | + | 
 | 28 | +- rcc no longer crashes on structs where the size without padding is not a multiple of the alignment  | 
 | 29 | +([#278](https://github.com/jyn514/rcc/issues/278). Thanks to @repnop for fixing this!  | 
 | 30 | +- rcc no longer crashes on many unary operators in a row ([#329](https://github.com/jyn514/rcc/pull/329))  | 
 | 31 | +- The README proclaims support for 1.37, but the preprocessor in 0.6 used features from 1.40.  | 
 | 32 | +This release rewrote those changes in a way that's backwards-compatible with 1.37.  | 
 | 33 | +Merges to master have now been gated on the 1.37 build succeeding to avoid accidents like this in the future.  | 
 | 34 | +- More cycle detection has been implemented ([#293](https://github.com/jyn514/rcc/issues/298)).  | 
 | 35 | +For example, the following code no longer goes into an infinite loop:  | 
 | 36 | + | 
 | 37 | +```c  | 
 | 38 | +// from real code in <signal.h> !!  | 
 | 39 | +#define sa_handler   __sa_handler.sa_handler  | 
 | 40 | +#define sa_sigaction __sa_handler.sa_sigaction  | 
 | 41 | +int main() {  | 
 | 42 | +    struct sigaction handler;  | 
 | 43 | +    handler.sa_handler = 0;  | 
 | 44 | +}  | 
 | 45 | +```  | 
 | 46 | +
  | 
 | 47 | +However, function macros which expand to themselves will still loop forever ([#312](https://github.com/jyn514/rcc/issues/312)).  | 
 | 48 | +
  | 
 | 49 | +- `*p;` now gives a warning that the type of `p` defaults to `int *`. Thank you to @repnop for implementing this.  | 
 | 50 | +
  | 
6 | 51 | ## [0.6.0] - 2020-02-25  | 
7 | 52 | 
  | 
8 | 53 | ### Added  | 
 | 
0 commit comments