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