Conversation
|
All right, looks somewhat presentable. |
|
r? @SimonSapin |
|
☔ The latest upstream changes (presumably #162) made this pull request unmergeable. Please resolve the merge conflicts. |
|
I can rebase if someone reviews. :D |
|
Running the fuzzer returns an error unless I create an |
|
@mbrubeck Are you using afl? Yes. Please do something like: |
|
I'm not sure if I should add this to the |
|
Yes, having a basic one-byte input checked in to the repo would be good; it'll be one less step for people to get started (or for scripts running fuzzing in CI). |
mbrubeck
left a comment
There was a problem hiding this comment.
This looks great, thanks! Just needs a rebase and an AFL input file, as discussed above.
|
The build failure is because #145 changed the API for |
|
@mbrubeck Oh. I did a naive rebase, as I don't have access to my normal dev box. I'll fix it later today / tomorrow. Thanks! |
Add infrastructure to automatically run fuzzers in CI, and implement a simple fuzzing test based on triggering all (most) public APIs in a randimized way. As far as I was able to try it catches the previous unsoundness issues in a matter of seconds. This can be tried by changing the `path = "../"` dependency to `version = "=0.6.3"` etc. and running the fuzzer manually. (Note: You'll need to tweak the `Cargo.lock` to allow downloading the yanked versions). Related to servo#124
|
@mbrubeck Done. :) |
|
@bors-servo r+ Thanks! |
|
📌 Commit a3ba738 has been approved by |
Add simple fuzzing Add simple fuzzing Add infrastructure to automatically run fuzzers in CI, and implement a simple fuzzing test based on triggering all (most) public APIs in a randimized way. As far as I was able to try, it catches the previous unsoundness issues in a matter of seconds. This can be tried by changing the `path = "../"` dependency to `version = "=0.6.3"` etc. and running the fuzzer manually. (Note: You'll need to tweak the `Cargo.lock` to allow downloading the yanked versions).
|
☀️ Test successful - checks-travis |
* [breaking change] Use `MaybeUninit` internally to avoid possible undefined behavior (servo#162, servo#170). * [breaking change] The `drain` method now takes a range argument, just like the standard `Vec::drain` (servo#145). * [breaking change] Remove the `unreachable` function and replace it with the new standard `unreachable_unchecked` function (servo#164). * [breaking change] Use `no_std` by default. This crate depends only on `core` and `alloc` by default. If the optional `write` feature is enabled then it depends on `std` so that `SmallVec<[u8, _]>` can implement the `std::io::Write` trait (servo#173). * Add support for 96-element small vectors, `SmallVec<[T; 96]>` (servo#163). * Iterators now implement `FusedIterator` (servo#172). * Indexing now uses the standard `SliceIndex` trait (servo#166). * Remove the deprecated `VecLike` trait (servo#165). * Use `NonNull` internally (servo#171). * Add automatic fuzz testing and MIRI testing (servo#168, servo#162). * Update syntax and formatting to Rust 2018 standard (servo#174, servo#167).
Version 1.0.0 * Requires Rust 1.36 or later. * [breaking change] Use `MaybeUninit` to avoid possible undefined behavior (#162, #170). * [breaking change] The `drain` method now takes a range argument, just like the standard `Vec::drain` (#145). * [breaking change] Remove the `unreachable` function and replace it with the new standard `unreachable_unchecked` function (#164). * [breaking change] Use `no_std` by default. This crate depends only on `core` and `alloc` by default. If the optional `write` feature is enabled then it depends on `std` so that `SmallVec<[u8;_]>` can implement the `std::io::Write` trait (#173). * Add support for 96-element small vectors, `SmallVec<[T; 96]>` (#163). * Iterators now implement `FusedIterator` (#172). * Indexing now uses the standard `SliceIndex` trait (#166). * Remove the deprecated `VecLike` trait (#165). * Use `NonNull` internally (#171). * Add automatic fuzz testing and MIRI testing (#168, #162). * Update syntax and formatting to Rust 2018 standard (#174, #167).
Add simple fuzzing
Add infrastructure to automatically run fuzzers in CI,
and implement a simple fuzzing test based on triggering all (most)
public APIs in a randimized way.
As far as I was able to try, it catches the previous unsoundness issues
in a matter of seconds. This can be tried by changing the
path = "../"dependency toversion = "=0.6.3"etc. and running the fuzzer manually. (Note: You'll needto tweak the
Cargo.lockto allow downloading the yanked versions).