Commit Graph

71 Commits

Author SHA1 Message Date
Attila Lendvai
4a75d71c02 [ ci ] update previous version to v0.5.1, and super-linter to v4.8.5
The current super-linter v3 line is broken due to a failed backport,
they recommend to use the v4 line:
https://github.com/github/super-linter/issues/2253

Pick a specific version, so that such transient linter bugs won't
camouflage as Idris CI failures.
2021-12-27 18:04:25 -08:00
Guillaume ALLAIS
6b92fda5bd [ ci ] Add idris2-elab-util to the libs roster
[ci: libs]
2021-12-07 15:15:31 +00:00
Guillaume ALLAIS
d74c5f362a [ ci ] turn bootstrap-racket off 2021-10-29 17:57:55 +01:00
G. Allais
b9834978cb
[ re #2041 ] better runtime error for holey expression (#2045) 2021-10-26 12:43:39 +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
G. Allais
0c551eca87
[ ci ] new bootstrap-specific build (#1936) 2021-09-20 11:26:32 +01:00
Guillaume Allais
0e4168edbf [ ci ] ignore Release/ for idris2 builds 2021-08-31 13:56:45 +01:00
Guillaume ALLAIS
94811ba8e7 [ ci ] bring racket builds back
A new environment seems to have solved our issue.
Cf. actions/virtual-environments#3774
2021-07-30 16:18:58 +01:00
Guillaume ALLAIS
84b064330c [ ci ] add collie & frex
[ci: libs]
2021-07-27 13:58:41 +01:00
Mathew Polzin
523c0a6d78 actually, with the change to the super linter, there's really no point in having CI work on both master and main at the same time, we just need to rename the branch right away for a smooth transition. 2021-07-22 13:42:45 +01:00
Mathew Polzin
7c85971698 Make sure main branch is covered in addition to master during the transition. Make the default branch for linting the main branch. 2021-07-22 13:42:45 +01:00
G. Allais
9f0a70626a
[ ci ] turn ubuntu-bootstrap-racket off for now (#1772)
[ci: skip]
2021-07-22 12:27:34 +01:00
G. Allais
34167d58bb
[ ci ] controlling builds via commit messages (#1766) 2021-07-21 16:49:32 +01:00
Ben Hormann
74db7714d4
[fix] Loading libidris2_support.dll with Racket (#1583) 2021-07-21 14:35:21 +01:00
Stiopa Koltsov
eabab4bdea Split Windows CI build into multiple steps
It's easier to follow Windows CI output this way.
2021-07-19 08:02:06 +01:00
André Videla
8130b660d7
Merge pull request #1725 from andrevidela/update-proposal-template
Update issue template for proposals
2021-07-17 10:06:36 +00:00
André Videla
d1e6726f70 Update issue template for proposals 2021-07-16 12:47:57 +00:00
Stiopa Koltsov
afaf416673 Write files into bootstrap-build directory during bootstrap
... instead of `bootstrap` which contains source files. Make it easier to understand
how build works, and in particular, which files are sources and
which files are generated.
2021-07-04 03:17:13 +01:00
G. Allais
168a69bdcf
[ ci ] just dump everything into a single file already (#1645) 2021-06-29 19:42:48 +01:00
Guillaume ALLAIS
a1ae5148b6 [ actions ] add quick check step 2021-06-29 11:36:22 +01:00
Stiopa Koltsov
855ee3cbd0 Ignore @generated in super-linter
Super-linter supports it now
2021-06-28 17:26:32 +01:00
Kamiλ Shakirov
8e30b296c0
[ refactor ] Remove Data.Strings module (#1607) 2021-06-28 13:48:37 +01:00
claymager
594cb0039c
Nix fixes (#1623) 2021-06-28 11:47:47 +01:00
Edwin Brady
452b0fc3f9 Fiddle with linter
We want duplicate headings in the CHANGELOG
2021-06-27 17:30:37 +01:00
G. Allais
d2986e5fea
[ refactor ] to allow testpools to specify a backend (#1591) 2021-06-21 22:12:17 +01:00
Fabián Heredia Montiel
a28bc65544
Fix deadlocks [Rebased, Squashed] (#1536)
Co-authored-by: Arnaud Bailly <arnaud.oqube@gmail.com>
Co-authored-by: Guillaume Allais <guillaume.allais@ens-lyon.org>
Co-authored-by: Fabián Heredia Montiel <fabianhjr@protonmail.com>
Co-authored-by: Ruslan Feizerakhmanov <me@russoul.me>
2021-06-15 14:31:31 +01:00
G. Allais
d69e35cb0c
[ re #1466 ] Actually error out with -Werror (#1474) 2021-05-27 11:57:39 +01:00
Robert Wright
1e15ff31d3 Disable C file linting 2021-05-20 14:25:16 +01:00
Michael Messer
890810e9b6
Remove unsecure commands (#1433) 2021-05-20 10:21:39 +01:00
Stefan Höck
6cdf05f1ec
[ new ] Add Int(8/16/32/64) (#1352)
This adds new `Int8`, `Int16`, `Int32` and `Int64` data types
to the compiler, thus working towards properly specified integer
types as discussed in #1048.

In addition, the following changes / corrections are made:

* Support casts from `Char`, `String`, and `Double` to all integer
  types (and back). This fixes #1270.
* Make sure that all casts to limited-precision integers are properly
  bounds checked (this was not the case so far for casts from `String`
  and `Double` to `Int`)
* Add a thorough set of tests to make sure all bounds checks work
  correctly for all supported casts and arithmetic operations
2021-05-04 08:22:06 +01:00
Niklas Larsson
69c29269ed add tests to Windows CI 2021-04-12 15:48:46 +02:00
Guilherme Silva
4144510bb3
Added new nix functionalities (#1154) 2021-03-15 14:21:50 +00:00
Mathew Polzin
9f8a8b5d76
Add a total way of reading files in. (#1070) 2021-02-18 11:13:25 +00:00
G. Allais
399a2adb15
[ fix #1043 ] throw error if compileExpr failed (#1052)
Also adding a CI target testing the gambit backend.
2021-02-10 21:10:27 +00:00
GustavoMF31
7f495999bd
Make :typeat a useful command (#998)
Co-authored-by: Guillaume ALLAIS <guillaume.allais@ens-lyon.org>
2021-02-05 16:15:40 +00:00
russoul
9ff5c14aaa [ ci ] Fix API testing 2021-02-04 20:12:15 +00:00
Stiopa Koltsov
e6447e7515 Check docs in CI 2021-02-04 14:59:14 +00:00
Stiopa Koltsov
cffade6bf8 Run super-linter in all branches
Use the same trigger as in the rest of jobs.

Before submitting a PR, commit is pushed to a private branch where
the jobs are executed. Super-linter should be executed in these
jobs as well to get signal about linting issue before submitting a
PR, to reduce noise to PR reviewers.
2021-02-04 14:52:49 +00:00
GustavoMF31
2d2cd4d52c Exclude "expected" files from linting
Those files are part of tests and hold what should be the output of the
compiler. If they are included in the linting, warnings will be emitted
when one of the tests in which the compiler outputs a line with trailing
whitespace is edited, which is not desirable.
2021-02-01 11:11:41 +00:00
Silvan Mosberger
48b25debec
Update Nix version in CI
Fixes

  invalid operation 96

errors
2021-01-29 22:30:44 +01:00
Fabián Heredia Montiel
b81b390f20 Refactor bootstrap and CI action to speedup CI 2021-01-27 20:39:42 +00:00
Stiopa Koltsov
0231ceaf8d Disable indents check (properly this time)
* `.ecrc` was in incorrect directory
* add another option for extra precaution
2021-01-21 14:13:35 +00:00
Stiopa Koltsov
68eecce0f4 Add super-linter
Example run with error:
[here](https://github.com/stepancheg/Idris2/runs/1718861440?check_suite_focus=true)

The downside is super-linter runs for 3 minutes. But that's probably expected
since the linter is [provided by GitHub](https://github.com/github/super-linter).

Two days ago when I submitted #931 I did not know super-linter exists.
2021-01-21 11:31:35 +00:00
Stiopa Koltsov
6d89899a06 GitHub workflow to schedule linter 2021-01-16 10:00:03 +00:00
Fabián Heredia Montiel
a15325fdb6
Update previous-build action from 0.2.2 to 0.3.0 (#925) 2021-01-15 18:00:46 +00:00
Guilherme Silva
7a7504c956
Added nix files (#855) 2021-01-15 17:20:52 +00:00
Edwin Brady
8026c377a5 Skip the tests when building previous version
After all, we tested it when we shipped it. Didn't we?
2020-12-29 19:43:19 +00:00
Edwin Brady
b02f3e7cec Add CI to build from previous version
This is a first attempt so I've probably got something wrong...
In theory, it ought to be possible to skip the tests for the previous
version. All we're interested in here is whether it builds successfully,
to check that we haven't broken any APIs and not noticed.
2020-12-29 19:17:03 +00:00
russoul
a7cb2745bc Fix CI 2020-11-23 18:06:23 +00:00
Guillaume ALLAIS
7192ef28a3 [ test ] add IDRIS2_TESTS_CG env variable 2020-10-16 14:44:11 +01:00