Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions BREAKING-CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ read first.

---

## Unreleased — since 2.1.0
## 2.2.0 — since 2.1.0

### At a glance

Expand Down Expand Up @@ -326,10 +326,17 @@ one a caller reached for:
| `RewriteRules.RationaliseDenominator` | `RewriteRules.RationalizeDenominator` |
| `Patterns.RationaliseDenominator` (internal) | `Patterns.RationalizeDenominator` |

**This one breaks a build rather than an answer** — the compiler names the missing member, so there
is nothing to discover at runtime. The rule set's `Name` comes from `nameof`, so a caller that
matched on the string `"RationaliseDenominator"` gets `"RationalizeDenominator"` instead; that part
*is* silent, and it is the only part that is.
**If you recompile, this breaks a build rather than an answer** — the compiler names the missing
member. Two ways it can reach you later than that:

- `AssemblyVersion` is pinned at `2.0.0.0` for the whole of 2.x precisely so that a consumer can
drop a new DLL in without a binding redirect. Do that without recompiling, and a call to
`Transformation.Rationalisation` throws `MissingMethodException` when it is *reached*, not when
the assembly loads. That is the one path on which this behaves like a silent change.
- The rule set's `Name` comes from `nameof`, so a caller matching on the string
`"RationaliseDenominator"` now sees `"RationalizeDenominator"` and simply stops matching.

Recompiling against 2.2.0 turns both into compile errors, except the string.

Documentation prose keeps British spelling throughout — `Factorize` has always sat beside the word
"factorisation" and still does. The convention is about identifiers.
Expand Down
10 changes: 7 additions & 3 deletions Sources/Package.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,21 @@
release tag, so what ships is named by the tag; this is what a local build and the
assembly metadata carry.
-->
<Version>2.1.0</Version>
<Version>2.2.0</Version>

<!--
Pinned to the major for the whole of 2.x, and deliberately not tracking Version.
The assembly is strong-named (see AngouriMath.csproj), and for a signed assembly
every AssemblyVersion change breaks binding on consumers that do not add a redirect.
Holding it at 2.0.0.0 makes every 2.x release a drop-in replacement. FileVersion
Holding it at 2.0.0.0 lets a 2.x assembly load in place of another without one.

That is binding, not compatibility: a member removed or renamed within 2.x still
throws MissingMethodException when a consumer compiled against the older assembly
reaches it. 2.2.0 renames two, both recorded in BREAKING-CHANGES.md. FileVersion
carries the release for anyone reading the file properties.
-->
<AssemblyVersion>2.0.0.0</AssemblyVersion>
<FileVersion>2.1.0.0</FileVersion>
<FileVersion>2.2.0.0</FileVersion>

<Authors>WhiteBlackGoose and contributors</Authors>
<Company>Angouri</Company>
Expand Down
Loading