Commit Graph

726 Commits

Author SHA1 Message Date
Edwin Brady
728ef085a5 Write out less metadata
For the types of local names, don't write out the environment - it's
going to be repeated for every name, mostly it's unhelpful, and if you
want to see the types of other names you can ask directly. This can save
a huge amount of time when environments are slightly complicated.
2019-09-22 18:01:29 +01:00
Arnaud Bailly
9c1f8b6f02
Merge branch 'master' into add-version-command 2019-09-22 15:50:13 +02:00
Edwin Brady
131841b545 Don't write out metadata we don't need
This includes: metadata collected when elaborating impossible cases,
which are just discarded whatever happens; and, types of names of global
definitions, which we can get from the context anyway. This has quite an
impact on performance, because their environment and types have to be
encoded and written out (which, by the way, we could probably do a lot
quicker by organising them by environment so we only have to write out
each environment once).
2019-09-22 14:19:24 +01:00
Edwin Brady
15d25eb4d2 Fix buffer sizing problem in TTCs
Turns out you can contrive to have buffer overruns if you use an unsafe
buffer library... oops! When resizing a buffer, we need to make sure
that the new size is enough for the thing we're about to add. This is
almost certainly the cause of #95.
2019-09-22 12:01:51 +01:00
Edwin Brady
7825d216c0 Push constraint name into default method impls
If a default method implementation refers to another method in the
interface, it's going to be one from the interface being defined, so
push it through explicitly.
This is only going to be guaranteed to be the case for default method
implementations - we can't assume anything for other implementations.
Fixes #77
2019-09-20 19:01:07 +01:00
Edwin Brady
8a255da8ea
Merge pull request #101 from luochen1990/feat-reimpl-rig
reimpl: rigPlus & rigMult in Core/TT
2019-09-20 17:36:53 +01:00
LuoChen
8d5f72c762 reimpl: rigPlus & rigMult in Core/TT 2019-09-20 13:30:13 +08:00
Edwin Brady
2f20f7e136 Add missing source file
(I did add this, then I messed around with git and apparently broke it
without noticing. Oops!)
2019-09-19 13:09:52 +01:00
Edwin Brady
65b3ddb81b Add --libdir option
This makes it easier for more complicated packages (e.g. network, which
needs to install a C shared library) to know where to put things without
having to work out the prefix themselves.
2019-09-19 13:04:39 +01:00
Edwin Brady
a38cce4c90 Record erasable args in definitions
This could allow us to actually erase (rather than compile with nil)
although experiments show that has no impact on performance. It is
useful to see, though, and other back ends may benefit.
2019-09-19 09:56:19 +01:00
Edwin Brady
15289b8222 Need to include version number in package paths
Fixes #100
2019-09-18 11:26:08 +01:00
Edwin Brady
9b639eee35 Nat optimisation needs to look under lambda
Names are saturated, so there might be a lambda in the term we're
optimising. Fixes #62
2019-09-18 10:00:30 +01:00
Edwin Brady
cd2342c45e Tweak ambiguity resolution rules for interfaces
Fixes #85. The pruning of ambiguous names by type should only rule out
%allow_overload functions if their type is not a concrete match for the
target.
2019-09-14 12:33:46 +01:00
Edwin Brady
33780dd5e1 Merge branch 'master' of github.com:edwinb/Idris2 2019-09-14 11:34:32 +01:00
Edwin Brady
d3f3b75fe6
Merge pull request #99 from abailly/fix-network-tests
remove another message to make network tests more reliable
2019-09-14 11:34:24 +01:00
Arnaud Bailly
4194409682 remove another message to make network tests more reliable 2019-09-13 18:43:35 +02:00
Arnaud Bailly
295058130e
Merge branch 'master' into add-version-command 2019-09-13 17:33:14 +02:00
Edwin Brady
253a34dee6 Merge branch 'master' of github.com:edwinb/Idris2 2019-09-13 13:19:35 +01:00
Edwin Brady
65e7bdb153
Merge pull request #98 from clayrat/code-golf
code golfing
2019-09-13 13:18:22 +01:00
Edwin Brady
e08ff47a93
Merge branch 'master' into code-golf 2019-09-13 13:17:39 +01:00
Edwin Brady
9c01bbc886
Merge pull request #97 from lodi/coreutils
Fixed #!/usr/bin/env shebang for Chez backend
2019-09-13 13:14:39 +01:00
Edwin Brady
3169fd45f3
Merge pull request #90 from xoltar/macos-chez
Added note to INSTALL.md to recommend Mac OS X users install Chez fro…
2019-09-13 13:13:30 +01:00
Edwin Brady
4159d43432
Merge pull request #75 from abailly/configurable-ide-mode-socket
Configurable ide-mode-socket REPL
2019-09-13 13:13:02 +01:00
Edwin Brady
421b15aa24 Detect cycles in imports 2019-09-07 14:54:29 +01:00
Alex Gryzlov
e669140f9a code golfing 2019-09-05 03:21:43 +03:00
Edwin Brady
412930522e Put idris version number in package install path
Since they'll be incompatible between different Idris2 versions, this
helps protect against importing the wrong thing by mistake. Also, it
means the canonical place for the version number is now the top level
Makefile.

