Commit graph

2993 commits

Author SHA1 Message Date
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