Commit Graph

190 Commits

Author SHA1 Message Date
CodingCellist
70ef197cf6
[ base ] Deprecate setByte in favour of setBits8 (#2764)
* [ base ] Deprecate setByte in favour of setBits8
           Deprecate getByte; fix Core.Binary.Prims

Along with `setByte`, the `getByte` function should similarly be
deprecated since it also assumes the value will have the given size,
rather than guaranteeing it in the type.

CI highlighted some required changes in `Core.Binary.Prims` thanks to
`-Werror`. The fix was to add some `cast` calls where the old `getByte`
and `setByte` used to be.

The RefC buffer test will need updating once we remove the functions
completely. Added a note for future peeps.
2022-11-15 10:42:07 +01:00
Denis Buzdalov
f5f7e2eb80 [ error ] Make failing IAlternative w/ FirstSuccess print all errors 2022-11-15 10:28:59 +01:00
CodingCellist
9cd92f1fc4
[ re #2742 ] Count no. processors online rather than configured (#2754)
* [ re #2742 ] Count no. processors online rather than configured

Seems there might be some oddities with what is reported when, e.g.
reporting the maximum number of processors supported by the currently
installed motherboard, regardless of which processor is socketed.

* [ #2754 ] Update CHANGELOG
2022-11-11 11:12:24 +01:00
Thomas E. Hansen
dc1662ddf1 [ doc ] Add :doc for unquotes
Co-authored-by: stefan-hoeck <hock@zhaw.ch>
2022-11-04 14:03:21 +00:00
Edwin Brady
102d7ebc18
Update version number in CHANGELOG (#2734) 2022-10-27 16:41:13 +01:00
CodingCellist
59460c2f46
[ admin ] Update CHANGELOG and CONTRIBUTORS (#2703)
* [ admin ] Update CHANGELOG and CONTRIBUTORS

We really need to do a release at some point...

* [ ci ] Don't check capitalised proper names in links and code

Sometimes hyperlinks and code-blocks just don't use the "proper"
capitalisation (e.g. `.html` vs `.HTML`), and that's okay.
(or even critical as links may not be found without "incorrect" format)

* [ ci ] Don't check terminology in links and code-blocks

Hopefully this is the right fix for the problem in #2703

* [ ci ] 3rd attempt at fixing nl linter

* [ ci ] Attempt no. 4 at fixing nl linter

* [ ci ] Point NL linter at YAML config file

Was that actually it??

* Update CHANGELOG.md

* Add note about forward declaration of records

* [ admin ] Add PR template with CHANGELOG reminder

To hopefully help mitigate big crawl-throughs of what's changed,
à la #2703.

* [ admin ] Reflow CHANGELOG to 80 characters where possible

Only done for the "next version" changes for the sake of diff size.
(Personally, I'd want to have the linter enforce this, but that might be
too extreme; there's already a note in the CI config complaining about
line length...)

* [ admin ] Make linter happy

It never ends...

Co-authored-by: Joel Berkeley <16429957+joelberkeley@users.noreply.github.com>
Co-authored-by: Steve Dunham <dunhamsteve@gmail.com>
2022-10-21 16:48:37 +02:00
CodingCellist
47c2de3148
[ repl ] Add the ability to get detailed help, e.g. :help :help (#2722)
A common issue for users is that the behaviour of the various repl
commands are not documented anywhere despite some of them having complex
behaviour (e.g. `:set` which accepts a specific set of options). This
implements the ability to call `:?|:h|:help` on repl commands to request
detailed help for a specific repl command, while preserving the
behaviour that calling the help command without any arguments prints the
general help text.

Generic help is defined as the first line of the help text.
Detailed help is defined as the entire help text.

This means that `:help :t`, for example, does not error (there is no
detailed help) but instead just prints the single line of help text.

* [ repl ] Use unlines for detailed help (see #2087)

  Ideally, the lines affected should be multiline strings. But for some
  arcane reason, newlines in those get swallowed in Nix and Windows
  **CI** only Ô.o
  This was already documented in issue #2087.

* [ new ] --except for golden testing lib

  To allow CI to pass despite #2087

Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2022-10-21 14:35:33 +02:00
CodingCellist
bb602643b1
[ fix #2712 ] Don't consider CyclicMeta recoverable (#2713) 2022-10-14 14:57:55 +01:00
Thomas E. Hansen
a598fec4f7 [ repl ] Add :import command 2022-10-13 11:31:05 +02:00
G. Allais
1f3809c49a
[ re #2675 ] Do not build libs/{contribs,papers} during bootstrap (#2677)
Co-authored-by: Ben Hormann <benhormann@users.noreply.github.com>
2022-10-04 13:37:45 +01:00
Sam Phillips
358c107c53 Update CHANGELOG.md and CONTRIBUTORS 2022-10-04 10:24:27 +02:00
0xd34df00d
c2dd824c58 [ base ] Implement Uninhabited for impossible Pointwise equalities 2022-10-02 21:41:26 +01:00
stefan-hoeck
9aa9e98a35 [ lint ] this is so silly 2022-09-27 12:29:09 +02:00
stefan-hoeck
f04a29926d [ doc ] update changelog 2022-09-27 12:15:17 +02:00
Zoe Stafford
02dfd6ff6c
Trans deps v3 (#2584)
* make `depends` collect all transitive dependencies

This happens by installing the (modified) ipkg file along with ttc files

* [ fix ] parsing a package shouldn't always set sourceDir

* linter *sigh*

* Fix test, add changelog

`asDepends` has been changed to `setSrc` as that is for me more intuitive

in idris2/pkg006 the version field was removed from the ipkgs of bar-baz and quux
as idris now expects the version to match the folder

idris2/pkg010 explicitly disables incremental compilation, to prevent extra log info

* (hopefully) fix idris2/pkg13 test on windows

* Actually install the version
This should make things start working

* [ fix ] use backtracking to resolve transitive dependencies

* [ fix ] use backtracking to resolve dependencies

* [ fix ] test pkg006

* Fix missing import

Co-authored-by: stefan-hoeck <hock@zhaw.ch>
2022-09-09 07:08:39 +01:00
0xd34df00d
b3c80e0765 [ base ] Add finToNatEqualityAsPointwise, an inverse of finToNatQuotient 2022-09-05 12:45:28 +01:00
Adowrath
1914606d40 Fix connect in linear module and add bytes-specific functions 2022-09-01 12:23:29 +01:00
Zoe Stafford
86c060ef13
Reimplement %nomangle in terms of %export (#2604)
* Reimplement %nomangle in terms of %export
Also deprecate %nomangle

* [ lint ] fix linter errors
2022-08-15 13:26:06 +01:00
G. Allais
84a504738c
[ doc ] add comments to generated javascript (#2594) 2022-07-18 17:30:56 +01:00
Denis Buzdalov
c03a39789f [ breaking ] Make arguments of runRWST like in other transformers
Put the `RWST` argument to be the last one. This makes such functions
to be easier used in point-free compositions and to be easily
interchangeable with existing `runStateT`-like functions.
2022-07-07 15:19:41 +01:00
Thomas E. Hansen
268a3520f3 [ base ] Port most of List.Quantifiers to List1
This doesn't include `Interleaving` and `Split`.
2022-06-09 09:05:10 +02:00
Thomas E. Hansen
5da3bc7d7c [ base ] Port List.Elem to List1 2022-06-09 09:05:10 +02:00
Zoe Stafford
b9001439b3 Revert "Transitive dependencies v2 (#2496)"
This reverts commit 51f952714d.
2022-06-08 06:35:39 +01:00
Zoe Stafford
51f952714d
Transitive dependencies v2 (#2496)
* make `depends` collect all transitive dependencies

This happens by installing the (modified) ipkg file along with ttc files

* [ fix ] parsing a package shouldn't always set sourceDir

* linter *sigh*

* Fix test, add changelog

`asDepends` has been changed to `setSrc` as that is for me more intuitive

in idris2/pkg006 the version field was removed from the ipkgs of bar-baz and quux
as idris now expects the version to match the folder

idris2/pkg010 explicitly disables incremental compilation, to prevent extra log info

* (hopefully) fix idris2/pkg13 test on windows

* Actually install the version
This should make things start working
2022-06-07 14:31:14 +01:00
Zoe Stafford
932a24baa1 Revert "make depends collect all transitive dependencies (#2469)"
This reverts commit fde6269c7e.
2022-05-21 06:49:07 +01:00
Zoe Stafford
fde6269c7e
make depends collect all transitive dependencies (#2469)
* make `depends` collect all transitive dependencies

This happens by installing the (modified) ipkg file along with ttc files

* [ fix ] parsing a package shouldn't always set sourceDir

* linter *sigh*

* Fix test, add changelog

`asDepends` has been changed to `setSrc` as that is for me more intuitive

in idris2/pkg006 the version field was removed from the ipkgs of bar-baz and quux
as idris now expects the version to match the folder

idris2/pkg010 explicitly disables incremental compilation, to prevent extra log info

* (hopefully) fix idris2/pkg13 test on windows
2022-05-20 16:20:54 +01:00
Denis Buzdalov
72f0a2ab09 [ re #950 ] Remove redunant legacy data definition
`Given` with `Always` from Idris 1 library are completely overridden by
`IsYes` and `ItIsYes` respectively, which have a more common naming.
This, however, may break some very old code (fixed by a trivial rename).
2022-05-14 08:24:20 +01:00
CodingCellist
36e38860b7
[ contrib ] Implement Show ParsingError (#2407) 2022-04-09 12:37:45 +01:00
Thomas E. Hansen
a644a85a57 [ base ] public export quantifier functions 2022-04-04 13:24:12 +02:00
Thomas E. Hansen
dc02e4d822 [ refactor ] Put Vect quantifiers in their own namespaces
This makes the code in `Data.Vect.Quantifiers` consistent with the files
`Data.List.Quantifiers` and `Data.SnocList.Quantifiers`.
2022-04-04 13:24:12 +02:00
Tom Harley
79c79f080c
[ doc ] Add documentation for lambda-lifted representation (#2314)
Co-authored-by: Thomas E. Hansen <teh6@st-andrews.ac.uk>
2022-04-01 10:32:15 +01:00
Denis Buzdalov
2538b1e82b
[ syntax ] Require indent for blocks like mutual and failing (#2387) 2022-03-31 12:54:38 +01:00
Denis Buzdalov
4c41b56dba [ doc ] Add some recent lib changes to the changelog 2022-03-24 22:19:30 +00:00
Denis Buzdalov
05d64483f6 [ refactor ] Factor out a type for primitive types out of Constant 2022-03-10 23:07:20 +00:00
CodingCellist
c5d96a10e7
[ base ] Split a list according to a decidable property (#2302) 2022-02-11 11:21:20 +00:00
CodingCellist
ad3a1c153c
Document Test.Golden change in CHANGELOG.md (#2301) 2022-02-02 11:36:28 +00:00
madman-bob
0ee9632e45
[ refactor ] Abstract Prelude.elem to work with all Foldables (#2294) 2022-02-01 21:34:29 +00:00
octeep
9a9412e1a2
make writeBufferData return the number of bytes that have been written (#2276) 2022-01-25 13:25:06 +00:00
octeep
f137d96cd6 update refc/buffer to check how many bytes have been read 2022-01-24 15:58:32 +00:00
Mathew Polzin
e7ed760016
[ new ] optional language version field to ipkg files. (#2256) 2022-01-20 10:05:53 +00:00
Ohad Kammar
ade8034bd1
[ refactor ] More IDE protocol (#2238) 2022-01-06 10:09:29 +00:00
Jan de Muijnck-Hughes
b99d05115b
[ CHANGELOG ] Fix CHANGELOG. (#2251)
* [ CHANGELOG ] Fix CHANGELOG.

Apparently, the older version of record syntax has now been deprectated.

This was not reflected in the CHANGELOG, and the CHANGELOG entry for an earlier version of Idris2 was erroneously updated to use the new syntax.

THis commit fixes the CHANGELOG.
2022-01-05 07:51:49 -08:00
Nick Drozd
ec5f40eec7
Injective follow-up (#2155) 2022-01-05 09:40:23 +00:00
Ohad Kammar
079c032036
Fix markdown linting (#2241)
Fix terminology spelling to adhere to the new super-linter

Co-authored-by: Ohad Kammar <ohad.kammar@ed.ac.uk>
2022-01-01 11:04:12 +00:00
teggot
d3aed0404c
[ fix #1959 ] use modern record update syntax (#2196) 2021-12-16 18:23:18 +00:00
Ruslan
516cb4a690
Rename lp/loadpackage to package (#2198)
Also clarifying the doc-string of `:loadpackage`
2021-12-16 15:58:29 +00:00
Mathew Polzin
0eba4c691e
Add %deprecate pragma (#2086) 2021-11-17 10:41:03 +00:00
Robert Wright
2a666dbaac Add System.run changes to CHANGELOG 2021-11-08 10:42:39 +00:00
Mathew Polzin
f078d5f5dc
clean up some deprecations (#2057)
* deprecate Data.Nat.Order.decideLTE

* Add properties for LTE/GTE that produce the difference.

* remove deprecated function now that it is available in the base library.

* remove two deprecated lines.

* remove module deprecated since v0.4.0

* fix prelude reference to renamed primitive.

* finish removing Data.Num.Implementations

* remove deprecated dirEntry function.

* remove deprecated fastAppend. Update CHANGELOG.

* replace fastAppend in test case

* replace fastAppend uses in compiler.

* remove new properties that weren't actually very new.
2021-10-24 12:06:57 +01:00
Mathew Polzin
a2ea7a76f4
Improvements to System.Random, specifically JS support. (#2009) 2021-10-19 00:04:25 +01:00
André Videla
e4d566b28c
Update documentation and changelog for string interpolation (#2013)
* Update documentation and changelog for string interpolation

* Fix typo in changelog

* fix documentation about desugaring of interpolate

* Update CHANGELOG.md

Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>

Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
2021-10-18 11:45:32 +01:00
Edwin Brady
a9ccf4db4f
Experimental Scheme based evaluator (#1956)
This is for compiled evaluation at compile-time, for full normalisation. You can try it by setting the evaluation mode to scheme (that is, :set eval scheme at the REPL). It's certainly an order of magnitude faster than the standard evaluator, based on my playing around with it, although still quite a bit slower than compilation for various reasons, including:

* It has to evaluate under binders, and therefore deal with blocked symbols
* It has to maintain enough information to be able to read back a Term from the evaluated scheme object, which means retaining things like types and other metadata
* We can't do a lot of the optimisations we'd do for runtime evaluation particularly setting things up so we don't need to do arity checking

Also added a new option evaltiming (set with :set evaltiming) to display how long evaluation itself takes, which is handy for checking performance.

I also don't think we should aim to replace the standard evaluator, in general, at least not for a while, because that will involve rewriting a lot of things and working out how to make it work as Call By Name (which is clearly possible, but fiddly).

Still, it's going to be interesting to experiment with it! I think it will be a good idea to use it for elaborator reflection and type providers when we eventually get around to implementing them.

Original commit details:

* Add ability to evaluate open terms via Scheme

Still lots of polish and more formal testing to do here before we can
use it in practice, but you can still use ':scheme <term>' at the REPL
to evaluate an expression by compiling to scheme then reading back the
result.

Also added 'evaltiming' option at the REPL, which, when set, displays
how long normalisaton takes (doesn't count resugaring, just the
normalisation step).

* Add scheme evaluation mode

Different when evaluating everything, vs only evaluating visible things.
We want the latter when type checking, the former at the REPL.

* Bring support.rkt up to date

A couple of missing things required for interfacing with scheme objects

* More Scheme readback machinery

We need these things in the next version so that the next-but-one
version can have a scheme evaluator!

* Add top level interface to scheme based normaliser

Also check it's available - currently chez only - and revert to the
default slow normaliser if it's not.

* Bring Context up to date with changes in main

* Now need Idris 0.5.0 to build

* Add SNF type for scheme values

This will allow us to incrementally evaluate under lambdas, which will
be useful for elaborator reflection and type providers.

* Add Quote for scheme evaluator

So, we can now get a weak head normal form, and evaluate the scope of
a binder when we have an argument to plug in, or just quote back the
whole thing.

* Add new 'scheme' evaluator mode at the REPL

Replacing the temporary 'TmpScheme', this is a better way to try out the
scheme based evaluator

* Fix name generation for new UN format

* Add scheme evaluator support to Racket

* Add another scheme eval test

With metavariables this time

* evaltiming now times execution too

This was handy for finding out the difference between the scheme based
evaluator and compilation. Compilation was something like 20 times
faster in my little test, so that'd be about 4-500 times faster than the
standard evaluator. Ouch!

* Fix whitespace errors

* Error handling when trying to evaluate Scheme
2021-09-24 20:38:55 +01:00
Edwin Brady
ada3eb4449
Version 0.5.0 (#1931)
* Update version numbers and bootstrap scheme

* Use wall clock time for search timeouts

That was always the intention in any case, rather than the process time.
2021-09-18 16:07:34 +01:00
Edwin Brady
22c12046df
Small fix for incremental compilation (#1930)
* Small fix for incremental compilation

In incremental mode we need to add the arity of a compiled definition to
the hash, because if that changes, we need to rebuild the dependencies
too to make sure the arity is correct at the call site

* Fix indentation in CHANGELOG
2021-09-18 14:12:20 +01:00
Guillaume ALLAIS
257783275e [ new ] --total cli flag 2021-09-03 12:07:29 +01:00
Guillaume ALLAIS
a7d73d0d3d [ new ] ellipses for with patterns
Rather than Agda's `...` we use the common symbol for "I don't care": `_`.
2021-08-31 22:50:46 +01:00
Kamiλ Shakirov
2428b356f4
[ install, docs ] Add a new makefile target to install libdocs (#1884) 2021-08-31 18:41:03 +01:00
Mathew Polzin
590a9b15b3
Add a --list-packages command to the idris2 executable (#1824) 2021-08-10 09:44:53 +01:00
Edwin Brady
170af1e87a
Use Closures instead of NF in binders for normal forms (#1823)
* Skip forced arguments in conversion check

This isn't always safe - we have to have also checked the type of the
things we're converting - but in the place where it is safe it can be a
pretty significant saving.

* Use Closures, not NF, in Binders for normal forms

This means we don't need to reduce argument types during unification if
we don't need to. Also, we now try to avoid reducing closures during
unification if they are unified with a metavariable. Together, this
saves a huge amount of unnecessary evaluation in programs that do a lot
of compile time evaluation.

* Didn't mean to update idris2api.ipkg

* Fix dodgy merge
2021-08-08 17:05:29 +01:00
André Videla
396ebe2023 Add documentation for new string literals 2021-07-18 22:32:26 +00:00
Edwin Brady
877e830133 A couple of documentation corrections
A CHANGELOG update, and a correction on data type names which has been
wrong in the crash course for some time now!
2021-07-17 14:20:32 +01:00
Nick Drozd
a07d42ac91
Delete old Order file, update changelog and contributors (#1685) 2021-07-12 10:53:45 +01:00
Edwin Brady
c95ebd554d Disable incremental compilation on Windows
It currently doesn't work anyway, so fall back to whole program
compilation which at least means the test doesn't get in the way.
2021-07-11 16:20:47 +01:00
Edwin Brady
86c75bae2c Add test for interfaces in parameter blocks
I thought these didn't work. Apparently they do. I should find out when
that happened because it might have been a side effect of something
else!
2021-07-10 20:15:50 +01:00
Edwin Brady
ab5623efa9 Update CHANGELOG 2021-07-10 19:16:29 +01:00
CodingCellist
fac0e32f48
[ fix ] Chez channels (#1596) 2021-07-02 13:13:50 +01:00
Kamiλ Shakirov
8e30b296c0
[ refactor ] Remove Data.Strings module (#1607) 2021-06-28 13:48:37 +01:00
Edwin Brady
d6370380e6 Missing interface methods now cause an error
This was always the intended behaviour, but until now not implemented!
This caught a couple of issues in contrib and a test.
2021-06-27 20:03:19 +01:00
Edwin Brady
84c2a497bc Add incremental compilation note to INSTALL.md 2021-06-27 16:35:43 +01:00
Edwin Brady
5a84623629 Update CHANGELOG 2021-06-27 16:33:04 +01:00
Edwin Brady
980b6174ec Added --mkdoc to CHANGELOG too 2021-06-23 18:31:31 +01:00
Edwin Brady
6511412518 Change heading in CHANGELOG 2021-06-23 18:25:35 +01:00
Edwin Brady
af1cbbf913 Update CHANGELOG
Missing timeout command and a note on performance
2021-06-23 16:13:02 +01:00
Fabián Heredia Montiel
657699a866
[doc] Add missing entries and refactor CHANGELOG.md (#1566) 2021-06-18 16:45:00 +01:00
CodingCellist
55f8bc3b90
Improve case-splitting formatting to not introduce new whitespace; add a bit of comments+docs. (#1553) 2021-06-17 16:48:59 +01:00
Kamil Shakirov
7692de67aa Allow underscores in integer literals to aid readability 2021-06-15 13:00:53 +01:00
Ohad Kammar
618c71477e
[ close #1384 ] built-in Snoc-lists [< 1, 2, 3 ] (#1383) 2021-05-20 12:56:25 +01:00
stefan-hoeck
eca25776c3 [ doc ] updated changelog 2021-05-18 20:25:26 +01:00
Zoe Stafford
7fe8c42116
[ builtin ] O(1) integerToNat for any 'Nat'-like type (#1403) 2021-05-13 18:44:24 +01:00
Matus Tejiscak
1d70a83fcd Mention Compiler.Separate in the CHANGELOG. 2021-05-11 09:45:01 +01:00
Matúš Tejiščák
4de7b2133a
[ new ] Add chez-sep codegen (#1359)
Co-authored-by: Johann Rudloff <johann@sinyax.net>
2021-05-11 08:20:19 +01:00
Stefan Höck
f028981e5a
[ fix #801 ] Use Number for up to 32 bit integers on JS backends (#1375) 2021-05-10 12:17:09 +01:00
Edwin Brady
53989f512f Convert all enumerations to integers at runtime
We were just doing Bool/Ordering but now generalised to everything where
all the consructors are nullary after erasure
2021-05-09 02:27:38 +01:00
Edwin Brady
4389224694 Merge github.com:idris-lang/Idris2 into caseofcase 2021-05-08 18:19:21 +01:00
Edwin Brady
6d37471ccc Add --profile flag
If set, when compiling this generates an executable which generates
profiling data. Currently supported by Racket and Chez, other backends
silently ignore it.
2021-04-29 15:18:59 +01:00
André Videla
9f39ad6ba8 Implement new parameters syntax
Previously, parameter block reused the same syntax as in Idris1:

```
parameters (v1 : t1, … , vn : tn)
```

Unfortunately this syntax presents some issues:
 - It does not allow to declare implicit parameters
 - It does not allow to specify which multiplicity to use
 - It is inconsistent with the syntax used for named arguments elsewhere
   in the language.

This change fixes those three problems by borrowing the syntax for
declaring type parameters in records:

```
parameters (v1 : t2) (v2 : t2) … (vn : tn)
```

It also enables other features like multiple declarations of arguments
with the same type:

```
parameters (v1, v2 : Type)
```
2021-04-23 19:02:48 +01:00
CodingCellist
89a84a34a4
Patch CVs and sleep in Racket (#1059) 2021-03-15 13:43:12 +00:00
Mathew Polzin
06586d401a
Add a test package to the Idris 2 project (#1162) 2021-03-09 18:27:05 +00:00
Edwin Brady
46f994e4c6 Update CHANGELOG 2021-02-28 14:48:37 +00:00
Edwin Brady
1d8166b1b2 Version number constraints in 'depends' field
Now reporting an error if we can't find a package that satisfies the
constraints. The version number field can still be a string (as it used
to be) but will give a deprecation warning - and the old style version
string wasn't used anyway.

Version constraints can have an upper and/or lower bound, which can be
inclusive or not.
2021-02-27 17:58:52 +00:00
Edwin Brady
1052c41a3c Use version number field in ipkg
Packages are now installed in a directory with their version number.
On adding a package directory, we now look in a local 'depends'
directory first (to allow packages to be installed locally to another
project) before the global install directory.
Dependencies can have version bounds (details yet to be implemented) and
we pick the package with the highest version number that matches.
2021-02-27 14:15:19 +00:00
Alex Gryzlov
a1221fdbfd
Document new :l behaviour (#1061)
Co-authored-by: Kamiλ Shakirov <ska80@users.noreply.github.com>
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
2021-02-15 18:56:05 +00:00
Wen Kokke
bd683938bf
Overhaul of concurrency primitives (#968)
Co-authored-by: Guillaume ALLAIS <guillaume.allais@ens-lyon.org>
2021-02-05 16:16:20 +00:00
Edwin Brady
e1ecefa205 Update CHANGELOG/CONTRIBUTORS
We need to keep the CONTRIBUTORS file up to date, to give people proper
credit where it's due. There may still be people missing - please feel
free to add your own name if you think it should be there!
2021-01-16 14:18:18 +00:00
Edwin Brady
e9f82afc4d CHANGELOG edits 2021-01-13 13:04:08 +00:00
Edwin Brady
ad632d825d Remove linearity subtyping
It's disappointing to have to do this, but I think necessary because
various issue reports have shown it to be unsound (at least as far as
inference goes) and, at the very least, confusing. This patch brings us
back to the basic rules of QTT.

On the one hand, this makes the 1 multiplicity less useful, because it
means we can't flag arguments as being used exactly once which would be
useful for optimisation purposes as well as precision in the type. On
the other hand, it removes some complexity (and a hack) from
unification, and has the advantage of being correct! Also, I still
consider the 1 multiplicity an experiment.

We can still do interesting things like protocol state tracking, which
is my primary motivation at least.

Ideally, if the 1 multiplicity is going to be more generall useful,
we'll need some kind of way of doing multiplicity polymorphism in the
future. I don't think subtyping is the way (I've pretty much always come
to regret adding some form of subtyping).

Fixes #73 (and maybe some others).
2020-12-27 19:58:35 +00:00
russoul
46519237cd Merge 2020-12-03 15:28:20 +03:00
Edwin Brady
0972e69287 Update changelog 2020-10-11 18:55:43 +01:00
russoul
939de39a57 Rename stuff a bit 2020-10-03 19:44:12 +03:00
russoul
b57b28a64e Implement new application syntax
Add syntax for bind-all-explicits

Add new record update syntax

Remove PInstance
2020-10-01 12:43:43 +03:00