Commit Graph

5311 Commits

Author SHA1 Message Date
Araq
572735bbfa fixes #11004 2019-04-12 13:28:12 +02:00
cooldome
041d15392a Compiler plugin for implementing incremental computation in user space (#10819)
This plugin provides essential building block for implementing incremental computations in your programs. The idea behind incremental computations is that if you do the same calculation multiple times but with slightly different inputs you don't have to recompute everything from scratch. Also you don't want to adopt special algorithms either, you would like to write your code in standard from scratch manner and get incrementality for free when it is possible.

The plugin computes the digest of the proc bodies, recursively hashing all called procs as well . Such digest with the digest of the argument values gives a good "name" for the result. Terminology loosely follows paper "Incremental Computation with Names" link below. It works well if you have no side effects in your computations. If you have global state in your computations then you will need problem specific workarounds to represent global state in set of "names" . SideEffect tracking in Nim also useful in this topic.

Classical examples:

Dashboard with ticking data. New data arrives non stop and you would like to update the dashboard recomputing only changed outputs.
Excel spreadsheet where user changes one cell and you would like to recompute all cells that are affected by the change, but do not want to recompute every cell in the spreadsheet.
2019-04-11 23:09:11 +02:00
Araq
a2ad069769 preparations for --newruntime owned refs/callbacks 2019-04-11 12:42:51 +02:00
Araq
1c0b1e9d05 sem'check understands 'owned procs' 2019-04-11 12:35:49 +02:00
Araq
8fb04b320a sigmatch: ensure 'owned proc' works with system.isNil 2019-04-11 12:35:49 +02:00
Arne Döring
1da98b1636 Less ropes (#10979)
* convert ropecg to a macro
* fewer intermediate ropes
2019-04-11 09:48:10 +02:00
Araq
2846156e13 newruntime: raising an exception works but currently leaks memory because currentException global is not an 'owned' ref 2019-04-10 20:34:00 +02:00
Araq
a34ce2714a newruntime: fixes another bug 2019-04-10 13:53:47 +02:00
Araq
28b4db4470 be consistent, strings have destructors for --gc:destructors 2019-04-10 11:04:38 +02:00
Araq
0518794291 make parseopt compile with --newruntime 2019-04-10 10:10:08 +02:00
Araq
6617b8deee make tests green again 2019-04-10 08:41:38 +02:00
Araq
72408842d9 koch.nim compiles with --newruntime 2019-04-09 21:25:36 +02:00
Araq
32ad3bb236 make 'raise' statement work with --newruntime 2019-04-09 11:39:10 +02:00
Araq
d59e9c37fa added lowerings.evalOnce 2019-04-09 11:38:54 +02:00
Araq
da6ff14184 don't emit an implicit try finally when in system.nim in order to prevent endless recursions in the try handler 2019-04-09 11:22:23 +02:00
Araq
9565b844dd compute sinks/assignments properly for for-loop iteration variables 2019-04-08 13:53:15 +02:00
Araq
001835bdec use old for loop unpack syntax for bootstrapping 2019-04-08 07:48:51 +02:00
Andreas Rumpf
b2898cd254 an owned ref parameter behaves as a 'sink' parameter 2019-04-07 23:11:37 +02:00
Andreas Rumpf
f08e90f0d6 more efficient enumToStr implementation that works without the old typeinfo structures 2019-04-07 21:14:54 +02:00
Araq
9f5d9d1993 makes koch.nim sem'check with --newruntime 2019-04-06 19:13:10 +02:00
Araq
f1ee36692a fixes compiler regression 2019-04-06 19:12:44 +02:00
Araq
6e6a9a721f destructors: we are cooking now 2019-04-06 17:32:53 +02:00
Araq
1a202b9754 render lent types properly 2019-04-06 17:32:53 +02:00
Andreas Rumpf
bc681a328f fixes unowned->owned conversion rule 2019-04-06 09:53:59 +02:00
Alexander Ivanov
f101f09256 Fix astdef typ deref (#10245) 2019-04-05 16:43:36 +02:00
cooldome
e749fc08e7 fixes #10943 (#10947) 2019-04-05 14:50:57 +02:00
Andreas Rumpf
efeee326f8 destructors: progress 2019-04-05 12:38:30 +02:00
Andreas Rumpf
3e3a8bd4cd newruntime: codegen fix 2019-04-05 12:38:30 +02:00
Miran
f309e4ff54 relax warning about inconsistent spacing (#10968)
Now the warning is raised only in the cases when there is an
inconsistency in the style (spacing vs no spacing):
* if a> b      --> warning
* if a >   b   --> no warning
2019-04-05 12:37:33 +02:00
cooldome
795de374fb fixes destructor tuple regression #10940 (#10941)
* fixes #10940

* bug fixes

* fix spacing
2019-04-04 20:46:02 +01:00
Araq
c9c6741cde newruntime: fixes codegen for closures 2019-04-04 16:35:15 +02:00
tofu
a990afcedc fixes #10200 (#10950)
* fixes #10200

* add rule for other comparison operators

* add rule for '!='

* add test

* fixed to pass the test
2019-04-04 14:58:54 +02:00
Arne Döring
65ee80e50c Pure ref object; fixes #10721 (#10955) 2019-04-04 09:06:12 +02:00
Arne Döring
e5cdd7f773 add alias for --debugger:native (#10957) 2019-04-04 08:59:26 +02:00
cooldome
dc2986789b fixes #10942. Lent T bug (#10946)
* fixes #10942

* add test

* bug build
2019-04-03 15:55:53 +02:00
cooldome
734da9544d fixes #10948 (#10949) 2019-04-03 10:42:41 +02:00
Andreas Rumpf
eaca62f331 make tests green again 2019-04-02 14:55:45 +02:00
Araq
f2691fdc7e try to make travis green 2019-04-02 12:24:58 +02:00
Araq
0b96b135f8 simple program works with --newruntime 2019-04-02 10:43:11 +02:00
Araq
f5a7a3bee9 make megatest work again 2019-04-02 08:23:13 +02:00
Araq
b77a2037f8 newruntime: progress 2019-04-02 00:46:38 +02:00
Araq
c3067e36bb newruntime: progress 2019-04-01 16:51:18 +02:00
Araq
cce8d3da27 fixes #10934 2019-03-31 19:59:17 +02:00
Andreas Rumpf
aa072b9525 fixes #10930 2019-03-30 23:45:40 +01:00
Arne Döring
00f419bcd6 remove check for better error message (#10926) 2019-03-29 20:21:28 +01:00
Arne Döring
e904b3f952 code cleanup (#10874) 2019-03-28 12:32:02 +01:00
Araq
3cf846e02c fixes #10904 2019-03-26 16:12:47 +01:00
Andreas Rumpf
bc29094af9 fixes 'nimble install nimble' problems 2019-03-26 09:51:31 +01:00
Andreas Rumpf
8e1c6e2e2d fixes #10896 (#10903) 2019-03-25 19:26:38 +01:00
Andreas Rumpf
663b1f2c96 newruntime: bugfixes 2019-03-25 16:45:51 +01:00