diff --git a/changelog.md b/changelog.md index 665346ad70..f37565fcbc 100644 --- a/changelog.md +++ b/changelog.md @@ -35,6 +35,10 @@ errors. - Adds a new warning `--warning:ImplicitRangeConversion` that detects downsizing implicit conversions to range types (e.g., `int -> range[0..255]` or `range[1..256] -> range[0..255]`) that could cause runtime panics. Safe conversions like `range[0..255] -> range[0..65535]` and explicit casts do not trigger warnings. `int` to `Natural` and `Positive` conversions do not trigger warnings, which can be enabled with `--warning:systemRangeConversion`. +- Procedure compatibility also checks the backend representation of the +parameter and result types, not just their source-level shape. Use +`--legacy:procParamTypeBackendAliases` to restore the older behavior. + ## Standard library additions and changes [//]: # "Additions:" diff --git a/doc/manual.md b/doc/manual.md index ab06f7aa4b..40897ac108 100644 --- a/doc/manual.md +++ b/doc/manual.md @@ -1024,6 +1024,9 @@ These are the major type classes: * procedural type * generic type +The compiler's internal type zoo is richer than this summary suggests: +some types that are structurally equal still differ in backend representation. + Ordinal types ------------- @@ -2174,6 +2177,10 @@ Procedural type A procedural type is internally a pointer to a procedure. `nil` is an allowed value for a variable of a procedural type. +Procedure compatibility also checks the backend representation of the +parameter and result types, not just their source-level shape. Use +`--legacy:procParamTypeBackendAliases` to restore the older behavior. + Examples: ```nim