Commit graph

36377 commits

Author SHA1 Message Date
Sebastian Ullrich
fb2ee24ba6 refactor(library/init/io): replace ioe with eio
Old MacDonald had a monad stack
eio = except_t io.error io
And in his stack he had I/O, io = state io.real_world
With a monad here and a monad there
Here a monad there a monad
Everywhere a monad!
2018-08-21 08:43:10 -07:00
Sebastian Ullrich
6b55e24ab7 feat(library/init/{io,control/except}): use lift_t to automatically upcast io and other errors 2018-08-21 08:43:09 -07:00
Sebastian Ullrich
9db688f4c2 fix(library/{vm/vm_io,init/io}): fix bugs and tests 2018-08-21 08:43:09 -07:00
Sebastian Ullrich
0936d4d81e feat(library/init/io): introduce has_eval class to customize #eval output 2018-08-21 08:43:09 -07:00
Sebastian Ullrich
37e5f03351 refactor(library/system/io): move into init 2018-08-21 08:43:09 -07:00
Sebastian Ullrich
a260bf91d4 refactor(library/vm/vm_io,library/system/io): remove io classes, make errors explicit 2018-08-21 08:43:09 -07:00
Sebastian Ullrich
a02fd7fb4c feat(library/noncomputable): sorts are computable
i.e.