You'll need to delete src/YafflePaths.idr before rebuilding, since it's
now generated slightly differently.
2019-09-04 16:20:26 +01:00
Edwin Brady
65db4fbf96 Put built ttcs in build/ttc, rather than build
This is so that we can put other build artefacts (e.g. executables) in
properly organised subdirectories of build, e.g. build/bin/chez,
build/bin/js, etc.
2019-09-04 12:41:16 +01:00
Edwin Brady
68b0d64879 Add parameterised pointer type
For at least a bit of safety in foreign APIs. AnyPtr has the old Ptr
behaviour.
2019-09-04 10:25:45 +01:00
Edwin Brady
de0a097a40 First attempt at a C FFI via Racket
This aims to be consistent with the notation for the way the Chez->C FFI
loads libraries.
2019-09-03 17:02:23 +01:00
Edwin Brady
25bbaf7d74 Add dynamic library extension
In the Chez back end, if the library spec is a name and a version
number, build an appropriate guess for the library file name based on
the system extension.
2019-09-03 14:37:16 +01:00
Edwin Brady
bb246a072a Experimenting with a new FFI
Functions can be declared as %foreign with a list of calling
conventions, which a backend will work through until it finds one it can
understand. Currently implemented only in Chez backend. If this works
out, I'll implement it for Racket too, and remove the old primitive
functions.

There's a bit more boiler plate here than before, but it has the benefit
of being more extensible and portable between different back ends.

Some examples, pending proper documentation:

%foreign "C:puts,libc" "scheme:display"
putline : String -> PrimIO ()

%foreign "C:exp, libm.so.6, math.h"
fexp : Double -> Double

%foreign "C:initscr, ncurses_glue.so, ncurses.h"
prim_initscr : PrimIO ()
2019-09-02 17:10:48 +01:00
lodi
ba7e0e01d3 Fixed #!/usr/bin/env shebang for Chez backend
On NixOS, idris2 can't find scheme in the usual locations, so it
defaults to generating the following shebang:

  #!/usr/bin/env scheme --script

The `env` program interprets `scheme --script` as one monolithic
command, instead of as a command and one argument.

  /usr/bin/env: ‘scheme --script’: No such file or directory
  /usr/bin/env: use -[v]S to pass options in shebang lines

The -S flag forces `env` to split on whitespace in the intuitive
manner.
2019-08-30 14:48:54 -04:00
Arnaud Bailly
3dcd48e08b
Merge branch 'master' into configurable-ide-mode-socket 2019-08-29 16:24:17 +02:00
Arnaud Bailly
09f71182b5
expose version components in Makefile 2019-08-29 14:37:38 +02:00
Arnaud Bailly
643fc9c4c7
provide Version command in ide-mode 2019-08-29 14:37:38 +02:00
Arnaud Bailly
558776c4c4
remove version number from banner at REPL startup
otherwise all tests will need to change every time version changes...
2019-08-29 14:37:04 +02:00
Arnaud Bailly
4646bb0d1c
expose current Idris2 version as a proper type 2019-08-29 14:37:04 +02:00
Edwin Brady
f123fcaf84 Display output on network test fail
This still seems to be failing on travis, so let's see what it looks
like!
2019-08-29 12:56:13 +01:00
Edwin Brady
6a0cfa125a Update network build test
Since it's just to check that it's built successful and we can send a
message back and forth, remove the diagnostic message that might come
out in a different order depending on scheduling.
2019-08-29 11:50:14 +01:00
Edwin Brady
ea75fd21a1 Merge branch 'master' of github.com:edwinb/Idris2 2019-08-29 11:10:44 +01:00
Edwin Brady
09b13eef21
Merge pull request #89 from chrrasmussen/fix-integerToNat
Fixes #88: integerToNat hangs for negative integers
2019-08-29 11:07:50 +01:00
Edwin Brady
2005b82f6d
Merge pull request #81 from clayrat/file-leak
Fix file handle leaks
2019-08-29 11:04:35 +01:00
Edwin Brady
93de7d69b4
Merge pull request #80 from timsueberkrueb/repl-allow-empty-lines
Ignore empty lines in REPL
2019-08-29 11:01:54 +01:00
Edwin Brady
02c5aa7b61
Merge pull request #76 from ska80/ignore-build-artifacts
Ignore build artifacts
2019-08-29 11:01:06 +01:00
Edwin Brady
dba128ae69
Merge pull request #73 from chrrasmussen/add-output-flag
Add output file flag (-o) to CLI
2019-08-29 10:57:22 +01:00
Edwin Brady
0a8b50d31f
Merge pull request #72 from jfdm/make-test-output-better
Print expected and given output when test fails.
2019-08-29 10:52:30 +01:00
Edwin Brady
718f5963ce
Merge pull request #70 from jfdm/expand-ipkg-contents
Align the IPKG format more with the previous Idris implementation.
2019-08-29 10:51:41 +01:00
Edwin Brady
8975eeafb7 Make a start on reflection 2019-08-27 15:49:21 +01:00
Arnaud Bailly
3a33dc3d7d
add specialised option to listen on different host/port 2019-08-26 17:42:15 +02:00
Arnaud Bailly
43d9c575e1
Merge branch 'master' of https://github.com/edwinb/Idris2 into configurable-ide-mode-socket 2019-08-26 08:20:37 +02:00