1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849
|
Release notes for Agda version 2.6.0
====================================
Highlights
----------
* Added support for [Cubical
Agda](https://agda.readthedocs.io/en/v2.6.0/language/cubical.html)
which adds new features such as univalence and higher inductive
types to Agda.
* Added support for ML-style [automatic generalization of
variables](https://agda.readthedocs.io/en/v2.6.0/language/generalization-of-declared-variables.html).
* Added a new sort ``Prop`` of [definitionally proof-irrelevant
propositions](https://agda.readthedocs.io/en/v2.6.0/language/prop.html).
* The implementation of [instance
search](https://agda.readthedocs.io/en/v2.6.0/language/instance-arguments.html)
got a major overhaul and no longer supports overlapping instances
(unless enabled by a flag).
Installation and infrastructure
-------------------------------
* Added support for GHC 8.6.4.
* Interface files for all builtin and primitive files are now
re-generated each time Agda is installed.
Syntax
------
* Agda now supports implicit generalization of declared
variables. Variables to be generalized can declared with the new
keyword `variable`. For example:
```agda
postulate
Con : Set
variable
Γ Δ θ : Con
```
Declared variables are automatically generalized in type signatures,
module telescopes and data type and record parameters and indices:
```agda
postulate
Sub : Con → Con → Set
id : Sub Γ Γ
-- -- equivalent to
-- id : {Γ : Con} → Sub Γ Γ
_∘_ : Sub Θ Δ → Sub Γ Θ → Sub Γ Δ
-- -- equivalent to
-- _∘_ : {Γ Δ Θ : Con} → Sub Θ Δ → Sub Γ Θ → Sub Γ Δ
```
See the [user manual](https://agda.readthedocs.io/en/v2.6.0/language/generalization-of-declared-variables.html)
for more details.
* Data type and record definitions separated from their type signatures can no
longer repeat the types of the parameters, but can bind implicit parameters
by name [Issue [#1886](https://github.com/agda/agda/issues/1886)].
This is now allowed
```agda
data D {a b} (A : Set a) (B : Set b) : Set (a ⊔ lsuc b)
data D {b = b} A B where
mkD : (A → Set b) → D A B
```
but this is not
```agda
data I (A : Set) : Set
data I (A : Set) where
```
* The label used for named implicit arguments can now be different from the
name of the bound variable [Issue [#952](https://github.com/agda/agda/issues/952)].
Example,
```agda
id₁ : {A = X : Set} → X → X
id₁ x = x
id₂ : ∀ {B = X} → X → X
id₂ {B = X} x = id₁ {A = X} x
test : Nat
test = id₁ {A = Nat} 5 + id₂ {B = Nat} 6
```
Only implicit and instance arguments can have a label and either or both of
the label and bound variable can be `_`. Labeled bindings with a type
signature can only bind a single variable. For instance, the type `Set` has
to be repeated here:
```agda
const : {A = X : Set} {B = Y : Set} → X → Y → X
const x _ = x
```
* The rules for parsing of patterns have changed slightly [Issue
[#3400](https://github.com/agda/agda/issues/3400)].
Now projections are treated similarly to constructors: In a pattern
name parts coming from projections can only be used as part of
projections, constructors or pattern synonyms. They cannot be used
as variables, or as part of the name of the defined value.
Examples:
* The following code used to be syntactically ambiguous, but is now
parsed, because A can no longer be used as a variable:
```agda
record R : Set₂ where
field
_A : Set₁
open R
r : R
r A = Set
```
* On the other hand the following code is no longer parsed:
```agda
record R : Set₁ where
field
⟨_+_⟩ : Set
open R
+ : Set → Set
+ A = A
```
Type checking
-------------
* Agda now supports a cubical mode which adds new features from
[Cubical Type Theory](https://arxiv.org/abs/1611.02108), including
univalence and higher inductive types. Option `--cubical` enables
the cubical mode, and cubical primitives are defined in the module
`Agda.Primitive.Cubical`. See the [user
manual](https://agda.readthedocs.io/en/v2.6.0/language/cubical.html)
for more info.
* Agda now supports the new sort ``Prop`` of [definitionally
proof-irrelevant propositions](https://hal.inria.fr/hal-01859964).
Option `--prop` enables the `Prop` universe but is off by default.
Option `--no-prop` disables the `Prop` universe. See the [user
manual](https://agda.readthedocs.io/en/v2.6.0/language/prop.html)
for more details.
In the absense of `Prop`, the sort `Set` is the lowest sort, thus,
the sort annotation `: Set` can be ommitted if the sort is
constrained to be weakly below `Set`. For instance:
```agda
{-# OPTIONS --no-prop #-}
data Wrap A : Set where
wrap : A → Wrap A
```
In contrast, when `--prop` is enabled the sort of `A` could be
either `Set` or `Prop` so this code no longer typechecks.
* Agda now allows omitting absurd clauses in case one of the pattern
variable inhabits an obviously empty type
[Issue [#1086](https://github.com/agda/agda/issues/1086)].
For example:
```agda
f : Fin 1 → Nat
f zero = 0
-- f (suc ()) -- this clause is no longer required
```
Absurd clauses are still required in case deep pattern matching is
needed to expose the absurd variable, or if there are no non-absurd
clauses.
Due to the changes to the coverage checker required for this new
feature, Agda will now sometimes construct a different case tree when
there are multiple valid splitting orders. In some cases this may
impact the constraints that Agda is able to solve (for example, see
[#673](https://github.com/agda/agda-stdlib/pull/673) on the
standard library).
* Since Agda 2.5.3, the hiding is considered part of the name in the
insertion of implicit arguments. Until Agda 2.5.2, the following
code was rejected:
```agda
test : {{X : Set}} {X : Set} → Set
test {X = X} = X
```
The rationale was that named argument `X` is given with the wrong hiding.
The new rationale is that the hiding is considered part of the name,
distinguishing `{{X}}` from `{X}`.
This language change was accidential and has not been documented in
the 2.5.3 release notes.
* Agda no longer allows case splitting on irrelevant arguments of
record types (see Issue
[#3056](https://github.com/agda/agda/issues/3056)).
* Metavariables in module telescopes are now sometimes frozen later
[Issue [#1063](https://github.com/agda/agda/issues/1063)].
Metavariables created in the types of module parameters used to be
frozen right after the module's first mutual block had been
type-checked (unless, perhaps, if the module itself was contained in
a mutual block). Now they are instead frozen at the end of the
module (with a similar caveat regarding an outer mutual block).
* When `--without-K` is enabled, Agda no longer allows datatypes with
large indices. For example, the following definition of equality is
now forbidden when `--without-K` is enabled:
```agda
data _≡₀_ {ℓ} {A : Set ℓ} (x : A) : A → Set where
refl : x ≡₀ x
```
* The termination checker now also looks for recursive calls in the type of definitions.
This fixes an issue where Agda allowed very dependent types
[Issue [#1556](https://github.com/agda/agda/issues/1556)].
This change affects induction-induction, e.g.
```agda
mutual
data Cxt : Set where
ε : Cxt
_,_ : (Γ : Cxt) (A : Ty Γ) → Cxt
data Ty : (Γ : Cxt) → Set where
u : ∀ Γ → Ty Γ
Π : ∀ Γ (A : Ty Γ) (B : Ty (Γ , A)) → Ty Γ
mutual
f : Cxt → Cxt
f ε = ε
f (Γ , T) = (f Γ , g Γ T)
g : ∀ Γ → Ty Γ → Ty (f Γ)
g Γ (u .Γ) = u (f Γ)
g Γ (Π .Γ A B) = Π (f Γ) (g Γ A) (g (Γ , A) B)
```
The type of `g` contains a call `g Γ _ --> f Γ` which is now taken
into account during termination checking.
Instance search
---------------
* Instance argument resolution now also applies when there are
unconstrained metavariables in the type of the argument. For
example, if there is a single instance `eqBool : Eq Bool` in scope,
then an instance argument `{{eq : Eq _}}` will be solved to
`eqBool`, setting the value of the metavariable `_` to `Bool` in the
process.
* By default, Agda no longer allows overlapping instances. Two
instances are defined to overlap if they could both solve the
instance goal when given appropriate solutions for their recursive
(instance) arguments. Agda used to choose between undecidable
instances based on the result of recursive instance search, but this
lead to an exponential slowdown in instance resolution. Overlapping
instances can be enabled with the flag `--overlapping-instances`.
* Explicit arguments are no longer automatically turned into instance
arguments for the purpose of recursive instance search. Instead,
explicit arguments are left unresolved and will thus never be used
for instance search.
If an instance is declared which has explicit arguments, Agda will
raise a warning that this instance will never be considered by
instance search.
* Instance arguments that are already solved by conversion checking
are no longer ignored by instance search. Thus the constructor of
the unit type must now be explicitly be declared as an instance in
order to be considered by instance search:
```agda
record ⊤ : Set where
instance constructor tt
```
* Instances are now (correctly) required to be in scope to be eligible
(see Issue [#1913](https://github.com/agda/agda/issues/1913)
and Issue [#2489](https://github.com/agda/agda/issues/2489)
).
This means that you can no longer import instances from parameterised modules by
```agda
import Some.Module Arg₁ Arg2
```
without opening or naming the module.
Reflection
----------
* New TC primitive `noConstraints` [Issue
[#2351](https://github.com/agda/agda/issues/2351)]:
```agda
noConstraints : ∀ {a} {A : Set a} → TC A → TC A
```
The computation `noConstraints m` fails if `m` gives rise to new,
unsolved
["blocking"](https://github.com/agda/agda/blob/4900ef5fc61776381f3a5e9c94ef776375e9e1f1/src/full/Agda/TypeChecking/Monad/Constraints.hs#L160-L174)
constraints.
* New TC primitive `runSpeculative` [Issue
[#3346](https://github.com/agda/agda/issues/3346)]:
```
runSpeculative : ∀ {a} {A : Set a} → TC (Σ A λ _ → Bool) → TC A
```
The computation `runSpeculative m` runs `m` and either keeps the new
TC state (if the second component is `true`) or resets to the old TC
state (if it is `false`).
Interaction and error reporting
-------------------------------
* A new command `agda2-elaborate-give` (C-c C-m) normalizes a goal input
(it respects the C-u prefixes), type checks, and inserts the normalized
term into the goal.
* 'Solve constraints' (C-c C-s) now turns unsolved metavariables into new
interaction holes (see Issue [#2273](https://github.com/agda/agda/issues/2273)).
* Out-of-scope identifiers are no longer prefixed by a '.' dot [Issue
[#3127](https://github.com/agda/agda/issues/3127)]. This notation
could be confused with dot patterns, postfix projections, and
irrelevance. Now Agda will do its best to make up fresh names for
out-of-scope identifiers that do not conflict with any existing
names. In addition, these names are marked as "(out of scope)" when
printing the context.
The change affects the printing of terms, e.g. in error messages and
interaction, and the parsing of out-of-scope variables for
case splitting (`C-c C-c` in emacs).
* Shadowed local variables are now assigned fresh names in error
messages and interactive goals [Issue
[#572](https://github.com/agda/agda/issues/572)]. For example,
consider the following piece of code:
```agda
postulate P : Set -> Set
test : (B : Set) -> P B -> P B
test = λ p p -> {!!}
```
When asking for the goal type, Agda will now print the following:
```
Goal: P p₁
————————————————————————————————————————————————————————————
p : P p₁
p = p₁ : Set (not in scope)
```
Shadowed top-level identifiers are printed using the qualified name,
for example in
```agda
module M where
postulate A : Set
test : Set → A
test A = {!!}
```
Agda will now show the goal type as
```
Goal: M.A
————————————————————————————————————————————————————————————
A : Set
```
* When case splitting (`C-c C-c` in emacs), Agda will now filter out
impossible cases (i.e. ones where at least one of the variables
could be replaced by an absurd pattern `()`). If all the clauses
produced by a case split are impossible, Agda will not filter out
any of them.
Pragmas and options
-------------------
* Consistency checking of options used.
Agda now checks that options used in imported modules are consistent
with each other, e.g. a module using `--safe`, `--without-K`,
`--no-universe-polymorphism` or `--no-sized-types` may only import
modules with the same option, and modules using `--cubical` or
`--prop` must in turn use the same option. If an interface file has
been generated using different options compared to the current ones,
Agda will now re-typecheck the file.
[Issue [#2487](https://github.com/agda/agda/issues/2487)].
* New option `--cubical` to enable Cubical Agda.
* New option `--prop` to enable the ``Prop`` sort, and `--no-prop` to
disable it (default).
* New options `--guardedness` and `--no-guardedness` [Issue
[#1209](https://github.com/agda/agda/issues/1209)].
Constructor-based guarded corecursion is now only (meant to be)
allowed if the `--guardedness` option is active. This option is
active by default. The combination of constructor-based guarded
corecursion and sized types is not allowed if `--safe` is used,
and activating `--safe` turns off both `--guardedness` and
`--sized-types` (because this combination is known to be
inconsistent in the current implementation). If you want to use
either constructor-based guarded corecursion or sized types in
safe mode, then you can use `--safe --guardedness` or `--safe
--sized-types` respectively (in this order).
The option `--no-guardedness` turns off constructor-based guarded
corecursion.
* Option `--irrelevant-projections` is now off by default and
not considered `--safe` any longer.
Reason: There are consistency issues that may be systemic
[Issue [#2170](https://github.com/agda/agda/issues/2170)].
* New option `--no-syntactic-equality` disables the syntactic equality
shortcut used by the conversion checker. This will slow down
typechecking in most cases, but makes the performance more
predictable and stable under minor changes.
* New option `--overlapping-instances` enables overlapping instances
by performing recursive instance search during pruning of instance
candidates (this used to be the default behaviour). Overlapping
instances can be disabled with `--no-overlapping-instances`
(default).
* Option (and experimental feature)
`--guardedness-preserving-type-constructors`
has been removed.
[Issue [#3180](https://github.com/agda/agda/issues/3180)].
* Deprecated options `--sharing` and `--no-sharing` now raise an error.
* New primitive `primErase`. It takes a proof of equality and returns a proof of
the same equality. `primErase eq` reduces to `refl` on the diagonal. `trustMe`
is not a primitive anymore, it is implemented using `primErase`.
The primitive is declared in `Agda.Builtin.Equality.Erase`.
* The `REWRITE` builtin is now bound to the builtin equality type from
`Agda.Builtin.Equality` in `Agda.Builtin.Equality.Rewrite` [Issue
[#3318](https://github.com/agda/agda/issues/3318)].
* New primitives `primCharToNatInjective` and `primStringToListInjective`
internalising the fact that `primCharToNat` and `primStringtoList` are
injective functions. They are respectively bound in `Agda.Builtin.Char.Properties`
and `Agda.Builtin.String.Properties`.
* The option `--only-scope-checking` is now allowed together with `--safe`.
* The option `--ignore-interfaces` no longer ignores the interfaces of
builtin and primitive modules. For experts, there is the option
`--ignore-all-interfaces` which also rechecks builtin and primitive
files.
* The following deprecated compiler pragmas have been removed:
```
{-# COMPILED f e #-}
{-# COMPILED_TYPE A T #-}
{-# COMPILED_DATA A D C1 .. CN #-}
{-# COMPILED_DECLARE_DATA #-}
{-# COMPILED_EXPORT f g #-}
{-# IMPORT M #-}
{-# HASKELL code #-}
{-# COMPILED_UHC f e #-}
{-# COMPILED_DATA_UHC A D C1 .. CN #-}
{-# IMPORT_UHC M #-}
{-# COMPILED_JS f e #-}
```
See the [user manual](https://agda.readthedocs.io/en/v2.6.0/language/foreign-function-interface.html)
for how to use the `COMPILE` and `FOREIGN` pragmas that replaced these in Agda 2.5.
### New warnings
* A declaration of the form `f : A` without an accompanying definition
is no longer an error, but instead raises a warning.
* A clause that has both an absurd pattern and a right-hand side is no
longer an error, but instead raises a warning.
* An import statement for `M` that mentions names not exported by `M`
(in either `using`, `hiding`, or `renaming`) is no longer an
error. Instead, Agda will raise a warning and ignore the names.
* Pragma, primitive, module or import statements in a mutual block
are no longer errors. Instead, Agda will raise a warning and ignore
these statements.
### Pragmas and options concerning universes
* New pragma `{-# NO_UNIVERSE_CHECK #-}`.
The pragma `{-# NO_UNIVERSE_CHECK #-}` can be put in front of a data
or record type to disable universe consistency checking locally.
Example:
```agda
{-# NO_UNIVERSE_CHECK #-}
data U : Set where
el : Set → U
```
Like the similar pragmas for disabling termination and positivity
checking, `{-# NO_UNIVERSE_CHECK #-}` cannot be used with `--safe`.
* New builtin `SETOMEGA`.
Agda's top sort `Setω` is now defined as a builtin in `Agda.Primitive`
and can be renamed when importing that module.
* New option `--omega-in-omega`.
The option `--omega-in-omega` enables the typing rule `Setω : Setω`.
Example:
```agda
{-# OPTIONS --omega-in-omega #-}
open import Agda.Primitive
data Type : Setω where
el : ∀ {ℓ} → Set ℓ → Type
```
Like `--type-in-type`, this makes Agda inconsistent. However, code
written using `--omega-in-omega` is still compatible with normal
universe-polymorphic code and can be used in such files.
Emacs mode
----------
* Jump-to-definition now works for record field names in record expressions
and patterns. [Issue [#3120](https://github.com/agda/agda/issues/3120)]
```agda
record R : Set₂ where
field f : Set₁
exp : R
exp = record { f = Set }
pat : R → R
pat r@record { f = X } = record r { f = X }
```
Jump-to-definition (`M-.` or middle-click) on any of these `f`s
now jumps to the field declaration.
* Commas "ʻ،⸲⸴⹁⹉、︐︑﹐﹑,、" and semi-colons "؛⁏፤꛶;︔﹔⍮⸵;" added
to the input mode.
* It is now possible to customise the highlighting of more text in
pragmas [Issue [#2452](https://github.com/agda/agda/issues/2452)].
Some text was already highlighted. Now there is a specific face for
the remaining text (`agda2-highlight-pragma-face`).
LaTeX backend
-------------
* The code environment has two new options, `inline` and `inline*`.
These options are for typesetting inline code. The implementation of
these options is a bit of a hack. Only use these options for
typesetting a single line of code without multiple consecutive
whitespace characters (except at the beginning of the line).
When the option `inline*` is used space (`\AgdaSpace{}`) is added at
the end of the code, and when `inline` is used space is not added.
* Now highlighting commands for things like "this is an unsolved
meta-variable" are applied on the outside of highlighting commands
for things like "this is a postulate" [Issue
[#2474](https://github.com/agda/agda/issues/2474)].
Example: Instead of generating
`\AgdaPostulate{\AgdaUnsolvedMeta{F}}` Agda now generates
`\AgdaUnsolvedMeta{\AgdaPostulate{F}}`.
* The package `agda.sty` no longer selects any fonts, and no longer
changes the input or font encodings [Issue
[#3224](https://github.com/agda/agda/issues/3224)].
The new behaviour is the same as the old behaviour with the options
`nofontsetup` and `noinputencodingsetup`. These options have been
removed.
One reason for this change is that several persons have received
complaints from reviewers because they have unwittingly used
non-standard fonts in submitted papers. Another is that the `utf8x`
option to `inputenc` is now deprecated.
Note that Agda code is now less likely to typeset properly out of
the box. See the documentation for some hints about what to do if
this affects you.
* Some text was by default typeset in math mode when LuaLaTeX or
XeLaTeX were used, and in text mode when pdfLaTeX was used. Now text
mode is the default for all of these engines.
* Typesetting of pragmas should now work better [Issue
[#2452](https://github.com/agda/agda/issues/2452)].
The `\AgdaOption` command and `AgdaOption` colour have been replaced
by `\AgdaPragma` and `AgdaPragma`. The `\AgdaPragma` command is used
where `\AgdaOption` used to be used (for certain options), but also
in other cases (for other options and certain other text in
pragmas).
* There is no longer any special treatment of the character `-` [Issue
[#2452](https://github.com/agda/agda/issues/2452)].
This might, depending on things like what font your are using, mean
that the token `--` is typeset like an en dash (–). However, this is
not the case for at least one common monospace font (in at least one
setting).
* The default value of `\AgdaEmptySkip` has been changed from
`\baselineskip` to `\abovedisplayskip`. This could mean that less
vertical space is used to render empty lines in code blocks.
HTML backend
------------
* New option `--html-highlight=[code,all,auto]`.
The option `--html-highlight=code` makes the HTML-backend generate
files with:
0. No HTML footer/header
1. Agda codes highlighted
2. Non-Agda code parts as-is
3. Output file extension as-is (i.e. `.lagda.md` becomes `.md`)
4. For ReStructuredText, a `.. raw:: html\n` will be inserted
before every code blocks
This makes it possible to use an ordinary Markdown/ReStructuredText
processor to render the generated HTML.
This will affect all the files involved in one compilation, making
pure Agda code files rendered without HTML footer/header as well.
To use `code` with literate Agda files and `all` with pure Agda
files, use `--html-highlight=auto`, which means auto-detection.
The old and default behaviour is still `--html-highlight=all`.
List of all closed issues
-------------------------
For 2.6.0, the following issues have been closed
(see [bug tracker](https://github.com/agda/agda/issues)):
- [#572](https://github.com/agda/agda/issues/572): Shadowed identifiers should be preceded by a dot when printed
- [#723](https://github.com/agda/agda/issues/723): Instance search needs to know whether a meta must be a function type
- [#758](https://github.com/agda/agda/issues/758): No highlighting for syntax declarations
- [#887](https://github.com/agda/agda/issues/887): Case-split causes problems for coverage checker
- [#952](https://github.com/agda/agda/issues/952): Parse named implicit pi {x = y : A} -> B
- [#1003](https://github.com/agda/agda/issues/1003): No highlighting for ambiguous instance argument
- [#1063](https://github.com/agda/agda/issues/1063): Freeze metas in module telescope after checking the module?
- [#1086](https://github.com/agda/agda/issues/1086): Make absurd patterns not needed at toplevel
- [#1209](https://github.com/agda/agda/issues/1209): Guardedness checker inconsistency with copatterns
- [#1581](https://github.com/agda/agda/issues/1581): Fields of opened records sometimes highlighted, sometimes not
- [#1602](https://github.com/agda/agda/issues/1602): NonStrict arguments should be allowed to occur relevantly in the type
- [#1706](https://github.com/agda/agda/issues/1706): Feature request: ML-style forall-generalization
- [#1764](https://github.com/agda/agda/issues/1764): Type in type and universe polymorphism
- [#1886](https://github.com/agda/agda/issues/1886): Second copies of telescopes not checked?
- [#1909](https://github.com/agda/agda/issues/1909): parameters are not dropped from reflected pattern lambda
- [#1913](https://github.com/agda/agda/issues/1913): Names that are not in scope can sometimes be candidates for instance resolution
- [#1995](https://github.com/agda/agda/issues/1995): Correct names in goal types after multiple renaming imports.
- [#2044](https://github.com/agda/agda/issues/2044): Better diagnosis for failed instance search
- [#2089](https://github.com/agda/agda/issues/2089): ''No such module'' is a rude error message for private modules
- [#2153](https://github.com/agda/agda/issues/2153): PDF version of Language Documentation on readthedocs lacks most Unicode characters
- [#2273](https://github.com/agda/agda/issues/2273): C-c C-s should put new goals instead of underscores for unknown subterms
- [#2351](https://github.com/agda/agda/issues/2351): expose noConstraints to reflection framework
- [#2452](https://github.com/agda/agda/issues/2452): The LaTeX backend does not handle options very well
- [#2473](https://github.com/agda/agda/issues/2473): Don't reread the source code without checking that it is unchanged
- [#2487](https://github.com/agda/agda/issues/2487): Options used for different modules must be consistent with each other, and options used when loading an interface must be consistent with those used when the interface was created
- [#2489](https://github.com/agda/agda/issues/2489): Where clauses in functions leak instances to global instance search
- [#2490](https://github.com/agda/agda/issues/2490): possible non-terminating inference of instance arguments?
- [#2513](https://github.com/agda/agda/issues/2513): Extensible syntax for function space annotations
- [#2548](https://github.com/agda/agda/issues/2548): Move the "Old Reference Manual" to the current documentation
- [#2563](https://github.com/agda/agda/issues/2563): Improve documentation and error reporting related to instance resolution (especially unconstrained metavariables)
- [#2579](https://github.com/agda/agda/issues/2579): Import statements with module instantiation should not trigger an error message
- [#2618](https://github.com/agda/agda/issues/2618): Reflection and pattern-matching lambdas
- [#2670](https://github.com/agda/agda/issues/2670): Instance arguments and multi-sorted algebras
- [#2757](https://github.com/agda/agda/issues/2757): Proposal: split non-strict relevance into shape-irrelevance, parametricity, and runtime-irrelevance
- [#2760](https://github.com/agda/agda/issues/2760): Relax instance search restriction on unconstrained metas
- [#2774](https://github.com/agda/agda/issues/2774): Internal error with sized types
- [#2783](https://github.com/agda/agda/issues/2783): Make more primitive/builtin modules safe?
- [#2789](https://github.com/agda/agda/issues/2789): Narrow and broad options
- [#2791](https://github.com/agda/agda/issues/2791): More illtyped meta solutions
- [#2797](https://github.com/agda/agda/issues/2797): Relevance check missed for overloaded projection
- [#2833](https://github.com/agda/agda/issues/2833): Coverage checker splits on result too eagerly
- [#2837](https://github.com/agda/agda/issues/2837): The Emacs mode only handles LaTeX-based literate Agda
- [#2872](https://github.com/agda/agda/issues/2872): Case splitting adds a dot in front of pattern matches on Chars
- [#2880](https://github.com/agda/agda/issues/2880): Disallow FFI binding for defined functions when --safe is used
- [#2892](https://github.com/agda/agda/issues/2892): 'With' should also abstract over the type of stripped dot patterns
- [#2893](https://github.com/agda/agda/issues/2893): Display warnings also when an error is encountered
- [#2899](https://github.com/agda/agda/issues/2899): Add a warning for infix notations without corresponding fixity declaration
- [#2929](https://github.com/agda/agda/issues/2929): Turn "missing definition" into a warning
- [#2936](https://github.com/agda/agda/issues/2936): Sort warning flags alphabetically in user manual
- [#2939](https://github.com/agda/agda/issues/2939): make install-bin on a Mac can fail to install text-icu
- [#2964](https://github.com/agda/agda/issues/2964): Mismatch between order of matching in clauses and case tree; subject reduction broken
- [#2969](https://github.com/agda/agda/issues/2969): Module parameter is erased from dot pattern
- [#2979](https://github.com/agda/agda/issues/2979): Rewriting matching does not respect eta rules
- [#2993](https://github.com/agda/agda/issues/2993): Quadratic (failing) instance search
- [#3010](https://github.com/agda/agda/issues/3010): Field of opened record does not get highlighted
- [#3032](https://github.com/agda/agda/issues/3032): spurious meta in dot pattern
- [#3056](https://github.com/agda/agda/issues/3056): Matching on irrelevant variable of dependent record type should not be allowed
- [#3057](https://github.com/agda/agda/issues/3057): A module can export two definitions with the same name
- [#3068](https://github.com/agda/agda/issues/3068): Add option to turn off syntactic equality check
- [#3095](https://github.com/agda/agda/issues/3095): Would like to make hidden variable visible but it is created ambiguous
- [#3102](https://github.com/agda/agda/issues/3102): Performance regression: very slow reduction in the presence of many module parameters
- [#3114](https://github.com/agda/agda/issues/3114): Missing alpha-renaming when printing constraints
- [#3120](https://github.com/agda/agda/issues/3120): No tooltips for record field names in record expressions
- [#3122](https://github.com/agda/agda/issues/3122): Hidden record fields are not picked up from module in record expression
- [#3124](https://github.com/agda/agda/issues/3124): De Bruijn index in lhs checking error message
- [#3125](https://github.com/agda/agda/issues/3125): Internal error in InstanceArguments.hs:292
- [#3127](https://github.com/agda/agda/issues/3127): Notation for out-of-scope variables conflicts with notation for irrelevance
- [#3128](https://github.com/agda/agda/issues/3128): Sigma builtin not added to setup, agdai file missing.
- [#3130](https://github.com/agda/agda/issues/3130): Conflict between dot pattern and postfix projection
- [#3137](https://github.com/agda/agda/issues/3137): Preserve Markdown as-is when outputting HTML
- [#3138](https://github.com/agda/agda/issues/3138): Result splitter introduces pattern variable that conflicts with constructor
- [#3139](https://github.com/agda/agda/issues/3139): Internal error in parser
- [#3147](https://github.com/agda/agda/issues/3147): Non-linear as-patterns
- [#3152](https://github.com/agda/agda/issues/3152): `give` in a do-block inserts spurious parentheses
- [#3153](https://github.com/agda/agda/issues/3153): Type checker fails to infer missing signature of module parameter.
- [#3161](https://github.com/agda/agda/issues/3161): Case splitter produces end-of-comment
- [#3169](https://github.com/agda/agda/issues/3169): Doc for rewriting
- [#3170](https://github.com/agda/agda/issues/3170): UnicodeDeclare fails with pdflatex from TeX Live 2018
- [#3175](https://github.com/agda/agda/issues/3175): Instance resolution fails with defined method
- [#3176](https://github.com/agda/agda/issues/3176): Empty lambdas are sometimes considered definitionally equal, other times not
- [#3180](https://github.com/agda/agda/issues/3180): Remove feature `--guardedness-preserving-type-constructors`
- [#3188](https://github.com/agda/agda/issues/3188): Warnings disappear when fatal error is encountered
- [#3195](https://github.com/agda/agda/issues/3195): Internal error at Auto/Typecheck.hs:373
- [#3196](https://github.com/agda/agda/issues/3196): Turning MissingDefinition into a warning
- [#3200](https://github.com/agda/agda/issues/3200): Function marked as irrelevant when it isn't
- [#3201](https://github.com/agda/agda/issues/3201): [ warning ] AbsurdPatternRequiresNoRHS
- [#3205](https://github.com/agda/agda/issues/3205): [ cleanup + warning ] ModuleDoesntExport can be recovered from
- [#3224](https://github.com/agda/agda/issues/3224): Switch from utf8x to utf8? Make agda.sty easier to maintain?
- [#3235](https://github.com/agda/agda/issues/3235): Cannot pass backend flags via emacs variable `agda2-program-args`
- [#3247](https://github.com/agda/agda/issues/3247): Support cabal-install >= 2.4.1.0 in the Makefile
- [#3248](https://github.com/agda/agda/issues/3248): Max of two sizes less than i
- [#3253](https://github.com/agda/agda/issues/3253): [ fix ] ignore duplicate declarations of libraries
- [#3254](https://github.com/agda/agda/issues/3254): `cpphs` doesn't build with GHC 8.6.*
- [#3256](https://github.com/agda/agda/issues/3256): Internal error at src/full/Agda/TypeChecking/Reduce.hs:148
- [#3257](https://github.com/agda/agda/issues/3257): Anonymous top-level modules can have names with multiple components
- [#3258](https://github.com/agda/agda/issues/3258): Ordering the constructor names at Definition.
- [#3262](https://github.com/agda/agda/issues/3262): Suboptimal placement of "missing with-clauses" error
- [#3264](https://github.com/agda/agda/issues/3264): When refine leads to a termination error it should say so rather than "cannot refine"
- [#3268](https://github.com/agda/agda/issues/3268): [ haddock ] Fix haddock formatting
- [#3285](https://github.com/agda/agda/issues/3285): Internal error for syntax declaration
- [#3302](https://github.com/agda/agda/issues/3302): Multiple definitions called _ are sometimes allowed, sometimes not
- [#3307](https://github.com/agda/agda/issues/3307): `--no-unicode` bug: case splitting inside a pattern matching lambda still produces unicode arrows
- [#3309](https://github.com/agda/agda/issues/3309): Use of irrelevant arguments with copatterns and irrelevant fields
- [#3313](https://github.com/agda/agda/issues/3313): Add --html-highlight support for the HTML backend
- [#3315](https://github.com/agda/agda/issues/3315): The primErase primitive is not safe
- [#3318](https://github.com/agda/agda/issues/3318): Lots of primitives and builtins are not declared in the primitive/builtin modules
- [#3320](https://github.com/agda/agda/issues/3320): Extra indentation when code is hidden
- [#3323](https://github.com/agda/agda/issues/3323): Internal error with inconsistent irrelevance info between declaration and definition of data type
- [#3338](https://github.com/agda/agda/issues/3338): Missing Definitions not recognised in instance search
- [#3342](https://github.com/agda/agda/issues/3342): GHC panic on stack and GHC 7.10.3
- [#3344](https://github.com/agda/agda/issues/3344): Disable compilation with GHC 8.6.1
- [#3356](https://github.com/agda/agda/issues/3356): C-c C-s prints postfix projections by default
- [#3363](https://github.com/agda/agda/issues/3363): The wiki should support HTTPS
- [#3364](https://github.com/agda/agda/issues/3364): Funny scope error when trying to import as qualified
- [#3366](https://github.com/agda/agda/issues/3366): Add a command line flag to change the extension of the files generated by the HTML backend
- [#3368](https://github.com/agda/agda/issues/3368): Support GHC 8.6.2
- [#3370](https://github.com/agda/agda/issues/3370): [ fix ] < and > need to be in math mode in latex
- [#3371](https://github.com/agda/agda/issues/3371): Document common LaTeX backend pitfalls
- [#3372](https://github.com/agda/agda/issues/3372): Provide some simple LaTeX backend templates
- [#3373](https://github.com/agda/agda/issues/3373): Wrap HTML in `raw` directive when working with ReStructuredText
- [#3379](https://github.com/agda/agda/issues/3379): Adding a tutorial set in the readthedocs frontpage
- [#3380](https://github.com/agda/agda/issues/3380): Too much erasure in strict backends
- [#3394](https://github.com/agda/agda/issues/3394): Internal error in mutual block with unsolved implicit argument in termination checker
- [#3400](https://github.com/agda/agda/issues/3400): Obscure parse error with copattern and infix field
- [#3403](https://github.com/agda/agda/issues/3403): Internal error in Agda.TypeChecking.Rules.Term
- [#3404](https://github.com/agda/agda/issues/3404): Positivity checker marks postulates as constant in mutual block
- [#3407](https://github.com/agda/agda/issues/3407): Internal error at "src/full/Agda/TypeChecking/Reduce/Fast.hs:1338"
- [#3409](https://github.com/agda/agda/issues/3409): No error if mapping the empty type to non-empty Haskell type
- [#3410](https://github.com/agda/agda/issues/3410): ghc backend generates program that segfaults
- [#3419](https://github.com/agda/agda/issues/3419): Allow unconstrained instances & disallow overlapping instances
- [#3420](https://github.com/agda/agda/issues/3420): Inductive definitions live in a larger set --without-K
- [#3425](https://github.com/agda/agda/issues/3425): Internal error at src/full/Agda/Termination/Monad.hs:177
- [#3426](https://github.com/agda/agda/issues/3426): Termination checking false positive when using "where"
- [#3428](https://github.com/agda/agda/issues/3428): Another interal error in Substitute:72 when filling a hole
- [#3431](https://github.com/agda/agda/issues/3431): Rewrite rule doesn't fire during conversion checking
- [#3434](https://github.com/agda/agda/issues/3434): Regression related to instance resolution
- [#3435](https://github.com/agda/agda/issues/3435): Performance regression
- [#3439](https://github.com/agda/agda/issues/3439): Setω doesn’t respect --type-in-type
- [#3441](https://github.com/agda/agda/issues/3441): Generate Level expressions with fewer parentheses
- [#3442](https://github.com/agda/agda/issues/3442): Support GHC 8.6.3
- [#3443](https://github.com/agda/agda/issues/3443): "internal error" in Agda of December 7, 2018
- [#3444](https://github.com/agda/agda/issues/3444): `Setup.hs` is not generating the interface files
- [#3445](https://github.com/agda/agda/issues/3445): case splitting attempts to shadow constructor
- [#3451](https://github.com/agda/agda/issues/3451): The --no-sized-types option is broken
- [#3452](https://github.com/agda/agda/issues/3452): Case split on irrelevant argument goes through but is later rejected
- [#3454](https://github.com/agda/agda/issues/3454): Highlighting for incomplete pattern matching should be above highliting for non-exact split
- [#3456](https://github.com/agda/agda/issues/3456): [ new ] Injectivity of prim(NatToChar/StringToList)
- [#3461](https://github.com/agda/agda/issues/3461): Macro loop
- [#3463](https://github.com/agda/agda/issues/3463): Impossible to give certain instance arguments by name?
- [#3466](https://github.com/agda/agda/issues/3466): two definitionally equal terms are not equal
- [#3471](https://github.com/agda/agda/issues/3471): Can't install via cabal-install on current Haskell Platform
- [#3480](https://github.com/agda/agda/issues/3480): Parse error at EOF should be reported before EOF (especially if there is a long comment before EOF)
- [#3483](https://github.com/agda/agda/issues/3483): Internal error at TypeChecking/Monad/Signature.hs:732
- [#3485](https://github.com/agda/agda/issues/3485): [ warnings ] for empty primitive blocks
- [#3491](https://github.com/agda/agda/issues/3491): Internal error src/full/Agda/TypeChecking/Rules/LHS.hs:294 after pattern matching
- [#3498](https://github.com/agda/agda/issues/3498): Internal error in activateLoadedFileCache
- [#3501](https://github.com/agda/agda/issues/3501): Case split in let clause causes internal error
- [#3503](https://github.com/agda/agda/issues/3503): Internal error in BasicOps
- [#3514](https://github.com/agda/agda/issues/3514): Accidential language change in 2.5.3: hiding is now part of name when resolving hidden argument insertion
- [#3517](https://github.com/agda/agda/issues/3517): Option consistency checking bug
- [#3518](https://github.com/agda/agda/issues/3518): Performance regression
- [#3521](https://github.com/agda/agda/issues/3521): Documentation: fixes a plural issue in copatterns
- [#3526](https://github.com/agda/agda/issues/3526): Do not generate trivially impossible clause when case-splitting
- [#3533](https://github.com/agda/agda/issues/3533): [ fix #3526 ] Remove trivially impossible clauses from case-split
- [#3534](https://github.com/agda/agda/issues/3534): Problem finding higher-order instances
- [#3536](https://github.com/agda/agda/issues/3536): Patternmatching on coinductive record fields breaks
- [#3544](https://github.com/agda/agda/issues/3544): internal error @ TypeChecking/Forcing.hs:227
- [#3548](https://github.com/agda/agda/issues/3548): [ new ] Add support for compiling literate Org documents
- [#3554](https://github.com/agda/agda/issues/3554): Type checker explosion
- [#3561](https://github.com/agda/agda/issues/3561): fix typo: "FreBSD" => "FreeBSD"
- [#3566](https://github.com/agda/agda/issues/3566): Missing name when printing type of definition of a record
- [#3578](https://github.com/agda/agda/issues/3578): Pattern matching unifier normalizes too much
- [#3586](https://github.com/agda/agda/issues/3586): Internal error in ConcreteToAbstract.hs:2217
- [#3590](https://github.com/agda/agda/issues/3590): Superlinear time required for simple code
- [#3597](https://github.com/agda/agda/issues/3597): Agda loops on simple code with a record and a hole
- [#3600](https://github.com/agda/agda/issues/3600): Size solver complains, explicit sizes work
- [#3610](https://github.com/agda/agda/issues/3610): Support GHC 8.6.4
- [#3621](https://github.com/agda/agda/issues/3621): performance problem
- [#3631](https://github.com/agda/agda/issues/3631): Performance with --no-universe-polymorphism
- [#3638](https://github.com/agda/agda/issues/3638): Rewrite rules do not fire in goal normalization in parametrized module
- [#3639](https://github.com/agda/agda/issues/3639): Argument to function created by tactic is lost
- [#3640](https://github.com/agda/agda/issues/3640): Polarity: Size index check crashes due to wrong parameter number calculation
- [#3641](https://github.com/agda/agda/issues/3641): Remove old compiler pragmas
- [#3648](https://github.com/agda/agda/issues/3648): Agda could fail to build if a .agda-lib file exists in a parent directory
- [#3651](https://github.com/agda/agda/issues/3651): internal error ghc backend
- [#3657](https://github.com/agda/agda/issues/3657): Disable compilation with Windows and GHC 8.6.3
- [#3678](https://github.com/agda/agda/issues/3678): Two out-of-scope variables are given the same name
- [#3687](https://github.com/agda/agda/issues/3687): Show module contents (C-c C-o) prints garbled names in clause
|