Repository navigation
v2.6.3
Release notes for Agda version 2.6.3
Highlights
-
Added support for Erased Cubical Agda, a variant of Cubical Agda that is supported by the GHC backend, under the flag
--erased-cubical. -
Added a new flag
--cubical-compatibleto turn on generation of Cubical Agda-specific support code (previously this behaviour was part of--without-K).Since
--cubical-compatiblemode implies that functions should work with the preliminary support for indexed inductive types in Cubical Agda, many pattern matching functions will now emit anUnsupportedIndexedMatchwarning, indicating that the function will not compute when applied to transports (from--cubicalcode).This warning can be disabled with
-WnoUnsupportedIndexedMatch, which can be used either in anOPTIONSpragma or in youragda-libfile.
The latter is recommended if your project is only--cubical-compatible, or if it is already making extensive use of indexed types.Note that code that uses (only)
--without-Kcan no longer be imported from code that uses--cubical. Thus it may make sense to
replace--without-Kwith--cubical-compatiblein library code, if possible.Note also that Agda tends to be quite a bit faster if
--without-Kis used instead of--cubical-compatible. -
Agda 2.6.3 seems to type-check one variant of the standard library about 30% faster than Agda 2.6.2.2 (on one system; the library was changed in a small way between the tests to accommodate changes to Agda). In that test the standard library did not use the new flag
--cubical-compatible. With that flag enabled in all the files that used to use--without-K(and the warningUnsupportedIndexedMatchturned off) Agda 2.6.3 was still about 10% faster. -
New primitives
declareData,defineData, andunquoteDecl datafor generating new data types have been added to the reflection API.
Installation and infrastructure
Agda supports GHC versions 8.0.2 to 9.4.4.
Erasure
-
The new option
--erased-cubicalturns on a variant of Cubical Agda (see #4701).When this variant of Cubical Agda is used glue (and some related builtins) may only be used in erased settings. One can import
regular Cubical Agda code from this variant of Cubical Agda, but names defined using Cubical Agda are (mostly) treated as if they had
been marked as erased. See the reference manual for more details.The GHC backend can compile code that uses
--erased-cubicalif the top-level module uses this flag.This feature is experimental.
-
Added an option
--erase-record-parametersthat marks parameters to record fields and definitions in a record module as erased (see #4786 and #5770). For example:{-# OPTIONS --erase-record-parameters #-} record R (A : Set) : Set where field f : A test : {@0 A : Set} → R A → A test = R.f
Cubical Agda
-
[Breaking] The generation of Cubical Agda-specific support code was removed from
--without-Kand transferred to its own flag,--cubical-compatible(see #5843 and #6049 for the rationale). -
Cubical Agda now has experimental support for indexed inductive types (#3733).
See the user guide for caveats. -
The cubical interval
Inow belongs to its own sort,IUniv, rather thanSSet. -
For
J : IUnivandA : J → Set l, we have(j : J) → A j : Set l, that is, the type of functions from a type inIUnivto a fibrant type is fibrant. -
The option
--experimental-irrelevanceis now perhaps incompatible with Cubical Agda and perhaps also postulated univalence (see #5611 and #5861).This is not meant to imply that the option was not already incompatible with those things.
Note that--experimental-irrelevancecannot be used together with--safe. -
A new built-in constructor
REFLIDwas added to the cubical identity types.
This is definitionally equal to the reflexivity identification built withconid, with the difference being that matching onREFLIDis allowed.symId : ∀ {a} {A : Set a} {x y : A} → Id x y → Id y x symId reflId = reflId
-
Definitions which pattern match on higher-inductive types are no longer considered for injectivity analysis.
(#6219) -
[Breaking] Higher constructors are no longer considered as guarding in the productivity check.
(#6108) -
Rewrite rules with interval arguments are now supported.
(#4384)
The flat modality
-
[Breaking] The
@flat/@♭modality is now by default disabled (see
#4927).It can be enabled using the infective flag
--cohesion. -
[Breaking] Matching on
@flatarguments is now disabled by default, the flag
--no-flat-splithas been removed, and the flag--flat-splitis
now infective (see #6238
and #6263).Matching can be enabled using the
--flat-splitflag. Note that in
Cubical Agda functions that match on an argument marked with@flat
trigger theUnsupportedIndexedMatchwarning, and the code might
not compute properly.
Reflection
-
Two new reflection primitives
declareData : Name → Nat → Type → TC ⊤ defineData : Name → List (Σ Name (λ _ → Type)) → TC ⊤
are added for declaring and defining datatypes, similar to
declareDefanddefineDef. -
The construct
unquoteDeclis extended with the ability of bringing
a datatypedand its constructorsc₁ ... cₙgiven by aTC
computationminto scope by the following syntax:unquoteDecl data x constructor c₁ .. cₙ = m
-
A new reflection primitive
getInstances : Meta → TC (List Term)
was added toAgda.Builtin.Reflection. This operation returns the
list of all possibly valid instance candidates for a given
metavariable. For example, the following macro instantiates the goal
with the first instance candidate, even if there are several:macro pickWhatever : Term → TC ⊤ pickWhatever hole@(meta m _) = do (cand ∷ _) ← getInstances m where [] -> typeError (strErr "No candidates!" ∷ []) unify hole cand pickWhatever _ = typeError (strErr "Already solved!" ∷ [])
-
[Breaking] The reflection primitives
getContextandinContextuse a nominal context
List (Σ String λ _ → Arg Type)instead ofList (Arg Type)for printing
type information better. Similarly,extendContexttakes an extra argument
of typeString. -
macrodefinitions can now be used even when they are declared as erased.
For example, this is now accepted:macro @0 trivial : Term → TC ⊤ trivial = unify (con (quote refl) []) test : 42 ≡ 42 test = trivial
-
A new reflection primitive
formatErrorParts : List ErrorPart → TC String
is added. It takes a list ofErrorPartand return its formatted string. -
[Breaking] A new constructor
pattErr : Pattern → ErrorPartofErrorPartfor reflection
is added. -
[Breaking] The reflection primitives
getTypeand
getDefinitionrespect the module context they are invoked from
instead of returning information that would be expected in the top
context. -
[Breaking] The reflection primitive
inContextcannot step
outside of the context that theTCcomputation is invoked from
anymore. The telescope is now relative to that context instead.
Syntax
-
It is now OK to put lambda-bound variables anywhere in the
right-hand side of a syntax declaration. However, there must always
be at least one "identifier" between any two regular "holes". For
instance, the following syntax declaration is accepted because-
is between the holesBandD.postulate F : (Set → Set) → (Set → Set) → Set syntax F (λ A → B) (λ C → D) = B A C - D
-
Syntax can now use lambdas with multiple arguments
(#394).Example:
postulate Σ₂ : (A : Set) → (A → A → Set) → Set syntax Σ₂ A (λ x₁ x₂ → P) = [ x₁ x₂ ⦂ A ] × P
Builtins
-
[Breaking] Change
primFloatToWord64to returnMaybe Word64.
(See #6093.)The new type is
primFloatToWord64 : Float → Maybe Word64
and it returns
nothingforNaN. -
[Breaking] The type expected by the builtin
EQUIVPROOFhas been changed to
properly encode the condition thatEQUVIFUNis an equivalence.
(#5661,
#6032) -
[Breaking] The primitive
primIdJhas been removed
(#6032) in favour of
matching on the cubical identity type. -
[Breaking] The builtin
SUBINis now exported fromAgda.Builtin.Cubical.Subas
inSrather thaninc. Similarly, the internal modules refer to
primSubOutasoutS. (#6032)
Pragmas and options
-
It is now possible to declare several
BUILTIN REWRITErelations.
Example:{-# OPTIONS --rewriting #-} open import Agda.Builtin.Equality open import Agda.Builtin.Equality.Rewrite -- 1st rewrite relation postulate R : (A : Set) → A → A → Set A : Set a b c : A foo : R A a b -- using 2nd rewrite relation bar : b ≡ c -- using 1st rewrite relation {-# BUILTIN REWRITE R #-} -- 2nd rewrite relation {-# REWRITE foo bar #-} test : a ≡ c test = refl
-
[Breaking] The option
--experimental-lossy-unificationthat
makes Agda sometimes use first-order unification has been renamed to
--lossy-unification
(#1625).Note that use of this option is associated with some potential
drawbacks. -
The new option
--no-load-primitivescomplements--no-import-sorts
by foregoing loading of the primitive modules altogether. This option
leaves Agda in a very fragile state, as the built-in sorts are used
extensively throughout the implementation. It is intended to be used
by Literate Agda projects which want to bindBUILTIN TYPE(and
other primitives) in their own literate files. -
If
--interaction-exit-on-erroris used, then Agda exits with a
non-zero exit code if--interactionor--interaction-jsonare
used and a type error is encountered. The option also makes Agda
exit with exit code 113 if Agda fails to parse a command.This option might for instance be used if Agda is controlled from a
script. -
Add a
NOT_PROJECTION_LIKEpragma, which marks a function as not
suitable for projection-likeness. Projection-like functions have some of
their arguments erased, which can cause confusing behaviour when they
are printed instantiated (see #6203). -
[Breaking] The options
--subtypingand--no-subtypinghave been removed
(see #5427).
Profiling and performance
-
New verbosity
-v debug.time:100adds time stamps to debugging output. -
[Breaking] Profiling options are now turned on with a new
--profileflag
instead of abusing the debug verbosity option. (See
#5781.) -
The new profiling option
--profile=conversioncollects statistics
on how often various steps of the conversion algorithm are used
(reduction, eta-expansion, syntactic equality, etc). -
Meta-variables can now be saved in
.agdaifiles, instead
of being expanded. This can affect performance. (See
#5731.)Meta-variables are saved if the pragma option
--save-metasis
used. This option can be overridden by--no-save-metas. -
The new option
--syntactic-equality[=FUEL]can be used to limit
how many times the syntactic equality shortcut is allowed to fail
(see #5801).If
FUELis omitted, then the syntactic equality shortcut is
enabled without any restrictions.If
FUELis given, then the syntactic equality shortcut is given
FUELunits of fuel. The exact meaning of this is
implementation-dependent, but successful uses of the shortcut do not
affect the amount of fuel. Currently the fuel is decreased in the
failure continuations of the implementation of the syntactic
equality shortcut. When a failure continuation completes the fuel is
restored to its previous amount.The idea for this option comes from András Kovács'
smalltt.Note that this option is experimental and subject to change.
Library management
-
Library files below the "project root" are now ignored
(see #5644).For instance, if you have a module called
A.B.Cin the directory
Root/A/B, then.agda-libfiles inRoot/AorRoot/A/Bdo not
affect what options are used to type-checkA.B.C:.agda-lib
files forA.B.Chave to reside inRoot, or further up the
directory hierarchy.
Interaction
- Agsy (automatic proof search) can
now be invoked in the right-hand-sides of copattern matching clauses.
(#5827)
Compiler backends
-
[Breaking] Both the GHC and JS backends now refuse to compile code that uses
--cubical.Note that support for compiling code that uses
--erased-cubical
has been added to the GHC backend (see above). -
If the GHC backend is invoked when
--interactionor
--interaction-jsonis active (for instance when the Emacs mode is
used), then GHC is now invoked from the directory containing the
MAlonzodirectory (see
#6194).Before GHC was invoked from the Agda process's current working
directory, and that is still the case if--interactionand
--interaction-jsonare not used.
DOT backend
-
The new option
--dependency-graph-include=LIBRARYcan be used to
restrict the dependency graph to modules from one or more libraries
(see #5634).Note that the module given on the command line might not be
included. -
The generated graphs no longer contain "redundant" edges: if a
module is imported both directly and indirectly, then the edge
corresponding to the direct import is omitted.
JSON API
- [Breaking] The JSON API now represents meta-variables differently, using
objects containing two keys,idandmodule, both with values
that are (natural) numbers. See
#5731.
Other issues closed
For 2.6.3, the following issues were also closed (see bug
tracker):
- #3660: Wrong variable name in constraints for higher constructor
- #3986: Subtyping
.A -> B <= A -> Bleads to wrongArgInfo - #4103: Rewrite rule rejected because of projection likeness
- #4506: Lack of unicode support in locale may result in uncaught
IOException - #4725: Cubical Agda: Program rejected by termination checker due to moved dot pattern
- #4755: Rewrite rule on constructor uses wrong type for matching
- #4763: Cubical Agda: Unquote anonymous copattern involving path
- #5191: Unifier can use erased variables in non-erased data parameters
- #5257: Internal error when matching on user syntax with binding
- #5378: Internal error with tactic on record field
- #5448: Should the predicate be erasable in the subst rule (without-K)
- #5462: Internal error caused by a REWRITE on a projection-like function
- #5468: Disallow certain forms of pattern matching when an index is erased
- #5525: Duplicate entries in
executablesfile lead to undefined behavior - #5548: Agda infers an incorrect type with subtyping on
- #5551: Panic when showing module contents with pattern synonym
- #5563: Allow erased names in the type signatures of let-bound definitions
- #5577: The "Could not generate equivalence" warning is not always emitted
- #5581: Lexical error with tab character in literate Agda text
- #5589: Internal error with REWRITE of function from path
- #5681: Panic on record declaration with unknown sort
- #5702: Can't case split an
HitIntwith some already existing cases - #5715: Reflection: Use
TelescopeforgetContext,inContext, andextendContext - #5727: Reducing universe levels before checking is not sufficient
- #5728: Internal error when pattern matching on
...in with statement without providing a pattern match - #5734: Relevance check in reflection
- #5751: json interaction produces Haskell output for
SolveAll - #5754: Internal error when compiling program with quoted metavariable
- #5760: Some code related to Cubical Agda runs also when the K rule is on
- #5763: Internal parser error using syntax rules
- #5765: Erasure check failure when pattern matching on refl in erased definition
- #5775: JSON interaction produces fully qualified terms
- #5794: Agsy/Auto crashes with
Prelude.!!: index too large - #5823: Singleton check loops on recursive eta record
- #5828: Agsy/Auto panics with
-rin the presence of a pattern synonym - #5845: Internal error caused by abstracting
variables - #5848: Internal error with
--confluence-check - #5850: Warn about useless hiding in
variabledeclaration - #5856: Lambda with irrefutable pattern is not rejected when used on Path
- #5868: Document
--two-level - #5875: Instance Search breaks Termination Highlighting
- #5891:
SizeUniv : SizeUnivis inconsistent - #5901: Use
emacs --batchmode inagda-modesetup - #5920: Erased constructors skipped in modality check
- #5922: Failure of termination checking for reflection-generated code due to data projections
- #5923: Internal error in rewriting
- #5944: Internal error in rewriting with
--two-level - #5953: Recursor of inductive-inductive type does not pass termination check in Cubical Agda
- #5955: Composition of Glue Type Causes Infinite Loop
- #5956: Cubical Agda crashes when printing empty system
- #5966: Improved performance by switching to
vector-hashtables - #5989: Dead-code elimination crashes function with private tactic argument
- #6003: de Bruijn index out of scope when rewriting
- #6006: Internal error rewriting with holes
- #6015: Pi types and Partial types should not be considered inter-convertible
- #6022: Private bindings in imported modules defeat check for binding of primIdFace/primIdPath
- #6042: De Bruijn index out of scope when rewriting without-K
- #6043: de Bruijn error on unexpected implicit argument
- #6059: Non-terminating function over tuples passed with
--termination-depth=2 - #6066: Document the meaning of
patternwithoutno-eta-equality - #6067: Another de Bruijn error in rewriting
- #6073: Constraint solving does not honour singleton types
- #6074:
piSort/funSortofIUnivshould be blocked on the codomain - #6076: Agda input mode (emacs): Minibuffer display for
\;is strange - #6080: A space leak due to
absName - #6082: Elaborate-and-give does not respect
--postfix-projections - #6095: Ambiguous pattern synonyms broken with anonymous module
- #6112: Internal error: non-confluent rewriting to singletons
- #6200: The reflection machinery does not treat the module telescope consistently
- #6203: Projection-likeness and instance arguments
- #6205: Internal error with
withReconstructed - #6244: Make
--no-load-primitivesnot--safe - #6250: Documentation says
--sized-typesis the default when it isn't - #6257: Document options
--prop,--guarded, and--two-level. - #6265: Some options should be listed in
restartOptions - #6273: Missing highlighting when interleaved mutual is used
- #6276: LaTeX/HTML generation doesn't properly render parameters of pre-declared records
- #6281: Special treatment of attribute followed by underscore in pretty-printer
- #6337:
--lossy-unificationin Agda 2.6.3 - #6338: internal error in Agda, perhaps related to
--rewriting - #6377: Fix installation docs concerning icu libraries
- #6379: Weird warning for instance declarations of bad type
Merged PRs
- [cubical] Fibrant unbased path types by @ecavallo in #5439
- Remove -j1 from cabal v1-configure flags by @knrafto in #5455
- add back 2nd method of include code using catchfilebetweentags. by @JacquesCarette in #5445
- [ fix #5433 ] place HTML-backend files in data/html by @andreasabel in #5474
- [ fix #5470 ] skip getConstInfo if freeVarsToApply = 0 by @andreasabel in #5472
- Give
agda.stya version by @andreasabel in #5475 - [ fix #5471 ] by swapping \textcolor and \AgdaXXXStyle in agda.sty by @andreasabel in #5476
- import Data.List selective or qualified by @andreasabel in #5477
- [ fix #5465 ] keep Parser.y in ASCII by @andreasabel in #5479
- [ fix #5480 ] Makefile: use sed instead of gawk (for macOS sake) by @andreasabel in #5482
- [ fix #5478 ] properly reuse IP Meta in a record context by @andreasabel in #5483
- [ fix #5478 ] more completely, also the OP by @andreasabel in #5485
- [ fix #5489 fix #5490 ] Emacs: C-c C-x C-a (abort) by @andreasabel in #5491
- [ re #5500 ]
make install-binand similar targets add a version suffix by @L-TChen in #5503 - Add Nix flake to allow Nix users to install from git. by @shlevy in #5502
- [ #5492 ] turn internal error into a failed constraint by @andreasabel in #5493
- [ workflow ] Let pacman choose what file to install ICU4C by @L-TChen in #5512
- [ makefile, fix #5503 ] Do not add any additional suffix to
quicker-install-binand etc. by @L-TChen in #5511 - Fix #5508 by @andreasabel in #5510
- Bumped LTS for GHC 8.10.4 (LTS 18.0 -> LTS 18.5). by @asr in #5517
- [ doc ] Fix a link in overview by @fangyi-zhou in #5516
- [ fix #5291 ] lexer lookAhead: proper longest match procedure by @andreasabel in #5522
- Fix #5283: reject 'tactic' expressions in scope checker by @andreasabel in #5523
- [ ghc-8.10.6 ] Used LTS 18.7. by @asr in #5529
- [ fix #5506 ] by turning the crashed case into a conservative handling by @andreasabel in #5518
- [ fix #5532 ] CompilationOK now reports backend which was run by @andreasabel in #5533
- [ fix #4940 ] abs path into exec-tc/executables; try to properly reset env by @andreasabel in #5534
- [ #5302 ] running tests with
cabal testby @andreasabel in #5535 - [ fix #5396 #5531 ] Replace some impossible's by failure if --rewriting is enabled by @jespercockx in #5538
- Fix #5398 by @andreasabel in #5520
- [ fix #5302 ] make 'cabal test' work for part of the test-suite by @andreasabel in #5536
- Add greek super/subscript characters and z notation composition to ag… by @phadej in #5542
- [ fix #5545 ] lexer: commit to match at eof by @andreasabel in #5546
- [ fix #4814 ] print PATH when agda-mode cannot find emacs by @andreasabel in #5550
- Update installation.rst by @plragde in #5552
- Fix #5557: doc --print-agda-dir and how to get Agda.css and agda.sty by @andreasabel in #5561
- [ fix #5558 ] add new fatal warning MissingDeclarations by @gallais in #5559
- [ workflows ] use YAML references to prune duplicate file lists by @andreasabel in #5556
- [ workflow ] Simplify stack.yml using stack-root output by @andreasabel in #5572
- Workflows use latest by @andreasabel in #5575
- Fix #5581: Allow tabs in literate parts of a .lagda file by @andreasabel in #5582
- Fix
compCCHM(primComp) parameter visibility in primitive library by @ice1000 in #5587 - Added Peter Selinger's course. by @selinger in #5591
- [ cabal ] Bump outdated dependencies by @andreasabel in #5594
- Fix #5593: compatibility with aeson-2 by @andreasabel in #5595
- [ docs ] fix typo,
\\->\by @alissa-tung in #5597 - Re #5549: latex-html-test: sanitize Agda output (Windows compatibility) by @andreasabel in #5598
- Re #5549: cleanOutput: santize backslashes in pwd by @andreasabel in #5599
- Fixed #5602. by @nad in #5603
- Add support for higher constructors to --erased-cubical by @nad in #5604
- [ #5427 ] Removed support for subtyping for erasure and irrelevance. by @nad in #5608
- [ #4786 ] Made parameters erased. by @nad in #5366
- Issue5070 by @andreasabel in #5526
- [ fix #5610 ] Bypass typechecking when binding musical coinduction primitives by @jespercockx in #5614
- Fixed #394 by @nad in #5573
- Added a pragma to the 'Hello world' program example with the standard library by @Riki1312 in #5623
- Allow hashable-1.4 by @andreasabel in #5624
- [ user manual ] Add warning not to install emacs-mode from melpa by @madjestic in #5621
- Fix #5610 for real now by @jespercockx in #5615
- [ #4878 ] Replace biginteger.js with native BigInt by @mastarija in #5636
- [ re #5579 #5576 ] Less injecitivity with --cubical by @Saizan in #5639
- Some changes related to the DOT backend by @nad in #5640
- Fix for #5469 by @jespercockx in #5650
- [ fix #5481 ] Disallow splitting on inductive record types in Prop by @jespercockx in #5651
- [ fix #5544 ] instantiateFull also in checkpoints map in OpenThing by @andreasabel in #5554
- Don't warn about abstract alias if the type is a solved meta by @UlfNorell in #5656
- Fix #5657: isProjection might fail on an A.Proj, so, not IMPOSSIBLE by @andreasabel in #5658
- Fix #5655 (cifm): use
githubpackage with flagopensslby @andreasabel in #5660 - Fix for Issue #5565 by @jespercockx in #5663
- Fixed #5441 by @nad in #5653
- [ fix #5633 ] Take into account that C.LHSWith can be nested by @jespercockx in #5669
- Relax upper bound of
hashtablesto < 1.4 by @andreasabel in #5671 - [ fix #5600 ] alwaysUnblock when comparing MissingClauses neutrals by @Saizan in #5672
- [ fix #5539 ] Update installation.rst by @L-TChen in #5679
- [ reflection ] Add new primitive
getInstancesby @jespercockx in #5674 - #5683: don't generalize if we're already generalizing by @UlfNorell in #5684
- #5583: instance constructors from applied modules should be candidates too by @UlfNorell in #5685
- [ #5683 ] simplify test by @omelkonian in #5688
- [ doc #1625 ] documented
--experimental-lossy-unificationby @Saizan in #5690 - Fix for #5696 & #5700 + refactorings by @jespercockx in #5701
- Fix #5705 fix #5706: switch to Integer in Agda.Utils.Suffix by @andreasabel in #5707
- Fix #5710: use
cabal user-configto add extra-*-dirs settings by @andreasabel in #5713 - [ cabal ] allow text-2.0; remove duplicate build constraints by @andreasabel in #5709
- Fix #5712: coverage: trailing args inserting in presence of
domTacticby @andreasabel in #5717 - Fix #5718: compatibility with
bytestring-0.11.2by @andreasabel in #5723 - Some optimisations by @nad in #5733
- [ #5731 ] Optimised metasCreatedBy. by @nad in #5736
- [ close #5715 ] Use
Telescopeinstead ofList (Arg Type)in the reflection API by @L-TChen in #5716 - Issues #5741 and #5742 by @nad in #5743
- Allow running of erased macros by @jespercockx in #5744
- #1948 by @nad in #5748
- #4506 by @nad in #5746
- use prettyShow instead of show for JSON solveAll by @isovector in #5752
- Add a primitive to format
Reflection.ErrorPartsand a built-in constructorPattern -> ErrorPartby @L-TChen in #5749 - Replace a use of fail in ST by an IMPOSSIBLE by @andreasabel in #5766
- Fix #5659: port
instance Monad (TCMT m)totransformers-0.6by @andreasabel in #5772 - #5731 by @nad in #5756
- Fixed #5760 by @nad in #5777
- Re #5773: workflows/deploy/windows: install ICU via pacman by @andreasabel in #5779
- Fix #5758 by @andreasabel in #5759
- Fix #5773: doc: link to ICU installation instructions by @andreasabel in #5783
- #5763: Don't include operators with binders when parsing patterns by @UlfNorell in #5785
- Fix for issue #5765 by @jespercockx in #5767
- #5762: don't check executable existence and permissions until it's called by @UlfNorell in #5786
- [ fix #5787 ] Leave checking of modality of instance candidates to later by @jespercockx in #5788
- [ fix #5789 ] Run macro for tactic argument with the proper modality by @jespercockx in #5790
- Added (!!) by @nad in #5795
- Issue 5781: specific option for profiling instead of -v abuse by @UlfNorell in #5796
- Support
mtl-2.3-rc3: fix imports to make up for removed re-exports by @andreasabel in #5798 - Make unqualified JSON goal types by @isovector in #5776
- Pretty-print constraints in JSON interaction by @ashinkarov in #5792
- Changes related to issue #5801 by @nad in #5802
- [ fix #5563 ] Allow erased variables in type signatures in let by @flupe in #5803
- Code related to issues #2506 and #2767 by @nad in #5812
- Fix regression #5784 by @andreasabel in #5811
- [ fix #5807 ] Clarify --irrelevant-projections and irrAx. by @jamestmartin in #5814
- Fix #5819 by reverting the blamed commit by @andreasabel in #5821
- Support GHC 9.2.2 by @andreasabel in #5822
- CI deploy/mac: bump ICU version by @andreasabel in #5826
- Re #5822: only silence stack when running ghc through it by @andreasabel in #5829
- An optimisation by @nad in #5830
- Fix #5809: retain parameters for irrelevant projections. by @andreasabel in #5815
- Fix #957: Agsy copattern support by @isovector in #5827
- [ fix #5805 ] Catch pattern violations in
checkTypeby @jespercockx in #5832 - Fix #5823: checking for loops when constructing singleton inhabitant by @andreasabel in #5844
- User manual: Clarify that current directory is not included when using -l by @oskeri in #5849
- [ stack ] Bumped to lts-19.0 for GHC 9.0.2. by @asr in #5852
- Fix #5850: warn about hiding in e.g.
variable {x} : Aby @andreasabel in #5853 - Makefile: restore cubical-test: pass AGDA_BIN instead of AGDA_EXEC by @andreasabel in #5855
- Move stack-9.2.2.yaml to nightly-2022-03-26 by @andreasabel in #5854
- Fix #5838: update Cubical reductions according to Simon Huber by @andreasabel in #5846
- Fix #5856: error out on pattern in path lambda by @andreasabel in #5857
- Issue 5843: rename --without-K to --cubical-compatible by @UlfNorell in #5862
- Link to the docs on ill-typed
withabstractions in the error message by @ncfavier in #5866 - [ workflows ] stack: add GHC version to cache key by @andreasabel in #5871
- flake: update and add a devShell by @ncfavier in #5870
- [ closed #5876 ] Added
-Wunicode-bidirectional-format-characterswarning by @asr in #5877 - [ .cabal ] Added new
-Wredundant-bang-patternswarning (since GHC 9.2) by @asr in #5879 - [ opt ] cubical: BoolSet for Set Bool and IntMap for Map Int by @andreasabel in #5872
- Fix #5875: do not killRange meta-solutions by @andreasabel in #5881
- Pacify hlint to some extent by @andreasabel in #5882
closed-issues-for-milestone: Efficient retrieval of milestone (needs unreleasedgithub-0.28) by @andreasabel in #5691- [ build ] tweaking build options by @gallais in #5888
- Fix #5891: Postponable check that data isn't IUniv, SizeUniv,… by @andreasabel in #5892
- Fix #5728: proper error on misplaced ellipsis rather than internal error by @andreasabel in #5895
- [ Makefile ] goal continue-cubical-test; update cubical submodule by @andreasabel in #5904
- Fix typo in #5905
- [ workflows ] try to fix stack/Win (ICU again) by @andreasabel in #5909
- Provenance of where modules in Internal syntax. by @omelkonian in #5906
- Qualify some prelude functions in .ghci by @oskeri in #5911
- Fix #5901: use --batch when installing agda-mode for emacs by @andreasabel in #5908
- User-manual: small improvements to section on
postulateby @andreasabel in #5916 - Cosmetical changes in cubical basis by @andreasabel in #5907
- Fixed #5920. by @nad in #5921
- Re #5924: add LANGUAGE TypeOperators to pacify GHC 9.4 by @andreasabel in #5925
- Re #5901: setup agda-mode: don't --no-site-file with --user by @andreasabel in #5919
- Close #5918 (doc copatterns) by @andreasabel in #5927
- [ re #5923 ] Don't apply rewrite rule instead of generating dummy terms when variables are not bound after matching by @jespercockx in #5928
- [ closed #5932 ] Added
Werroras workaround. by @asr in #5933 - [ fixed #5938 ] Removed warning generated by Sphinx 5.0.0. by @asr in #5939
- [ closed #5935 ] Updated GitHub workflows. by @asr in #5937
- Fix #5942 (bullet lists in docs) by updating sphinx_rtd_theme by @andreasabel in #5943
- [ fixed #5940 ] Removed warning on MacOS. by @asr in #5941
- Use the word 'underscore' in the documentation for Implicit Arguments by @akrmn in #5946
- Fix #5944: allow rewriting to match on SSet by @andreasabel in #5947
- Re #4479: cosmetical surgery on partitionM by @andreasabel in #5949
- Fix #5922: reduce data projection applied to data constructor by @andreasabel in #5950
- Bump CI to GHC 9.2.3 by @andreasabel in #5951
- Fix typo in sort-system.lagda.rst by @favonia in #5954
- Re #5887: CI stack.yml: skip lockfile generation by @andreasabel in #5957
- Re #4725 #5953: termination: consider dotted variable and record patterns by @andreasabel in #5958
- New verbosity -v debug.time:100 adds time stamps to debugging output by @andreasabel in #5959
- Fixed #5611? by @nad in #5861
- Allow aeson-2.1 by @andreasabel in #5960
- [ #5966 ] Increased the lower bound for hashtables. by @nad in #5968
- Improve fix #5963: make sure user-modified agda.sty is not overwritten by @andreasabel in #5965
- [ #5966 ] Switched from hashtables to vector-hashtables. by @nad in #5969
- [ fix #5727 ] Normalise level expressions before checking convertibility by @L-TChen in #5971
- Allow several BUILTIN REWRITE relations by @andreasabel in #5973
- Minor deserialisation optimisations by @SquidDev in #5980
- [ fix #5770 ] Add option --erase-record-parameters by @jespercockx in #5771
- Use a hashmap lookup for decoding warning names by @SquidDev in #5977
- [ workflows ] test.yml should only depend on itself from .github/ by @andreasabel in #5987
- Fix a typo in doc on sorts by @tensorknower69 in #5990
- More efficient encoding of maps in interface files by @SquidDev in #5984
- [ workflows ] Check for json2yaml-0.11.8.0 when
makeing the.ymlfiles by @andreasabel in #5988 - Fix #5989: also track names (and metas) in tactic arguments by @andreasabel in #5991
- GitHub issue template by @andreasabel in #5986
- Fix #5956: reify empty system to absurd lambda by @andreasabel in #5994
- Fix link in documentation by @felixwellen in #5995
- [ fix #4755 ] Disallow non-linear occurrences of pattern variables in parameter positions by @jespercockx in #5996
- fixed typo in example test invociation in HACKING.md by @marcinjangrzybowski in #6000
- Pre-compute takenDefNames set in AbstractToConcrete by @SquidDev in #5998
- Do not construct a full map when finding a single name by @SquidDev in #6014
- Fix #6011: explicit error on garbage BUILTIN REWRITE by @andreasabel in #6021
- Only recur for comparing in Glue if φ breaks down by @plt-amy in #6013
- Bump cabal.yml workflow to GHC 9.4.1 by @andreasabel in #6023
- [ fix #6006 ] Postpone check for unsolved metas until building of pattern by @jespercockx in #6024
- [ fix #6003 ] Add missing call to
underAbstractiontoinsertImplicitPatternsTby @jespercockx in #6025 - Add mathematical bold letter shortcuts by @thorimur in #6028
- CI: Use known-good version of ICU on windows by @plt-amy in #6030
- Restrict type of equivProof; Remove primIdJ; Rename ouc→outS everywhere by @plt-amy in #6032
- Clean up cubical primitives by @plt-amy in #6034
- Add --no-load-primitives to disable loading Agda.Primitive by @plt-amy in #6039
- [ workflows ] bump fix-whitespace to 0.0.10 by @andreasabel in #6045
- Documentation of using/renaming/hiding clauses for names that are both object and module by @anuyts in #6046
- [ re #5399 #3699 ] Add primitives
tcDeclareData,tcDefineData, and a syntax for declaring top-level datatype definitinons by metaprograms by @Zekt in #5978 - Fix a probable typo in changelog (
ISet->IUniv) by @ice1000 in #6052 - [ fix #5681 ] Add postponed fibrancy check to UsableAtModality constraint by @jespercockx in #6048
- Fix for issue #5699 by @jespercockx in #6057
- Refine #5672 (fix for #5600) by @andreasabel in #6058
- add \sqrt as an alias for \surd by @mikeshulman in #6065
- Add some missing arrows to input mode by @mikeshulman in #6062
- Fix #6059: inconsistency in the termination order by @andreasabel in #6069
- [ re #1625 ] Rename --experimental-lossy-unification -> --lossy-unification by @jespercockx in #6072
- add 'Z NOTATION SCHEMA COMPOSITION' to ; by @mikeshulman in #6064
- add Z NOTATION RELATIONAL COMPOSITION to \z; by @mikeshulman in #6078
- add mathematical bold greek letters by @mikeshulman in #6063
- Issue6067 by @jespercockx in #6083
- [ re #5765 ] Use same modality as parent for generated
withfunctions by @jespercockx in #6084 - Check for duplicates in executables file by @UlfNorell in #6086
- [ fix #6043 ] Already fixed, added test case by @jespercockx in #6094
- [ fix #6076 ] Remove right-to-left characters from Agda input method. by @sattlerc in #6081
- Some potential optimisations by @nad in #6092
- Lots of mostly small changes by @nad in #6098
- Removed all data instances by @nad in #6104
- Bump
strictto0.4.0.1by @nad in #6105 - Switched to Cabal 1.24 by @nad in #6109
- Fix #6108: higher constructors are not guardedness-preserving by @andreasabel in #6115
- Fixed #5225 by @nad in #6110
- Fix broken nix flake by @MatthiasHu in #6117
- Added the module Agda.Syntax.Scope.Flat by @nad in #6121
- Fix for #5828 by @jespercockx in #6127
- Fix for #5462 by @jespercockx in #6075
- Fix #6132: exclude Sphinx 5.2.0.post0 by @andreasabel in #6133
- Re #4723: better error (WAS: crash due to incomplete record update) by @andreasabel in #6131
- Fix for issue #5551 by @jespercockx in #6126
- add some more fullwidth characters by @mikeshulman in #6077
- Document LuaLaTeX fallback fonts by @lawcho in #6089
- improve documentation of dot patterns by @mikeshulman in #6144
- Fix #6082: recover Proj and Con when converting reflected Def to abstract by @andreasabel in #6147
- Fix #6137: add
-Wincomplete-record-updatesby @andreasabel in https://github.com/agda/agda/pull/6142 - Fix #5794: Auto: "no solutions" rather than de Bruijn crash by @andreasabel in https://github.com/agda/agda/pull/6150
- Fix #6095: allow ambiguous pattern synonyms in
checkForClashes. by @andreasabel in https://github.com/agda/agda/pull/6151 - Re #6001: Hard error when hcomp is tried on possibly non-fibrant type by @andreasabel in https://github.com/agda/agda/pull/6153
- Fix #6022 crudely: do not subject primitives to dead-code removal by @andreasabel in https://github.com/agda/agda/pull/6152
- Switched to a version of the standard library that supports GHC 9.4 by @nad in https://github.com/agda/agda/pull/6148
- Fix #6157: remove dead ETel constructor from syntax by @andreasabel in https://github.com/agda/agda/pull/6158
- Issue6093: Change primFloatToWord64 to return a Maybe by @UlfNorell in https://github.com/agda/agda/pull/6156
- Fix #6066: documentation for redundant
patterndirective in records by @andreasabel in https://github.com/agda/agda/pull/6160 - [ #4506 ] Modified the error message again by @nad in https://github.com/agda/agda/pull/6162
- Fix #6165 by not insisting on
builtinSetin the scope checker by @andreasabel in https://github.com/agda/agda/pull/6167 - Only compile Agda.Primitive if it was visited by @plt-amy in https://github.com/agda/agda/pull/6161
- Separate ".(IsOne φ)→A" and "Partial φ A" by @andreasabel in https://github.com/agda/agda/pull/6159
- re #6073: treat Sub A i1 x as singleton by @plt-amy in https://github.com/agda/agda/pull/6171
- Bump actions/setup-python from 2 to 4 by @dependabot in https://github.com/agda/agda/pull/6177
- Fix Agda input giving two characters at the same time for few of the inputs by @szumixie in https://github.com/agda/agda/pull/6175
- Move
\langleand\rangleto be the first choices for\<and\>by @szumixie in https://github.com/agda/agda/pull/6176 - Re #6035: make
WhyInScopeexplanation part ofAmbiguousNameerror by @andreasabel in https://github.com/agda/agda/pull/6174 - Some small changes by @nad in https://github.com/agda/agda/pull/6164
- Fix issue #5845 by @jespercockx in https://github.com/agda/agda/pull/6178
- Fix #6173 by @andreasabel in https://github.com/agda/agda/pull/6180
- Fix #6168 by using
getBuiltininlevelType. Proper error over crash. by @andreasabel in https://github.com/agda/agda/pull/6169 - Fix for issue #5894 by @jespercockx in https://github.com/agda/agda/pull/6184
- Fix for #6113 by @jespercockx in https://github.com/agda/agda/pull/6186
- Revert optimization of
findOverlapby @szumixie in https://github.com/agda/agda/pull/6187 - Optimised TopLevelModuleName, removed SourceToModule and one instance of canonicalizeAbsolutePath by @nad in https://github.com/agda/agda/pull/6183
- [ fix #6112 ] Make rewriting more robust in presence of non-confluent rules by @jespercockx in https://github.com/agda/agda/pull/6190
- Re #6187: Agda.Utils.List.findOverlap: complexity and QuickCheck property by @andreasabel in https://github.com/agda/agda/pull/6193
- Refactoring: structured errors in library file parsing and handling by @andreasabel in https://github.com/agda/agda/pull/6188
- [ #4506 ] Too many exceptions were caught by @nad in https://github.com/agda/agda/pull/6195
- Bump styfle/cancel-workflow-action from 0.10.1 to 0.11.0 by @dependabot in https://github.com/agda/agda/pull/6196
- Keep covering clauses of function definitions by @jespercockx in https://github.com/agda/agda/pull/3909
- Bump workflows to latest virtual environments and Haskell versions by @andreasabel in https://github.com/agda/agda/pull/6202
- Fix for #6205 by @jespercockx in https://github.com/agda/agda/pull/6206
- Profiling of conversion checking by @jespercockx in https://github.com/agda/agda/pull/6199
- [ re #1113 ] Undo fix of #5600 in #5672 by @jespercockx in https://github.com/agda/agda/pull/6208
- Parts of pull request #6099 by @nad in https://github.com/agda/agda/pull/6210
- re #6060: remove partial matching on trFillTel by @plt-amy in https://github.com/agda/agda/pull/6213
- Fix for issue #6211 by @jespercockx in https://github.com/agda/agda/pull/6215
- Add support for GHC 9.4.2 under stack and fix #6128 by @andreasabel in https://github.com/agda/agda/pull/6216
- Update label list in closed-issues-for-milestone by @jespercockx in https://github.com/agda/agda/pull/6217
- Fix #5702: DefP can't cover VarP by @plt-amy in https://github.com/agda/agda/pull/6214
- re #6047: Just enough injectivity with --cubical by @plt-amy in #6219
- Made --cubical-compatible less coinfective by @nad in https://github.com/agda/agda/pull/6221
- re #6017: add a Call for IApplyConfluence by @plt-amy in https://github.com/agda/agda/pull/6218
- [ doc ] added new main developer Amelia by @andreasabel in https://github.com/agda/agda/pull/6226
- Close #6001 by test case for OP by @andreasabel in https://github.com/agda/agda/pull/6230
- Fixed issue #6194 by @nad in https://github.com/agda/agda/pull/6224
- Add {-# NOT_PROJECTION_LIKE #-}, and reduce projections in elaborate_give by @plt-amy in https://github.com/agda/agda/pull/6204
- [ re #4522 ] Add documentation for
--no-qualified-instancesby @jespercockx in https://github.com/agda/agda/pull/6223 - Re #5462: point to pragma NOT_PROJECTION_LIKE in error message by @andreasabel in https://github.com/agda/agda/pull/6233
- Fixed example given in the Precedence section of documentation by @svarqq in https://github.com/agda/agda/pull/6237
- Fixed issue #5577 by @nad in https://github.com/agda/agda/pull/6231
- Edited some documentation by @nad in https://github.com/agda/agda/pull/6242
- Fix #5427 (revisited): add --(no-)subtyping to the dead options by @andreasabel in https://github.com/agda/agda/pull/6247
- Docs for Cubical indexed types by @plt-amy in https://github.com/agda/agda/pull/6232
- rename hie.yaml → hie-stack.yaml; ignore hie.yaml by @plt-amy in https://github.com/agda/agda/pull/6249
- #6238: Allow flat matching on inductive families by @felixwellen in https://github.com/agda/agda/pull/6239
- Fixed #6244: --no-load-primitives is not --safe by @andreasabel in https://github.com/agda/agda/pull/6248
- [ doc ] option archeology: when was which Agda option added by @andreasabel in https://github.com/agda/agda/pull/6253
- [ doc ] use :option: syntax where possible, cosmetics by @andreasabel in https://github.com/agda/agda/pull/6254
- Help/doc: neither --sized-types nor --guardedness is default by @andreasabel in https://github.com/agda/agda/pull/6255
- re #5448: check that clause target type is usable at modality by @plt-amy in https://github.com/agda/agda/pull/6236
- Rename NoEquivWhenSplitting; Mention how to silence it in the changelog by @plt-amy in https://github.com/agda/agda/pull/6252
- [ workflows ] deploy: replace deprecated '::set-output' by @andreasabel in https://github.com/agda/agda/pull/6259
- Switch to v1.7.2 release branch of the standard library by @MatthewDaggitt in https://github.com/agda/agda/pull/6260
- Changes related to issues #4927, #6238, #6263, #6264 and #6265 by @nad in https://github.com/agda/agda/pull/6268
- Put a warning to every breaking change by @L-TChen in https://github.com/agda/agda/pull/6275
- Fix #6283: build with mtl-2.3.1 by @andreasabel in https://github.com/agda/agda/pull/6284
- Fixed #6273 and #6276 by @nad in https://github.com/agda/agda/pull/6277
- Better highlighting of erased pattern-matching lambdas by @nad in https://github.com/agda/agda/pull/6280
- [ #6281 ] Removed the special treatment of "_" by @nad in https://github.com/agda/agda/pull/6282
- [ #6287 ] Tried to fix both problems by @nad in https://github.com/agda/agda/pull/6288
- Edited some documentation by @nad in https://github.com/agda/agda/pull/6296
- re #6298: consider also arguments when checking modality at LHS by @plt-amy in https://github.com/agda/agda/pull/6299
- [ #6055 ] Updated std-lib commit. by @asr in https://github.com/agda/agda/pull/6484
- [ re #6364 ] Update cubical library commit by @asr in https://github.com/agda/agda/pull/6488
New Contributors
- @ecavallo made their first contribution in #5439
- @fangyi-zhou made their first contribution in #5516
- @plragde made their first contribution in #5552
- @selinger made their first contribution in #5591
- @alissa-tung made their first contribution in #5597
- @Riki1312 made their first contribution in #5623
- @madjestic made their first contribution in #5621
- @mastarija made their first contribution in #5636
- @omelkonian made their first contribution in #5688
- @isovector made their first contribution in #5752
- @flupe made their first contribution in #5803
- @jamestmartin made their first contribution in #5814
- @oskeri made their first contribution in #5849
- @akrmn made their first contribution in #5946
- @tensorknower69 made their first contribution in #5990
- @marcinjangrzybowski made their first contribution in #6000
- @thorimur made their first contribution in #6028
- @Zekt made their first contribution in #5978
- @mikeshulman made their first contribution in #6065
- @MatthiasHu made their first contribution in #6117
- @svarqq made their first contribution in https://github.com/agda/agda/pull/6237
Full Changelog: v2.6.2.2...v2.6.3