Leonardo de Moura
cd73105dff
refactor(kernel/environment,library/private,library/init/lean/environment): move main module name to header
2019-06-03 09:14:23 -07:00
Leonardo de Moura
483f1efc4d
refactor(library/init/lean/environment): move fields that are rarely used to a separate structure, add setMainModuleName
2019-06-03 08:23:00 -07:00
Leonardo de Moura
6d39b8478f
chore(library/init/lean/environment): remove dead field
2019-06-03 08:08:04 -07:00
Leonardo de Moura
30a6a2ade8
feat(library/init/data, runtime): remove parray support from runtime, and implement them in Lean using Scala/Clojure Radix trees
...
The Scala/Clojure approach for persistent arrays works great with our
`reset/reuse`. We seem to be much more efficient than their
implementations because of `reset/reuse`. The new approach also seems
better than the old one implemented in the runtime, and has a few
advantages:
1- The reroot procedure used in the old approach required
synchronization for multi-threaded code, or we would need to perform
deep copies when sending `parray` objects between threads.
2- We don't need any runtime extension for the new approach.
3- The old approach used "trail lists" for undoing array updates.
This works well for bactracking search use cases, but it is bad
in use cases where we are simultaneously updating the persistent
arrays that have shared nodes.
2019-06-02 09:18:19 -07:00
Leonardo de Moura
3251f1c75b
feat(library/init/data/uint): add shift_left and shift_right
2019-06-01 10:57:08 -07:00
Leonardo de Moura
8d913e382d
feat(library/init/lean/compiler/constfolding): fold Nat.pow, UInt*.toNat and USize.toNat
2019-06-01 10:28:04 -07:00
Leonardo de Moura
c92fe75053
fix(library/init/lean/compiler/constfolding): Usize => USize
...
Camel case auto-conversion bug.
2019-06-01 09:42:22 -07:00
Leonardo de Moura
d2d2c32c81
feat(library/init/data/nat/bitwise): use lean::nat_land and lean::nat_lor
2019-05-31 21:55:57 -07:00
Leonardo de Moura
8256a48cda
fix(library/init/lean/compiler/ir/rc): uset live vars
2019-05-31 21:55:57 -07:00
Leonardo de Moura
d9cceec9eb
feat(library/init/lean/compiler/ir/emitcpp): avoid unnecessary var decls
2019-05-30 09:36:28 -07:00
Leonardo de Moura
d9856889d6
chore(*): cleanup
2019-05-30 07:30:07 -07:00
Leonardo de Moura
0f43c2e2d9
feat(library/init/data/array/basic): efficient heterogeneous Array.map
...
This commit also removes Array.hmap.
Motivation: I wanted to use Array.hmap as an example in the paper, but
I found it would be too distracting to explain why we had `Array.hmap`
and `Array.map`.
cc @kha
2019-05-25 16:32:59 -07:00
Leonardo de Moura
4b896bc71c
fix(library/init/lean/compiler/ir/rc): use updated ctx at addDecForAlt
...
Compiler was introducing unnecessary `dec` operations
2019-05-24 19:20:20 -07:00
Leonardo de Moura
3f26ec8777
fix(library/init/lean/compiler/ir/expandresetreuse): typo at consumed
2019-05-23 18:17:44 -07:00
Leonardo de Moura
7ef495a526
fix(library/init/lean/compiler/ir): use setTag at expandresetreuse
...
This commit also adds the instruction `setTag`, and removes `release`.
2019-05-23 17:41:14 -07:00
Leonardo de Moura
bf3575a316
feat(library/init/lean/compiler/ir): improve expandresetreuse
2019-05-23 17:23:50 -07:00
Leonardo de Moura
78fe0b901d
fix(library/init/lean/compiler/ir/resetreuse): bug at D
2019-05-23 16:57:59 -07:00
Leonardo de Moura
506c354a76
feat(library/init/lean/compiler/ir): push projections more aggresively
...
The implementation was not matching the C++ version
2019-05-23 15:03:51 -07:00
Leonardo de Moura
7cb5c04f4f
feat(library/init/lean/compiler/ir/expandresetreuse): first draft
2019-05-23 14:07:08 -07:00
Leonardo de Moura
c6c46df285
feat(library/init/lean/compiler/ir): develop expandresetreuse
2019-05-23 12:42:31 -07:00
Leonardo de Moura
f9f4e6c14b
feat(library/init/lean/compiler/ir): add expandresetreuse
2019-05-23 08:58:16 -07:00
Leonardo de Moura
8ba7dd4cff
feat(library/init/lean/compiler/ir): add del instruction for releasing memory
2019-05-23 08:01:15 -07:00
Leonardo de Moura
c6433460fb
chore(library/init/lean/compiler/ir/format): naming consistency
2019-05-22 18:46:50 -07:00
Leonardo de Moura
013f0c9edb
feat(library/init/lean/compiler/ir/rc): missing optimization
2019-05-22 18:46:43 -07:00
Leonardo de Moura
3e76e43843
fix(library/init/lean/compiler/ir/borrow): visit join point body
2019-05-22 17:31:56 -07:00
Leonardo de Moura
fe0141918a
fix(library/init/lean/compiler/ir) bug at addDecAfterFullApp
2019-05-22 16:30:42 -07:00
Leonardo de Moura
568bd1c269
fix(library/init/lean/compiler/ir/borrow): do not perform borrow inference for @[export] declarations
2019-05-22 11:44:34 -07:00
Leonardo de Moura
a8f8df1475
chore(library/init/lean/compiler): add export.lean
2019-05-22 11:27:25 -07:00
Leonardo de Moura
2408d6dd80
fix(library/init/lean/compiler/ir/boxing): created boxed version for externs
2019-05-22 10:56:51 -07:00
Leonardo de Moura
99d2f9931d
fix(library/init/lean/compiler/ir/resetreuse): typo
2019-05-22 08:45:29 -07:00
Leonardo de Moura
ef89945ea0
fix(library/init/lean/compiler/ir/emitcpp): tail call
...
Implement fix used at 4d2837430a in the new IR compiler.
2019-05-22 07:58:33 -07:00
Leonardo de Moura
64525116f5
fix(library/init/lean/compiler/ir): avoid compilation warning
2019-05-21 20:19:45 -07:00
Leonardo de Moura
c391bff33c
fix(library/init/lean/compiler/ir/emitcpp): misssing condition
2019-05-21 20:09:27 -07:00
Leonardo de Moura
f1fbe5cd61
feat(library/compiler/ir): add boxed version for extern constants
2019-05-21 17:55:58 -07:00
Leonardo de Moura
d90cfe5a1c
feat(library/init/lean/compiler/ir/boxing): generate boxed version
2019-05-21 17:35:43 -07:00
Leonardo de Moura
91745cd16b
fix(library/init/lean): remove hard coded file
2019-05-21 16:26:08 -07:00
Leonardo de Moura
40b890f220
fix(library/init/lean/compiler/ir/emitcpp): typo
2019-05-21 16:21:21 -07:00
Leonardo de Moura
5b3aec088e
feat(library/init/lean/compiler/ir/emitcpp): emit module initialization code
2019-05-21 16:06:10 -07:00
Leonardo de Moura
baa99aa4a5
fix(library/init/lean/compiler/ir/emitcpp): small bugs
2019-05-21 15:34:05 -07:00
Leonardo de Moura
ba9a10265e
feat(library/init/lean/compiler/ir/emitcpp): implement emitVDecl remaining cases
2019-05-21 14:55:11 -07:00
Leonardo de Moura
88cf3aa5e8
feat(library/init/lean/compiler/ir/emitcpp): emit different kinds of application
2019-05-21 14:30:45 -07:00
Leonardo de Moura
ae8a51c718
feat(library/init/lean/runtime): expose runtime limit
2019-05-21 14:24:16 -07:00
Leonardo de Moura
3b5093ebe0
fix(library/compiler/ir): fix ret irrelevant
2019-05-21 13:32:11 -07:00
Leonardo de Moura
5a72368967
feat(library/init/lean/compiler/ir): improve checker
2019-05-21 13:18:56 -07:00
Leonardo de Moura
5aa8647b18
feat(library/init/lean/compiler/ir/emitcpp): more cases
2019-05-21 10:54:58 -07:00
Leonardo de Moura
f3e13c18f8
fix(library/init/lean/compiler/ir): reset
2019-05-21 10:28:50 -07:00
Leonardo de Moura
cc4c26e8ab
feat(library/init/lean/compiler/ir/emitcpp): add some missing cases
2019-05-21 10:21:52 -07:00
Leonardo de Moura
510de7a3a9
feat(library/init/lean/compiler/ir/emitcpp): emitBlock
2019-05-21 09:20:19 -07:00
Leonardo de Moura
636415f645
chore(library/init/lean/compiler/ir/emitcpp): minor
2019-05-21 08:46:20 -07:00
Leonardo de Moura
49ef6e474a
feat(library/init/lean/compiler/ir/emitcpp): better error messages
2019-05-21 08:17:55 -07:00