From a52ede52a4d0fce97b6bbd21641ca0597c1c838f Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Thu, 29 Dec 2016 20:11:02 -0500 Subject: [PATCH] Bump versions everywhere and update CHANGELOG. Fixes #296, Fixes #307 --- .travis.yml | 2 +- CHANGELOG.md | 91 +++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 16 ++++---- bench/Cargo.toml | 6 +-- regex-capi/Cargo.toml | 4 +- regex-debug/Cargo.toml | 4 +- regex-syntax/Cargo.toml | 6 +-- regex_macros/Cargo.toml | 8 ++-- 8 files changed, 114 insertions(+), 23 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9eed600032..7c9a99a1c1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: rust rust: - - 1.3.0 + - 1.12.0 - stable - beta - nightly diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b5fc7a206..cc37b6b80c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,94 @@ +0.2.0 +===== +This is a new major release of the regex crate, and is an implementation of the +[regex 1.0 RFC](https://github.com/rust-lang/rfcs/blob/master/text/1620-regex-1.0.md). +We are releasing a `0.2` first, and if there are no major problems, we will +release a `1.0` shortly. For `0.2`, the minimum *supported* Rust version is +1.12. + +There are a number of **breaking changes** in `0.2`. They are split into two +types. The first type correspond to breaking changes in regular expression +syntax. The second type correspond to breaking changes in the API. + +Breaking changes for regex syntax: + +* POSIX character classes now require double bracketing. Previously, the regex + `[:upper:]` would parse as the `upper` POSIX character class. Now it parses + as the character class containing the characters `:upper:`. The fix to this + change is to use `[[:upper:]]` instead. Note that variants like + `[[:upper:][:blank:]]` continue to work. +* The character `[` must always be escaped inside a character class. +* The characters `&`, `-` and `~` must be escaped if any one of them are + repeated consecutively. For example, `[&]`, `[\&]`, `[\&\&]`, `[&-&]` are all + equivalent while `[&&]` is illegal. (The motivation for this and the prior + change is to provide a backwards compatible path for adding character class + set notation.) +* A `bytes::Regex` now has Unicode mode enabled by default (like the main + `Regex` type). This means regexes compiled with `bytes::Regex::new` that + don't have the Unicode flag set should add `(?-u)` to recover the original + behavior. + +Breaking changes for the regex API: + +* `find` and `find_iter` now **return `Match` values instead of + `(usize, usize)`.** `Match` values have `start` and `end` methods, which + return the match offsets. `Match` values also have an `as_str` method, + which returns the text of the match itself. +* The `Captures` type now only provides a single iterator over all capturing + matches, which should replace uses of `iter` and `iter_pos`. Uses of + `iter_named` should use the `capture_names` method on `Regex`. +* The `replace` methods now return `Cow` values. The `Cow::Borrowed` variant + is returned when no replacements are made. +* The `Replacer` trait has been completely overhauled. This should only + impact clients that implement this trait explicitly. Standard uses of + the `replace` methods should continue to work unchanged. +* The `quote` free function has been renamed to `escape`. +* The `Regex::with_size_limit` method has been removed. It is replaced by + `RegexBuilder::size_limit`. +* The `RegexBuilder` type has switched from owned `self` method receivers to + `&mut self` method receivers. Most uses will continue to work unchanged, but + some code may require naming an intermediate variable to hold the builder. +* The free `is_match` function has been removed. It is replaced by compiling + a `Regex` and calling its `is_match` method. +* The `PartialEq` and `Eq` impls on `Regex` have been dropped. If you relied + on these impls, the fix is to define a wrapper type around `Regex`, impl + `Deref` on it and provide the necessary impls. +* The `is_empty` method on `Captures` has been removed. This always returns + `false`, so its use is superfluous. +* The `Syntax` variant of the `Error` type now contains a string instead of + a `regex_syntax::Error`. If you were examining syntax errors more closely, + you'll need to explicitly use the `regex_syntax` crate to re-parse the regex. +* The `InvalidSet` variant of the `Error` type has been removed since it is + no longer used. +* Most of the iterator types have been renamed to match conventions. If you + were using these iterator types explicitly, please consult the documentation + for its new name. For example, `RegexSplits` has been renamed to `Split`. + +A number of bugs have been fixed: + +* [BUG #151](https://github.com/rust-lang/regex/issues/151): + The `Replacer` trait has been changed to permit the caller to control + allocation. +* [BUG #165](https://github.com/rust-lang/regex/issues/165): + Remove the free `is_match` function. +* [BUG #166](https://github.com/rust-lang/regex/issues/166): + Expose more knobs (available in `0.1`) and remove `with_size_limit`. +* [BUG #168](https://github.com/rust-lang/regex/issues/168): + Iterators produced by `Captures` now have the correct lifetime parameters. +* [BUG #175](https://github.com/rust-lang/regex/issues/175): + Fix a corner case in the parsing of POSIX character classes. +* [BUG #178](https://github.com/rust-lang/regex/issues/178): + Drop the `PartialEq` and `Eq` impls on `Regex`. +* [BUG #179](https://github.com/rust-lang/regex/issues/179): + Remove `is_empty` from `Captures` since it always returns false. +* [BUG #276](https://github.com/rust-lang/regex/issues/276): + Position of named capture can now be retrieved from a `Captures`. +* [BUG #296](https://github.com/rust-lang/regex/issues/296): + Remove winapi/kernel32-sys dependency on UNIX. +* [BUG #307](https://github.com/rust-lang/regex/issues/307): + Fix error on emscripten. + + 0.1.80 ====== * [PR #292](https://github.com/rust-lang-nursery/regex/pull/292): diff --git a/Cargo.toml b/Cargo.toml index ab1680cdf8..e115931aef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "regex" -version = "0.1.80" #:version +version = "0.2.0" #:version authors = ["The Rust Project Developers"] license = "MIT/Apache-2.0" readme = "README.md" @@ -16,23 +16,23 @@ finite automata and guarantees linear time matching on all inputs. # For very fast prefix literal matching. aho-corasick = "0.5.3" # For skipping along search text quickly when a leading byte is known. -memchr = "0.1.9" +memchr = "1" # For managing regex caches quickly across multiple threads. -thread_local = "0.2.4" +thread_local = "0.3.2" # For parsing regular expressions. -regex-syntax = { path = "regex-syntax", version = "0.3.8" } +regex-syntax = { path = "regex-syntax", version = "0.4.0" } # For accelerating text search. simd = { version = "0.1.0", optional = true } # For compiling UTF-8 decoding into automata. -utf8-ranges = "0.1.3" +utf8-ranges = "1" [dev-dependencies] # For examples. -lazy_static = "0.1" +lazy_static = "0.2.2" # For property based tests. -quickcheck = "0.2" +quickcheck = "0.4.1" # For generating random test data. -rand = "0.3" +rand = "0.3.15" [features] # Enable to use the unstable pattern traits defined in std. diff --git a/bench/Cargo.toml b/bench/Cargo.toml index 05654e072c..0bd686762a 100644 --- a/bench/Cargo.toml +++ b/bench/Cargo.toml @@ -17,9 +17,9 @@ libc = "0.2" onig = { version = "0.4", optional = true } libpcre-sys = { version = "0.2", optional = true } memmap = "0.2" -regex = { version = "0.1", path = "..", features = ["simd-accel"] } -regex_macros = { version = "0.1", path = "../regex_macros", optional = true } -regex-syntax = { version = "0.3", path = "../regex-syntax" } +regex = { version = "0.2.0", path = "..", features = ["simd-accel"] } +regex_macros = { version = "0.2.0", path = "../regex_macros", optional = true } +regex-syntax = { version = "0.4.0", path = "../regex-syntax" } rustc-serialize = "0.3" [build-dependencies] diff --git a/regex-capi/Cargo.toml b/regex-capi/Cargo.toml index 8b5c8ae1bf..f5333f2af5 100644 --- a/regex-capi/Cargo.toml +++ b/regex-capi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rure" -version = "0.1.1" #:version +version = "0.2.0" #:version authors = ["The Rust Project Developers"] license = "MIT/Apache-2.0" readme = "README.md" @@ -17,4 +17,4 @@ crate-type = ["staticlib", "cdylib"] [dependencies] libc = "0.2" -regex = { version = "0.1.77", path = ".." } +regex = { version = "0.2.0", path = ".." } diff --git a/regex-debug/Cargo.toml b/regex-debug/Cargo.toml index 6645ab60d4..cebad7ca4b 100644 --- a/regex-debug/Cargo.toml +++ b/regex-debug/Cargo.toml @@ -11,8 +11,8 @@ description = "A tool useful for debugging regular expressions." [dependencies] docopt = "0.6" -regex = { version = "0.1", path = ".." } -regex-syntax = { version = "0.3", path = "../regex-syntax" } +regex = { version = "0.2", path = ".." } +regex-syntax = { version = "0.4.0", path = "../regex-syntax" } rustc-serialize = "0.3" [profile.release] diff --git a/regex-syntax/Cargo.toml b/regex-syntax/Cargo.toml index 801a60acd6..c386b48a75 100644 --- a/regex-syntax/Cargo.toml +++ b/regex-syntax/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "regex-syntax" -version = "0.3.9" #:version +version = "0.4.0" #:version authors = ["The Rust Project Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rust-lang/regex" @@ -9,5 +9,5 @@ homepage = "https://github.com/rust-lang/regex" description = "A regular expression parser." [dev-dependencies] -quickcheck = "0.2" -rand = "0.3" +quickcheck = "0.4.1" +rand = "0.3.15" diff --git a/regex_macros/Cargo.toml b/regex_macros/Cargo.toml index c587e9ab16..7fd4ecd7a5 100644 --- a/regex_macros/Cargo.toml +++ b/regex_macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "regex_macros" -version = "0.1.38" +version = "0.2.0" authors = ["The Rust Project Developers"] license = "MIT/Apache-2.0" repository = "https://github.com/rust-lang/regex" @@ -19,16 +19,16 @@ plugin = true [dependencies.regex] path = ".." -version = "0.1.63" +version = "0.2.0" features = ["pattern"] [dependencies.regex-syntax] path = "../regex-syntax" -version = "0.3.1" +version = "0.4.0" [dev-dependencies] # For generating random test data. -rand = "0.3" +rand = "0.3.15" [[test]] path = "../tests/test_plugin.rs"