Leonardo de Moura
5402178f73
test(tests/playground): fix tests
...
Forgot to add them.
2019-03-11 08:11:00 -07:00
Leonardo de Moura
a1cbd39d74
feat(library/init/lean/extern): remove restriction from expand_extern_pattern
2019-03-10 11:42:39 -07:00
Leonardo de Moura
ff3bf508aa
feat(library/init/fix, runtime): add fixpoint2, ..., fixpoint6
...
The idea is to avoid allocating tuples when creating the fixpoint of
nary functions. For example, consider the new tests:
- tests/playground/fix.lean
- tests/playground/fix_with_tuples.lean
The second one (`fix_with_tuples`) uses the `fix` operator and tuples. For input = 20,
it creates more than 1 million extra objects. The first implementation
(`fix.lean`) using `fix₂` avoids this overhead.
TODO: Add support for pattern #N with N > 9 at
```
def expand_extern_pattern_aux (args : list string) : nat → string.iterator → string → string
```
2019-03-10 11:19:02 -07:00
Leonardo de Moura
4ca9c6f22e
feat(runtime): add efficient fixpoint implementation
2019-03-10 10:09:57 -07:00
Leonardo de Moura
eb2633a5f2
fix(runtime/alloc): segment recycling
2019-03-09 13:42:55 -08:00
Leonardo de Moura
8f6998acac
fix(runtime/alloc): we may deallocate in a new thread before we allocated anything
2019-03-09 13:20:06 -08:00
Leonardo de Moura
01b4983fa2
fix(runtime/object): string_utf8_extract
2019-03-09 12:57:51 -08:00
Leonardo de Moura
67944a6c81
test(tests/compiler/str): new test for utf8 primitives
2019-03-09 12:41:33 -08:00
Leonardo de Moura
ab73553bf2
chore(boot): update
2019-03-09 12:40:43 -08:00
Leonardo de Moura
c862ce4a75
feat(runtime, library/init/data/string/basic): add utf8_pos
...
`utf8_pos` is a low level alternative for `string.iterator`.
TODO: implement `string.iterator` using it.
2019-03-09 12:30:19 -08:00
Leonardo de Moura
2c3cfcf1dd
feat(library/init/data/char/basic): add char.utf8_size
2019-03-09 10:46:29 -08:00
Leonardo de Moura
402034df1f
chore(library/init/data): move usize to uint
2019-03-09 10:32:23 -08:00
Leonardo de Moura
2032b10482
feat(library/init/data): bitwise operations
2019-03-09 10:19:35 -08:00
Leonardo de Moura
114f7ed190
feat(tests/playground/flat_parser): minor edits
...
We need a low level string.iterator to efficiently implement
primitives such as `str`.
2019-03-09 08:08:37 -08:00
Leonardo de Moura
d2ef708763
feat(library/compiler/ll_infer_type): _unreachable
2019-03-09 07:49:51 -08:00
Leonardo de Moura
489eaf3b71
test(tests/playground/flat_parser): experiment
2019-03-08 17:09:42 -08:00
Leonardo de Moura
8799056607
chore(boot): update
2019-03-08 12:13:06 -08:00
Leonardo de Moura
4828df1c7a
chore(library/init/lean/frontend): revert 4333ab620
...
The specializer has been fixed. So, we don't need this workaround
anymore.
2019-03-08 12:06:49 -08:00
Leonardo de Moura
b43ebab32c
fix(library/compiler/specialize): we should not lambda abstract join points
2019-03-08 11:54:51 -08:00
Leonardo de Moura
7b1d15ec43
fix(library/compiler/specialize): avoid work duplication in the specializer
2019-03-08 11:21:49 -08:00
Leonardo de Moura
baec9a1b78
chore(library/init/lean/compiler/ir): minor
2019-03-08 09:14:54 -08:00
Sebastian Ullrich
6a96d94259
chore(boot): update
2019-03-08 17:26:02 +01:00
Sebastian Ullrich
d0929c93cd
perf(library/init/lean/frontend): make file_map construction explicit, do it only once
2019-03-08 17:17:27 +01:00
Sebastian Ullrich
ef7053dac9
chore(boot): update
2019-03-08 17:05:42 +01:00
Sebastian Ullrich
4333ab620c
refactor(library/init/lean/frontend): use direct unbounded recursion instead of iterate_eio
2019-03-08 17:04:46 +01:00
Sebastian Ullrich
0580ce7cfa
chore(boot): update
2019-03-08 15:34:37 +01:00
Sebastian Ullrich
e0bbc094ad
chore(library/init): remove coroutines from stdlib
2019-03-08 15:34:17 +01:00
Sebastian Ullrich
234e4d1e8a
refactor(library/init/lean/elaborator): replace coroutines with explicit state
2019-03-08 15:23:01 +01:00
Leonardo de Moura
9962441b7b
chore(boot): update
2019-03-07 15:44:43 -08:00
Leonardo de Moura
db6f08e66d
feat(library/init/lean/compiler/ir): collect fnbody free variables
2019-03-07 15:37:45 -08:00
Leonardo de Moura
27028309a3
feat(library/init/lean/kvmap): add == for kvmap
2019-03-07 14:12:10 -08:00
Leonardo de Moura
a836bcc204
feat(library/init/lean/compiler/ir): alpha equivalence
2019-03-07 13:50:35 -08:00
Leonardo de Moura
29770d73b3
chore(boot): update
2019-03-07 12:49:53 -08:00
Leonardo de Moura
67f4698593
feat(library/compiler): do not generate code for decls that have irrelevant types
...
We were generating hundreds of definitions that just return
`lean::box(0)`.
2019-03-07 12:48:16 -08:00
Leonardo de Moura
057d90b7ff
chore(runtime/object): track number of external objects allocated
2019-03-07 12:31:05 -08:00
Leonardo de Moura
06be451110
chore(boot): update
2019-03-07 11:30:51 -08:00
Leonardo de Moura
9fc813e601
fix(library/compiler/llnf): polymorphic projection resulting type
2019-03-07 11:24:08 -08:00
Sebastian Ullrich
81615fc856
refactor(library/init/lean/parser/module): replace coroutines with explicit snapshot state
2019-03-07 10:32:28 -08:00
Leonardo de Moura
4744d12e38
chore(boot): update
2019-03-07 10:26:05 -08:00
Leonardo de Moura
0d4da4bc76
fix(library/init/lean/elaborator): borrow annotations
...
@kha I see you found this problem too :)
2019-03-07 10:26:40 -08:00
Leonardo de Moura
b5b2adea49
refactor(runtime): proper external objects without vtable
...
A C++ vtable at `external_object` is bad because it prevents users
from implementing external object in different programming languages.
Another problem was memory leaks because of the vtable in the
beginning of the object.
cc @kha
2019-03-07 10:26:05 -08:00
Leonardo de Moura
4e04d373e4
feat(library/init): unicode notation for heq: ≅
2019-03-07 10:21:14 -08:00
Leonardo de Moura
819d17ebbd
chore(library/init/lean/compiler/ir): use has_beq
2019-03-07 10:21:14 -08:00
Leonardo de Moura
79521e7e49
feat(library/init/core): add has_beq type class
2019-03-07 10:21:14 -08:00
Leonardo de Moura
67b01cddd0
chore(library/init): heq notation == ==> ~=
2019-03-07 10:21:14 -08:00
Leonardo de Moura
626d155c81
feat(library/init/lean/compiler/ir): alpha eqv for lean.ir.expr
2019-03-07 10:21:14 -08:00
Leonardo de Moura
2984d6838c
chore(library/compiler/ll_infer_type): dead variable
2019-03-07 10:21:14 -08:00
Sebastian Ullrich
1e248013f7
chore(runtime/alloc): don't init heap if LEAN_SMALL_ALLOCATOR is off
...
makes tracking down leaks a bit nicer
2019-03-07 15:52:06 +01:00
Sebastian Ullrich
35be90b3a1
chore(boot): update
2019-03-07 15:51:55 +01:00
Sebastian Ullrich
0e01871182
fix(library/init/lean/elaborator): re-add borrow annotations
2019-03-07 15:51:40 +01:00