| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2024-08-16 | 50.8 kB | |
| v2.7.0 source code.tar.gz | 2024-08-16 | 4.9 MB | |
| v2.7.0 source code.zip | 2024-08-16 | 7.6 MB | |
| Totals: 3 Items | 12.5 MB | 1 | |
Release notes for Agda version 2.7.0
Highlights
-
Mimer, a re-implementation of the "auto" term synthesizer, replaces Agsy.
-
New syntax
using x ← eto bind values on the left-hand-side of a function clause. -
Instance search is more performant thanks to a new indexing structure. Additionally, users can now control how instances should be selected in the case multiple candidates exist.
-
User-facing options
--exact-split,--keep-pattern-variables, and--postfix-projectionsare now on by default.
Installation
-
Agda versioning scheme switches to the Haskell Package Versioning Policy so Agda can be more reliably used as a library. Major releases will now bump the second number in the version tuple: 2.7.0, 2.8.0, 2.9.0, ...
-
When the creation of the Agda library interface files fails during installation, a warning is emitted rather than aborting installation. The absence of these interface files is not a problem if the Agda installation resides in user space; they will be created on the fly then. Yet for system-wide installations in root space or packaging, the interface files should be created. This can be achieved by a manual invocation of Agda on the library source files (i.e., primitive and builtin modules
Agda.*). (See Issue [#7401] and PR [#7404].) -
Agda supports GHC versions 8.6.5 to 9.10.1.
Pragmas and options
-
[Breaking] The option
--overlapping-instances, which allows backtracking during instance search, has been renamed to--backtracking-instance-search. -
These options are now on by default:
-
--exact-split: Warn about clauses that are not definitional equalities. --keep-pattern-variables: Do not introduce dot patterns in interactive splitting.--postfix-projections: Print projections and projection patterns in postfix.--save-metas: Try to not unfold metavariable solutions in interface files.
To revert to the old behavior, use options --no-....
-
Option
--rewritingis now considered infective. This means that if a module has this flag enabled, then all modules importing it must also have that flag enabled. -
New warnings:
-
CoinductiveEtaRecordif a record is declared bothcoinductiveand havingeta-equality. Used to be a hard error; now Agda continues, ignoringeta-equality. -
ConflictingPragmaOptionsif giving both--thisand--thatwhen--thisimplies--no-that(and analogous for--no-thisimplies--that, etc). -
ConstructorDoesNotFitInDatawhen a constructor parameter is too big (in the sense of universe level) for the target data type of the constructor. Error warning, used to be a hard error. -
DuplicateRecordDirectivesif e.g. arecordis declared bothinductiveandcoinductive, or declaredinductivetwice. -
UselessMacrowhen amacroblock does not contain any function definitions. -
WarningProblemwhen trying to switch an unknown or non-benign warning with the-Woption. Used to be a hard error. -
Rejected rewrite rules no longer cause a hard error but instead cause an error warning. The following warnings were added to document the various reasons for rejection:
RewriteLHSNotDefinitionOrConstructorRewriteVariablesNotBoundByLHSRewriteVariablesBoundMoreThanOnceRewriteLHSReducesRewriteHeadSymbolIsProjectionRewriteHeadSymbolIsProjectionLikeFunctionRewriteHeadSymbolIsTypeConstructorRewriteHeadSymbolContainsMetasRewriteConstructorParametersNotGeneralRewriteContainsUnsolvedMetaVariablesRewriteBlockedOnProblemsRewriteRequiresDefinitionsRewriteDoesNotTargetRewriteRelationRewriteBeforeFunctionDefinitionRewriteBeforeMutualFunctionDefinition
Lossy unification
-
New option
--require-unique-meta-solutions(turned on by default). Disabling it with--no-require-unique-meta-solutionsallows the type checker to take advantage ofINJECTIVE_FOR_INFERENCEpragmas (see below). The--lossy-unificationflag implies--no-require-unique-meta-solutions. -
New pragma
INJECTIVE_FOR_INFERENCEwhich treats functions as injective for inferring implicit arguments if--no-require-unique-meta-solutionsis given. The--no-require-unique-meta-solutionsflag needs to be given in the file where the function is used, and not necessarily in the file where it is defined. For example: ```agda postulate reverse-≡ : {l l' : List A} → reverse l ≡ reverse l' → reverse l ≡ reverse l'
[]≡[] : [] ≡ []
[]≡[] = reverse-≡ (refl {x = reverse []})
``
does not work since Agda won't solvelandl'for[], even though it knowsreverse l = reverse [].
Ifreverseis marked as injective with{-# INJECTIVE_FOR_INFERENCE reverse #-}` this example will work.
Syntax
Additions to the Agda syntax.
- Left-hand side let:
using x ← e(PR [#7078])
This new construct can be use in left-hand sides together with with and
rewrite to give names to subexpressions. It is the left-hand side
counterpart of a let-binding and supports the same limited form of pattern
matching on eta-expandable record values.
It can be quite useful when you have a function doing a series of nested
withs that share some expressions. Something like
agda
fun : A → B
fun x using z ← e with foo z
... | p with bar z
... | q = r
Here the expression e doesn't have to be repeated in the two with-expressions.
As in a with, multiple bindings can be separated by a |, and variables to
the left are in scope in bindings to the right.
- Pattern synonyms can now expose existing instance arguments (PR 7173). Example: ```agda data D : Set where c : {{D}} → D
pattern p {{d}} = c {{d}}
This allows us to explicitly bind these argument in a pattern match
and supply them explicitly when using the pattern synonym in an expression.agda
f : D → D
f (p {{d = x}}) = p {{d = x}}
```
We cannot create new instance arguments this way, though. The following is rejected: ```agda data D : Set where c : D → D
pattern p {{d}} = c d ```
Language
Changes to type checker and other components defining the Agda language.
- Agda now uses discrimination trees to store and look up instance definitions, rather than linearly searching through all instances for a given "class" (PR [#7109]).
This is a purely internal change, and should not result in any change to which programs are accepted or rejected. However, it significantly improves the performance of instance search, especially for the case of a "type class" indexed by a single type argument. The new lookup procedure should never be slower than the previous implementation.
Reflection
Changes to the meta-programming facilities.
-
[Breaking] Erased constructors are now supported in reflection machinery. Quantity argument was added to
data-cons. For erased constructors this argument has a value ofquantity-0, otherwise it'squantity-ω.defineDatanow requires setting quantity for each constructor. -
Add new primitive to run instance search from reflection code:
agda
-- Try to solve open instance constraints. When wrapped in `noConstraints`,
-- fails if there are unsolved instance constraints left over that originate
-- from the current macro invokation. Outside constraints are still attempted,
-- but failure to solve them are ignored by `noConstraints`.
solveInstanceConstraints : TC ⊤
- A new reflection primitive
workOnTypes : TC A → TC Awas added toAgda.Builtin.Reflection. This runs the given computation at the type level, which enables the use of erased things. In particular, this is needed when working with (dependent) function types with erased arguments. For example, one can get the type of the tuple constructor_,_(which now takes its type parameters as erased arguments, see above) and unify it with the current goal as follows: ```agda macro testM : Term → TC ⊤ testM hole = bindTC (getType (quote ,)) (λ t → workOnTypes (unify hole t))
typeOfComma = testM ```
Interaction and emacs mode
- [Breaking] The Auto command Agsy has been replaced by an entirely new implementation Mimer (PR [#6410]). This fixes problems where Auto would fail in the presence of language features it did not know about, such as copatterns or anything cubical.
The reimplementation does not support case splitting (-c), disproving
(-d) or refining (-r).
- The Agda input method for Emacs has been extended by several character bindings.
The list of changes can be obtained with a git diff on the sources:
git diff v2.6.4.3 v2.7.0 -- src/data/emacs-mode/agda-input.el
API
Highlighting some changes to Agda as a library.
- New module
Agda.Syntax.Common.KeywordRangeproviding typeKwRangeisomorphic toRangeto indicate source positions that just span keywords (PR [#7162]). The motivation forKwRangeis to distinguish such ranges from ranges for whole subtrees, e.g. in data typeAgda.Syntax.Concrete.Declaration.
API: ```haskell module Agda.Syntax.Common.KeywordRange where
type KwRange
-- From Range to KwRange kwRange :: HasRange a => a -> KwRange
-- From KwRange to Range instance HasRange KwRange where getRange :: KwRange -> Range ```
- New hook in
Agda.Compiler.ToTreelessto enable custom pipelines in compiler backends (PR [#7273]).
List of closed issues
For 2.7.0, the following issues were closed (see bug tracker):
- Issue [#2492]: Limit the size of terms agsy is allowed to insert
- Issue [#2853]: Auto does not work well with record types
- Issue [#4594]: Improve the blocking primitive
- Issue [#4777]: Interaction between tactics and instance search
- Issue [#6101]: Agsy gives up when no HIT is present
- Issue [#6124]: Reflection: cannot reduce type because variable is erased
- Issue [#6181]: Agda incorrectly reports type error when an identity function is not properly hidden from the termination checker
- Issue [#6270]: Irrelevance in the type of a record module definition
- Issue [#6292]: Document interaction between reflection and erasure
- Issue [#6335]: Error message for non-canonical value when using Show instances is confusing
- Issue [#6361]: Agsy ignores --postfix-projections
- Issue [#6406]: Subject reduction problem related to projections with non-erased parameter arguments
- Issue [#6433]: Add unicode character BALLOT X as \crossmark to Agda input mode
- Issue [#6509]: Agda seems to be very slow at typechecking records with many fields
- Issue [#6584]: Case splitting on record renames top-level function
- Issue [#6643]: Rewrite rules are allowed in implicit mutual blocks
- Issue [#6663]: Function arguments are nonvariant more often than they should be
- Issue [#6667]: An internal error occurrs when (mis)using syntax declarations
- Issue [#6744]: Alias in constructor index foils the forcing analysis
- Issue [#6768]: auto: not implemented HITs error on non-cubical code
- Issue [#6783]:
@tacticdoes not kick in for lambdas - Issue [#6806]: Remove
GenericWarning - Issue [#6841]: Uncaught pattern violation when using
with...in...instead of old-school inspect - Issue [#6866]: User Manual: Make Installation as Easy as Possible
- Issue [#6867]: Agda rejects identity function on indexed datatype with erased index
- Issue [#6919]: improving formatting of warnings/errors
- Issue [#6943]: Making
--exact-splitand--postfix-projectionsdefault? - Issue [#6945]: Missing warning for non-empty but effectless
privateblocks - Issue [#6976]: Unexpected failure of instance resolution
- Issue [#7017]: Document instance projections
- Issue [#7058]: Unclear specification and correctness of TypeChecking/DeadCode
- Issue [#7090]: REWRITE rule with confluence, inconsistencies with documentation and error messages
- Issue [#7123]: Citation.cff
- Issue [#7136]: Pattern synonyms with named arguments can be defined but not used
- Issue [#7146]: Misprinted domain-free parameters with cohesion attribute
- Issue [#7158]: Non-sensical error since 2.5.4 when applying a non-function
- Issue [#7167]: Underapplied pattern synonyms expand to lambdas with wrong hiding in expressions
- Issue [#7170]: Confusing error "Unused variable in pattern synonym"
- Issue [#7176]: Instanceness is lost when expanding absurd pattern in pattern synonym expression
- Issue [#7177]: No scope info for underscores inserted by pattern synonym expansion
- Issue [#7181]: Forcing translation prevents reduction within function definition
- Issue [#7182]:
getDefinitiongives wrong constructor for record from applied parameterised module - Issue [#7187]: Sort metas produce ill-typed reflected terms when quoted
- Issue [#7191]:
showdoes not respectabstract/opaquewhen normalising a term in a hole - Issue [#7192]: GHC 9.10
- Issue [#7193]: Agda always has irrelevant projections
- Issue [#7196]: Regression when giving instances with visible arguments
- Issue [#7202]:
ModuleDoesntExporthas imprecise deadcode highlighting - Issue [#7208]: Importing module with wrong namespace causes internal error instead of user-friendly error.
- Issue [#7218]: Internal error in opaque block when case splitting when just given extended lambda
- Issue [#7219]: Only warn about unknown warnings, don't fail hard
- Issue [#7227]: Save-metas causes OOM during macro execution
- Issue [#7236]: Expected a hidden argument, but found a visible argument in with-abstraction when using REWRITE
- Issue [#7262]: Error "This clause has target type ... which is not usable" highlights pattern instead of clause
- Issue [#7266]: Internal error at Agda/TypeChecking/Substitute.hs:140:33
- Issue [#7286]: Hard error on
instancedefinition with unsolved type - Issue [#7301]: Agda >=2.6.3 hangs on conflicting record directives
- Issue [#7318]:
--postfix-projectionsdo not make use of mixfix syntax - Issue [#7326]: Internal error on pattern lambda with no clauses
- Issue [#7329]: wrong type for unnamed record constructor
- Issue [#7331]: Search for project root crashes when (parent) directory lacks permissions
- Issue [#7332]: quoteTerm loops on dependent copattern lambda
- Issue [#7337]: Caching loses reflection-generated pragmas
- Issue [#7346]: Proof of ⊥ using HIT-indexed type
- Issue [#7380]: MAlonzo bug:
unreachable code reached - Issue [#7382]: Agda 2.7.0-rc1 crashes when run twice, probably serialization issue
- Issue [#7401]: Cabal 3.12.1.0 install failure for lib:Agda - dist/build/agda/agda does not exist
These (relevant) pull requests were merged for 2.7.0:
- PR [#6410]: Mimer: a drop-in replacement for Agsy
- PR [#6569]: Do final checks before freezing metas
- PR [#6570]: Coerce
unquoteapplications - PR [#6640]: Add
INJECTIVE_FOR_INFERENCEpragma - PR [#6674]: Testcase for fixed [#6542]
- PR [#6769]: Various symbol additions to agda-input
- PR [#6870]: [ fix [#6867] ] Only consider arguments with @0 for forcing if --erasure is on
- PR [#6978]: [ fix [#6976] ] Add constraint for resolving the head of an instance
- PR [#7055]: Unspine system projections when they have display forms
- PR [#7071]: Eta-expand mismatched cubical primitives
- PR [#7078]: Left-hand side
let - PR [#7109]: Discrimination trees for instance search
- PR [#7115]: Flake improvements
- PR [#7119]: Split GenericWarning into individual warnings
- PR [#7121]: Update installation.rst
- PR [#7138]: Fix [#7136]: proper error when pattern definition has unsupported arguments
- PR [#7142]: Fix [#6783]: error for @tactic on lambda
- PR [#7144]: Add reference to Cornelis in the documentation
- PR [#7147]: Fix [#7146]: printing of cohesion and lock attributes
- PR [#7149]: Fix mutual information not being set properly by the positivity checker
- PR [#7155]: Fix [#6866]: User Manual: Make Installation as Easy as Possible
- PR [#7159]: Fix [#7158]: Application: check for sufficient arity before checking target
- PR [#7160]: Fix [#6667]: case not
__IMPOSSIBLE__for nullary syntax - PR [#7161]: Fix [#6945]: warn about useless private even in absense of nice decls
- PR [#7162]: Blocks in Concrete syntax: store Range of block keyword
- PR [#7168]: Fix [#7167]: type checking underapplied pattern synonyms
- PR [#7169]: Trigger and improve error UnusedVariableInPatternSynonym
- PR [#7173]: Part of [#2829]: Allow instance arguments in pattern synonyms that are such in the pattern already
- PR [#7179]: Fix [#7177]: only setScope when scope is not null
- PR [#7180]: Use compareAs for assignE even in compareAtom
- PR [#7183]: Instance overlap pragmas
- PR [#7185]: Fix [#7176]: turn absurd pattern in instance position to instance meta
- PR [#7197]: Re. [#7196]: Only prune instances in serialised iface
- PR [#7203]: Fix incorrectly quoted sorts
- PR [#7204]: Fix [#7202]: ModuleDoesntExport: only highlight missing names
- PR [#7209]: Fix [#7208]: restore missing check for OverlappingProjects
- PR [#7210]: Fix range for deprecated module import warning when applied
- PR [#7211]: Fix [#7181]: Allow matching to continue when stuck on lazy pattern
- PR [#7222]: Fix [#7219]: only warn about problems with warning options
- PR [#7231]: Instantiate terms before traversing them in tcExtendContext
- PR [#7237]: Fix [#7236]: use context rather than telescope for lambda-bound variables in rewrite patterns
- PR [#7238]: Build with GHC 9.10
- PR [#7241]: Drop time-compat dependency and Stack LTS for GHC 8.6
- PR [#7243]: re. 7218: Saturate opaque blocks after Give commands
- PR [#7248]: Overhaul dead code elimination, make --save-metas the default
- PR [#7249]: docs/installation: point new wiki
- PR [#7251]: re. 7250: copy instanceinfo
- PR [#7252]: Fix [#7193]: persistently remember what is a projection
- PR [#7260]: Reflection primitive to solve instances
- PR [#7273]: ToTreeless: allow backends to define custom pipelines
- PR [#7274]: [#7182]: copied records should refer to the copied constructor and fields
- PR [#7276]: [#7191]: respect abstract mode when using show function
- PR [#7283]: agdaLatex documentation
- PR [#7292]: New error warning
ConstructorDoesNotFitInDatainstead of hard error. - PR [#7298]: Remove fiddly attempt at instance postponement
- PR [#7300]: New deadcode warning CoinductiveEtaRecord instead of GenericError
- PR [#7302]: Fix [#7301] (loop in parser): move verifyRecordDirectives to scope checker
- PR [#7305]: Fix [#7286]: don't fail hard when there are instances with unresolved types
- PR [#7307]: fix [#7017]: document instance projections
- PR [#7310]: Add
workOnTypesreflection primitive - PR [#7311]: [ [#6406] ] Add test cases from discussion on this issue
- PR [#7313]: Update universe-levels.lagda.rst
- PR [#7314]: Add constructors for custom backend warning/errors
- PR [#7315]: same shadowing logic for record patterns as for constructor patterns in absToCon
- PR [#7316]: add \crossmark to emacs input mode
- PR [#7317]: Don't mark eta unit records as irrelevant
- PR [#7319]: Make --postfix-projections the default
- PR [#7320]: Turn on --exact-split by default
- PR [#7322]: Expose constructor erasure in reflection interface
- PR [#7325]: add CSS rule for macro names
- PR [#7327]: proper error instead of impossible for clauseless pat-lam
- PR [#7330]: [#7329] Correct module name in module applications
- PR [#7333]: [#7332] don't loop when quoting dependent copattern lambdas
- PR [#7334]: Fix [#7331]: handle permission error in search for project file
- PR [#7336]: Remove duplicate imports and pragmas in MAlonzo
- PR [#7338]: (#7337) foreign code needs to go in post-scope state
- PR [#7343]: Turn illegal rewrite rules into an error warning
- PR [#7347]: [ fix [#7266] ] Check that constructor names match before projecting in
matchPattern - PR [#7349]: Fix [#7346] by not considering HIT-constructor arguments forced
- PR [#7350]: Fix [#6744] by reducing during forcing analysis.
- PR [#7352]: Fix issue 7262: Range of the lhs modality check
- PR [#7353]: Update installation docs (e.g. re [#7163]: document installation problems with
executable-dynamic) - PR [#7355]: Make
--keep-pattern-variablesthe default - PR [#7356]: Add --save-metas default to CHANGELOG
- PR [#7358]: [ doc ] Document
--termination-depthin user manual - PR [#7359]: Fix [#7354] by making types of live metas live in DeadCode
- PR [#7360]: Fix for issue [#6841] and related changes
- PR [#7362]: Fix [#6919]: separate warnings by empty line
- PR [#7364]: Resolve instance overlap for irrelevant metas
- PR [#7367]: Minor fixes to instance overlap + constraint postponement
- PR [#7383]: Fix [#7382]: make all module param sections live in DeadCode
- PR [#7386]: Testcase for [#7382] (completes PR [#7383])
- PR [#7404]: Fix [#7401]: do not fail hard in Setup.hs if library interface files cannot be built
- PR [#7410]: Fixup [#7404] and test agdai-generation in cabal-install workflow
- PR [#7419]: [#7380]: add clauses to generalizedTel projections
- PR [#7423]: Fixup [#7265]: restore passing arguments from goal to Mimer
What's Changed (auto-generated)
- [ fix [#6976] ] Add constraint for resolving the head of an instance by @jespercockx in https://github.com/agda/agda/pull/6978
- [ fix [#6867] ] Only consider arguments with @0 for forcing if --erasure is on by @jespercockx in https://github.com/agda/agda/pull/6870
- Delete unused
glue1bindings by @ncfavier in https://github.com/agda/agda/pull/7021 - User manual: add note about compilation of irrelevant fields by @UlfNorell in https://github.com/agda/agda/pull/7026
- CI user-manual: bump python to 3.11 and setup-python to v5 by @andreasabel in https://github.com/agda/agda/pull/7027
- Fix issue 7029 by @jespercockx in https://github.com/agda/agda/pull/7031
- Break cross-module SCC 4 by @lawcho in https://github.com/agda/agda/pull/6897
- Recompute blocker in equalSort by @andreasabel in https://github.com/agda/agda/pull/7039
- update
user-manualto stdlib-v2.0 by @jamesmckinna in https://github.com/agda/agda/pull/7043 - Refactor
flake.nixby @lawcho in https://github.com/agda/agda/pull/7032 - [ fix [#7044] ] Serialize
defBlockedasneverUnblockby @andreasabel in https://github.com/agda/agda/pull/7046 - [ fix [#7048] ] Only define hcomp constructors when --cubical-compatible. by @andreasabel in https://github.com/agda/agda/pull/7049
- issue 7050 by @andreasabel in https://github.com/agda/agda/pull/7051
- [ workflows ] Bump up/download-artifact action to v4 by @andreasabel in https://github.com/agda/agda/pull/7054
- add --keep-pattern-variables to options that don't require recompilation by @UlfNorell in https://github.com/agda/agda/pull/7060
- Unspine system projections when they have display forms by @plt-amy in https://github.com/agda/agda/pull/7055
- [ workflows ] bump GHC 9.6.3 to 9.6.4 by @andreasabel in https://github.com/agda/agda/pull/7064
- Some documentation fixes by @fredrik-bakke in https://github.com/agda/agda/pull/7065
- Add 'Inference in Agda' to the list of tutorials by @effectfully in https://github.com/agda/agda/pull/7072
- [ workflow ] Allow a newer PATCH version for
cancel-workflow-actionby @L-TChen in https://github.com/agda/agda/pull/7074 - Provide a
.agda-libfor Agda builtins by @ibbem in https://github.com/agda/agda/pull/6988 - Make tests for [#641] less brittle by @UlfNorell in https://github.com/agda/agda/pull/7075
- Fix [#7070]: remove built-in max heap setting -M3.5G for Agda by @andreasabel in https://github.com/agda/agda/pull/7076
- More precise type for Utils.Graph...sccs: every SCC is non-empty by @andreasabel in https://github.com/agda/agda/pull/7079
- Eta-expand mismatched cubical primitives by @plt-amy in https://github.com/agda/agda/pull/7071
- Left-hand side
letby @UlfNorell in https://github.com/agda/agda/pull/7078 - Mimer: a drop-in replacement for Agsy by @UlfNorell in https://github.com/agda/agda/pull/6410
- Fix [#7084]: Mimer internal error by @UlfNorell in https://github.com/agda/agda/pull/7087
- [#7085]: Mimer not recognising qualified hints by @UlfNorell in https://github.com/agda/agda/pull/7088
- Fix [#7086]: Mimer crashing if called in type signature by @UlfNorell in https://github.com/agda/agda/pull/7089
- Add course to “Courses using Agda” by @fmehta in https://github.com/agda/agda/pull/7091
- Re [#7081]: add build with debug-{serialisation,parsing} flags to cabal CI by @andreasabel in https://github.com/agda/agda/pull/7092
- Fix [#7095]: our cabal build flags are actually all "manual". by @andreasabel in https://github.com/agda/agda/pull/7096
- Allow zlib-0.7 by @andreasabel in https://github.com/agda/agda/pull/7098
- Make more flags infective by @jespercockx in https://github.com/agda/agda/pull/5267
- Float DefP clauses above catch-alls by @plt-amy in https://github.com/agda/agda/pull/7097
- some preps for 2.6.4.2 by @andreasabel in https://github.com/agda/agda/pull/7099
- [#6972]: Also save backcopies in interface file by @plt-amy in https://github.com/agda/agda/pull/6974
- Bump stack-*.yaml to latest 9.6.4 and 9.8.1 snapshots by @andreasabel in https://github.com/agda/agda/pull/7102
- Mimer: drop constructor parameters from solutions by @UlfNorell in https://github.com/agda/agda/pull/7111
- [#7105] Do not try to fold let-bindings during printing of the helper function by @knisht in https://github.com/agda/agda/pull/7106
- Use a separate warning for duplicated interface files by @ibbem in https://github.com/agda/agda/pull/7112
- Split GenericWarning into individual warnings by @andreasabel in https://github.com/agda/agda/pull/7119
- Delete Travis CI files by @lawcho in https://github.com/agda/agda/pull/7129
- Fix for issue [#7113] by @jespercockx in https://github.com/agda/agda/pull/7122
- [ re [#5267] ] Add new infective options to user manual by @jespercockx in https://github.com/agda/agda/pull/7103
- Allow Win32-2.14 by @andreasabel in https://github.com/agda/agda/pull/7131
- Mimer: fix handling of module parameters by @UlfNorell in https://github.com/agda/agda/pull/7135
- Janitorial Changes to agda-mode by @phikal in https://github.com/agda/agda/pull/6536
- Flake improvements by @ncfavier in https://github.com/agda/agda/pull/7115
- Fix [#7136]: proper error when pattern definition has unsupported arguments by @andreasabel in https://github.com/agda/agda/pull/7138
- Cosmetics: remove some unused functions (Parser) by @andreasabel in https://github.com/agda/agda/pull/7141
- Fix [#6783]: error for @tactic on lambda by @andreasabel in https://github.com/agda/agda/pull/7142
- Fix [#7146]: printing of cohesion and lock attributes by @andreasabel in https://github.com/agda/agda/pull/7147
- Fix mutual information not being set properly by the positivity checker by @UlfNorell in https://github.com/agda/agda/pull/7149
- Fix [#7148]: restore call to
instantiateFullbefore with-abstraction. by @andreasabel in https://github.com/agda/agda/pull/7151 - Bump stack*.yaml and submodules (prep 2.6.4.3) by @andreasabel in https://github.com/agda/agda/pull/7153
- Follow hlint suggestion: move brackets to avoid $. by @philderbeast in https://github.com/agda/agda/pull/6461
- Update installation.rst by @muchnick0 in https://github.com/agda/agda/pull/7121
- Fix [#7158]: Application: check for sufficient arity before checking target by @andreasabel in https://github.com/agda/agda/pull/7159
- Fix [#6667]: case not
__IMPOSSIBLE__for nullary syntax by @andreasabel in https://github.com/agda/agda/pull/7160 - Fix [#6945]: warn about useless private even in absense of nice decls by @andreasabel in https://github.com/agda/agda/pull/7161
- Blocks in Concrete syntax: store Range of block keyword by @andreasabel in https://github.com/agda/agda/pull/7162
- Citation instructions by @L-TChen in https://github.com/agda/agda/pull/6444
- Fix [#7167]: type checking underapplied pattern synonyms by @andreasabel in https://github.com/agda/agda/pull/7168
- Trigger and improve error UnusedVariableInPatternSynonym by @andreasabel in https://github.com/agda/agda/pull/7169
- Add reference to Cornelis in the documentation by @4e554c4c in https://github.com/agda/agda/pull/7144
- Part of [#2829]: Allow instance arguments in pattern synonyms that are such in the pattern already by @andreasabel in https://github.com/agda/agda/pull/7173
- Discrimination trees for instance search by @plt-amy in https://github.com/agda/agda/pull/7109
- Bump GHC 9.8.1 to 9.8.2 by @andreasabel in https://github.com/agda/agda/pull/7175
- Fix [#7177]: only setScope when scope is not null by @andreasabel in https://github.com/agda/agda/pull/7179
- Use compareAs for assignE even in compareAtom by @plt-amy in https://github.com/agda/agda/pull/7180
- Fix [#7176]: turn absurd pattern in instance position to instance meta by @andreasabel in https://github.com/agda/agda/pull/7185
- Commenting test for [#7180] by @andreasabel in https://github.com/agda/agda/pull/7184
- Fix Mimer trying bad recursive calls by @UlfNorell in https://github.com/agda/agda/pull/7195
- HLint list element suggestions by @philderbeast in https://github.com/agda/agda/pull/7194
- Fix incorrectly quoted sorts by @UlfNorell in https://github.com/agda/agda/pull/7203
- Re. [#7196]: Only prune instances in serialised iface by @plt-amy in https://github.com/agda/agda/pull/7197
- Fix [#7202]: ModuleDoesntExport: only highlight missing names by @andreasabel in https://github.com/agda/agda/pull/7204
- Instance overlap pragmas by @plt-amy in https://github.com/agda/agda/pull/7183
- Various symbol additions to agda-input by @fredrik-bakke in https://github.com/agda/agda/pull/6769
- Fix [#7208]: restore missing check for OverlappingProjects by @andreasabel in https://github.com/agda/agda/pull/7209
- Fix range for deprecated module import warning when applied by @andreasabel in https://github.com/agda/agda/pull/7210
- Restore agda-input for ordinary backslash (regression in [#6769]) by @andreasabel in https://github.com/agda/agda/pull/7213
- Strengthen link between .el files in src/data/emacs and src/agda-mode by @andreasabel in https://github.com/agda/agda/pull/7216
- Fix [#7219]: only warn about problems with warning options by @andreasabel in https://github.com/agda/agda/pull/7222
- GenericError by @andreasabel in https://github.com/agda/agda/pull/7223
- Bump peaceiris/actions-gh-pages from 3 to 4 by @dependabot in https://github.com/agda/agda/pull/7224
- Fix [#7181]: Allow matching to continue when stuck on lazy pattern by @szumixie in https://github.com/agda/agda/pull/7211
- Follow hlint suggestion: use list comprehension by @philderbeast in https://github.com/agda/agda/pull/7200
- Follow hlint suggestion: use infix by @philderbeast in https://github.com/agda/agda/pull/7201
- Coerce
unquoteapplications by @ncfavier in https://github.com/agda/agda/pull/6570 - Do final checks before freezing metas by @ncfavier in https://github.com/agda/agda/pull/6569
- Add
INJECTIVE_FOR_INFERENCEpragma by @WhatisRT in https://github.com/agda/agda/pull/6640 - Prevent unintended invoking of stack by @chu-mirror in https://github.com/agda/agda/pull/7228
- Support GHC 9.6.5 by @andreasabel in https://github.com/agda/agda/pull/7229
- [ refactor, [#7225] ] GenericError to new error EmptyTypeOfSizes by @andreasabel in https://github.com/agda/agda/pull/7230
- CI cosmetics: keep --dependencies-only step even when cache hit by @andreasabel in https://github.com/agda/agda/pull/7233
- Remove some GenericErrors by @andreasabel in https://github.com/agda/agda/pull/7235
- Fix [#7236]: use context rather than telescope for lambda-bound variables in rewrite patterns by @andreasabel in https://github.com/agda/agda/pull/7237
- Follow hlint suggestion: use empty by @philderbeast in https://github.com/agda/agda/pull/7239
- Drop time-compat dependency and Stack LTS for GHC 8.6 by @andreasabel in https://github.com/agda/agda/pull/7241
- re. 7218: Saturate opaque blocks after Give commands by @plt-amy in https://github.com/agda/agda/pull/7243
- Build with GHC 9.10 by @andreasabel in https://github.com/agda/agda/pull/7238
- Refactor: use
SmallSetforfunFlags, make more boolean fields aFunctionFlagby @andreasabel in https://github.com/agda/agda/pull/7244 - Follow hlint suggestion: redundant section by @philderbeast in https://github.com/agda/agda/pull/7246
- [ fix [#6384] ] Use Alpine Linux to compile and statically link Agda by @L-TChen in https://github.com/agda/agda/pull/7082
- re. 7250: copy instanceinfo by @plt-amy in https://github.com/agda/agda/pull/7251
- Fix [#7193]: persistently remember what is a projection by @andreasabel in https://github.com/agda/agda/pull/7252
- docs/installation: point new wiki by @Mic92 in https://github.com/agda/agda/pull/7249
- CI: bump to ubuntu-24.04 (except deploy); bump stack/cabal to latest by @andreasabel in https://github.com/agda/agda/pull/7261
- [ refactor ] cosmetics: use whenM for withoutKOption by @andreasabel in https://github.com/agda/agda/pull/7263
- Reflection primitive to solve instances by @UlfNorell in https://github.com/agda/agda/pull/7260
- Fix [#6739]: testing GHC backend: use separate -outputdir to avoid races by @andreasabel in https://github.com/agda/agda/pull/7264
- Issue 7212: Make Mimer respect C-u modifiers by @UlfNorell in https://github.com/agda/agda/pull/7265
- [#7182]: copied records should refer to the copied constructor and fields by @UlfNorell in https://github.com/agda/agda/pull/7274
- [#7245]: warn about INJECTIVE_FOR_INFERENCE on non-functions by @UlfNorell in https://github.com/agda/agda/pull/7275
- [#7191]: respect abstract mode when using show function by @UlfNorell in https://github.com/agda/agda/pull/7276
- Fix CI breakage caused by new (2024-05-14) runner images by @andreasabel in https://github.com/agda/agda/pull/7280
- bump ci ghc 9.10.1 by @andreasabel in https://github.com/agda/agda/pull/7282
- ToTreeless: allow backends to define custom pipelines by @omelkonian in https://github.com/agda/agda/pull/7273
- agdaLatex documentation by @csetzer in https://github.com/agda/agda/pull/7283
- New error warning
ConstructorDoesNotFitInDatainstead of hard error. by @andreasabel in https://github.com/agda/agda/pull/7292 - GenericDocErrors to new errors LibraryError and RecursiveRecordNeedsInductivity by @andreasabel in https://github.com/agda/agda/pull/7297
- Remove fiddly attempt at instance postponement by @plt-amy in https://github.com/agda/agda/pull/7298
- Fix [#7301] (loop in parser): move verifyRecordDirectives to scope checker by @andreasabel in https://github.com/agda/agda/pull/7302
- Fix [#7286]: don't fail hard when there are instances with unresolved types by @UlfNorell in https://github.com/agda/agda/pull/7305
- Turn on -fdebug in default make targets by @UlfNorell in https://github.com/agda/agda/pull/7308
- Fix [#7304]: ignore abstract mode when building the instance discrimination tree by @UlfNorell in https://github.com/agda/agda/pull/7306
- fix [#7017]: document instance projections by @UlfNorell in https://github.com/agda/agda/pull/7307
- Update universe-levels.lagda.rst by @hawkinsw in https://github.com/agda/agda/pull/7313
- Add
workOnTypesreflection primitive by @jespercockx in https://github.com/agda/agda/pull/7310 - [ [#6406] ] Add test cases from discussion on this issue by @jespercockx in https://github.com/agda/agda/pull/7311
- Add constructors for custom backend warning/errors by @UlfNorell in https://github.com/agda/agda/pull/7314
- same shadowing logic for record patterns as for constructor patterns in absToCon by @UlfNorell in https://github.com/agda/agda/pull/7315
- Don't mark eta unit records as irrelevant by @UlfNorell in https://github.com/agda/agda/pull/7317
- add \crossmark to emacs input mode by @UlfNorell in https://github.com/agda/agda/pull/7316
- Turn on --exact-split by default by @andreasabel in https://github.com/agda/agda/pull/7320
- Make --postfix-projections the default by @andreasabel in https://github.com/agda/agda/pull/7319
- New deadcode warning CoinductiveEtaRecord instead of GenericError by @andreasabel in https://github.com/agda/agda/pull/7300
- Instantiate terms before traversing them in tcExtendContext by @ncfavier in https://github.com/agda/agda/pull/7231
- add CSS rule for macro names by @ncfavier in https://github.com/agda/agda/pull/7325
- proper error instead of impossible for clauseless pat-lam by @UlfNorell in https://github.com/agda/agda/pull/7327
- [#7329] Correct module name in module applications by @UlfNorell in https://github.com/agda/agda/pull/7330
- [#7332] don't loop when quoting dependent copattern lambdas by @UlfNorell in https://github.com/agda/agda/pull/7333
- Remove unknown-field.agda-lib from test/Succeed by @UlfNorell in https://github.com/agda/agda/pull/7328
- Testcase for fixed [#6542] by @andreasabel in https://github.com/agda/agda/pull/6674
- Fix [#7331]: handle permission error in search for project file by @andreasabel in https://github.com/agda/agda/pull/7334
- Remove duplicate imports and pragmas in MAlonzo by @UlfNorell in https://github.com/agda/agda/pull/7336
- (#7337) foreign code needs to go in post-scope state by @UlfNorell in https://github.com/agda/agda/pull/7338
- Support GHC 9.10.1 by @andreasabel in https://github.com/agda/agda/pull/7345
- Eta record refactorings by @jespercockx in https://github.com/agda/agda/pull/7132
- Turn illegal rewrite rules into an error warning by @jespercockx in https://github.com/agda/agda/pull/7343
- Overhaul dead code elimination, make --save-metas the default by @AndrasKovacs in https://github.com/agda/agda/pull/7248
- Fix [#6866]: User Manual: Make Installation as Easy as Possible by @AJChapman in https://github.com/agda/agda/pull/7155
- Optimize forcing analysis and prepare for ReduceM by @andreasabel in https://github.com/agda/agda/pull/7339
- Refactor: return
RecordDatainstead ofDefnfromisRecordby @andreasabel in https://github.com/agda/agda/pull/7348 - Fix [#7346] by not considering HIT-constructor arguments forced by @andreasabel in https://github.com/agda/agda/pull/7349
- Fix [#6744] by reducing during forcing analysis. by @andreasabel in https://github.com/agda/agda/pull/7350
- Fix issue 7262: Range of the lhs modality check by @andreasabel in https://github.com/agda/agda/pull/7352
- Update installation docs (e.g. re [#7163]: document installation problems with
executable-dynamic) by @andreasabel in https://github.com/agda/agda/pull/7353 - Make
--keep-pattern-variablesthe default by @andreasabel in https://github.com/agda/agda/pull/7355 - Add --save-metas default to CHANGELOG by @AndrasKovacs in https://github.com/agda/agda/pull/7356
- [ fix [#7266] ] Check that constructor names match before projecting in
matchPatternby @jespercockx in https://github.com/agda/agda/pull/7347 - [ doc ] Document
--termination-depthin user manual by @andreasabel in https://github.com/agda/agda/pull/7358 - Fix [#7354] by making types of live metas live in DeadCode by @AndrasKovacs in https://github.com/agda/agda/pull/7359
- Expose constructor erasure in reflection interface by @cmcmA20 in https://github.com/agda/agda/pull/7322
- Refactor
isRecordetc. to returnRecordDatainstead ofDefn. by @andreasabel in https://github.com/agda/agda/pull/6843 - Fix for issue [#6841] and related changes by @jespercockx in https://github.com/agda/agda/pull/7360
- Fix [#6919]: separate warnings by empty line by @andreasabel in https://github.com/agda/agda/pull/7362
- Fix [#6933]: include size-solver-test back in CI by @AndrasKovacs in https://github.com/agda/agda/pull/7361
- Deduplicate code: use formatWarningsAndErrors in showInfoError by @andreasabel in https://github.com/agda/agda/pull/7363
- Resolve instance overlap for irrelevant metas by @ncfavier in https://github.com/agda/agda/pull/7364
- latest cubical by @andreasabel in https://github.com/agda/agda/pull/7365
- Minor fixes to instance overlap + constraint postponement by @plt-amy in https://github.com/agda/agda/pull/7367
- Bump Agda version to 2.7.0 by @andreasabel in https://github.com/agda/agda/pull/7369
- Prepare for 2.7.0: Changelog by @andreasabel in https://github.com/agda/agda/pull/7370
- Some docs polishing for 2.7.0, contributor list update by @andreasabel in https://github.com/agda/agda/pull/7372
- Fix [#7401]: do not fail hard in Setup.hs if library interface files cannot be built by @andreasabel in https://github.com/agda/agda/pull/7404
- Revert [#5267]: Make more options infective by @andreasabel in https://github.com/agda/agda/pull/7406
- Fixup [#7404] and test agdai-generation in cabal-install workflow by @andreasabel in https://github.com/agda/agda/pull/7410
- Release 2.7.0 by @andreasabel in https://github.com/agda/agda/pull/7433
New Contributors
- @jamesmckinna made their first contribution in https://github.com/agda/agda/pull/7043
- @fredrik-bakke made their first contribution in https://github.com/agda/agda/pull/7065
- @effectfully made their first contribution in https://github.com/agda/agda/pull/7072
- @ibbem made their first contribution in https://github.com/agda/agda/pull/6988
- @fmehta made their first contribution in https://github.com/agda/agda/pull/7091
- @phikal made their first contribution in https://github.com/agda/agda/pull/6536
- @muchnick0 made their first contribution in https://github.com/agda/agda/pull/7121
- @chu-mirror made their first contribution in https://github.com/agda/agda/pull/7228
- @Mic92 made their first contribution in https://github.com/agda/agda/pull/7249
- @csetzer made their first contribution in https://github.com/agda/agda/pull/7283
- @hawkinsw made their first contribution in https://github.com/agda/agda/pull/7313
- @AJChapman made their first contribution in https://github.com/agda/agda/pull/7155
Full Changelog: https://github.com/agda/agda/compare/v2.6.4.3...v2.7.0