constant io.real_world : Type
2018-08-21 08:43:09 -07:00
Sebastian Ullrich
6e3a6ff40f feat(library/noncomputable): mark all VM builtins as computable 2018-08-21 08:43:09 -07:00
Leonardo de Moura
fd9bc9e15b feat(frontends/lean/builtin_cmds): write/read compacted region file 2018-08-20 16:35:37 -07:00
Leonardo de Moura
8944cb6951 fix(frontends/lean/builtin_cmds): do not include time spent copying memory
We will read the data from the disk and give it directly to the
compacted_region object
2018-08-20 15:49:54 -07:00
Leonardo de Moura
38b23431a3 chore(runtime/compact): add inline 2018-08-20 15:30:21 -07:00
Leonardo de Moura
c75fb04322 feat(frontends/lean/builtin_cmds): add option for increasing the number of copies being compacted/serialized 2018-08-20 15:21:21 -07:00
Leonardo de Moura
7f9d131a1f chore(runtime/compact): one alloc per object 2018-08-20 14:46:06 -07:00
Leonardo de Moura
b8e4e94c91 feat(frontends/lean): add command for testing compacted regions 2018-08-20 14:39:15 -07:00
Leonardo de Moura
474a0c40c7 fix(runtime/compact): missing memcpy 2018-08-20 10:33:04 -07:00
Leonardo de Moura
dc1f5c0aa6 feat(runtime/object): task API functions can take thunks as arguments 2018-08-20 09:13:35 -07:00
Leonardo de Moura
a27aa53e88 refactor(runtime/compact): save task objects as thunks
TODO: modify task API and make sure all functions there can take thunks
instead of tasks as arguments.
2018-08-20 08:52:35 -07:00
Leonardo de Moura
db98397cc0 feat(runtime): object compactor
We need more testing and performance testing.
We also need to compare serializer and compacted_region.
2018-08-19 17:10:18 -07:00
Leonardo de Moura
ce504b4c21 feat(runtime/serializer): support for tasks 2018-08-18 14:52:29 -07:00
Leonardo de Moura
684085d93f refactor(runtime/object): delete data needed to execute task after it finishes 2018-08-18 14:33:27 -07:00
Leonardo de Moura
a0b5502821 fix(runtime/object): memory leak and simplify task_object
We remove per task condition_variable and use m_task_finished_cv.
The same condition_variable used to implement `wait_any`.
2018-08-18 10:29:12 -07:00
Leonardo de Moura
d0bc663f0d chore(runtime/object): avoid ugly handle_finished_rec
Users should not rely on the order the dependencies have beed inserted.
If the order matters, priorities should be used instead.
2018-08-17 18:15:58 -07:00
Leonardo de Moura
d52507c4b2 fix(runtime/object): memory leak 2018-08-17 18:12:17 -07:00
Leonardo de Moura
861592fe6a chore(runtime/object): cleanup 2018-08-17 15:43:01 -07:00
Leonardo de Moura
4bc8414d2b feat(runtime/object): use "weak pointers" in the task manager, and interrupt tasks at GC time 2018-08-17 15:35:00 -07:00
Leonardo de Moura
24444d65c4 refactor(runtime/object): do not use Lean runtime lists to implement the reverse dependency list in task objects 2018-08-17 14:42:43 -07:00
Leonardo de Moura
1d5411f455 feat(runtime/object): add support for io.wait_any 2018-08-17 13:04:06 -07:00
Leonardo de Moura
5f78087b08 feat(runtime/object): add support for io.has_finished 2018-08-17 12:36:48 -07:00
Leonardo de Moura
5e63e7806c chore(runtime/object): cleanup 2018-08-17 12:32:47 -07:00
Leonardo de Moura
ae9eac6781 feat(runtime/object): simplify and more tests 2018-08-17 09:41:22 -07:00
Leonardo de Moura
c863e86429 feat(runtime/object): primitives for interrupting threads 2018-08-17 09:25:40 -07:00
Leonardo de Moura
7a7d443ad5 test(tests/util/object): improve tests 2018-08-17 09:04:08 -07:00
Leonardo de Moura
0a2e9c109f fix(runtime/object): memory leak and violation at task_bind 2018-08-17 09:03:45 -07:00
Leonardo de Moura
510a5ffeaa chore(tests/util/object): adjust test 2018-08-17 08:48:11 -07:00
Leonardo de Moura
f5ecd8477f fix(runtime/object): memory leak 2018-08-17 08:47:29 -07:00
Leonardo de Moura
168eaefff5 fix(runtime/object): finalization and avoid leak 2018-08-17 08:32:33 -07:00
Leonardo de Moura
cc13c8ee7f refactor(runtime/object): remove unnecessary, fix malloc/delete mismatch 2018-08-17 08:10:05 -07:00
Leonardo de Moura
018542e2e1 fix(runtime/object): task bugs 2018-08-16 21:28:58 -07:00
Leonardo de Moura
066fbf2d5b refactor(runtime/object): remove state field 2018-08-16 20:46:14 -07:00
Leonardo de Moura
584eddee01 feat(runtime/object): add support for tasks
This is just the first draft. We still need a lot of testing.
2018-08-16 19:09:50 -07:00
Leonardo de Moura
67ab1ec8f2 chore(util/worker_queue): remove dead code 2018-08-16 14:14:57 -07:00
Leonardo de Moura
c322ef0cab fix(tests/util/object): use new calling convention for apply 2018-08-15 21:17:50 -07:00
Leonardo de Moura
d14831c470 fix(runtime/apply): apply should use the standard calling convention 2018-08-15 21:07:54 -07:00
Leonardo de Moura
c3be026645 chore(runtime/object): document calling convention for runtime primitives 2018-08-15 20:10:43 -07:00
Leonardo de Moura
74d94432da fix(runtime/object): make thunk_get thread safe 2018-08-15 15:34:15 -07:00
Leonardo de Moura
4ec43a84ca chore(runtime/object): document standard/borrowed calling convetion 2018-08-14 17:43:00 -07:00
Leonardo de Moura
f9bad161c9 chore(tests/util/object): fix "unused" variables warnings in release mode 2018-08-14 15:19:07 -07:00
Leonardo de Moura
bcb37ef862 feat(runtime): thunk serialization 2018-08-14 15:15:12 -07:00
Leonardo de Moura
8a96fde229 feat(library/init/control/coroutine): add coroutine
Remark: the termination proofs are commented because Lean 4 is
currently ignoring them and accepting non-terminating functions.

These files are based on an experiment implemented using Lean 3.
We can find it here:
https://gist.github.com/leodemoura/f5d82426c105b5fae0880e77024f6e9c

We will use coroutines to implement the interaction between reader,
elaborator and main driver.
2018-08-12 17:14:02 -07:00
Leonardo de Moura
f036a7ad16 chore(runtime/object): mk_thunk(c) should not modify c's RC
This is useful when we are generating a function that does not use the
"borrow semantics" for an argument `c` which is used in `mk_thunk(c)`.
2018-08-10 18:11:29 -07:00