Commit Graph

15138 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
cooldome
de02fd0b89 fixes #10765 (#10993) [backport] 2019-04-11 13:51:51 +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
Miran
9f94199d0c random: works for slices and enums, fixes #7698 (#10998) 2019-04-11 08:38:18 +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
cb4e04d88e enable more tests 2019-04-10 20:34:00 +02:00
c-blake
1394978347 Make secureHash accept any openArray[char], not only string. (#10988)
* Make `secureHash` accept any `openArray[char]`, not only `string`.

* Put in a changelog entry as per Araq request.
2019-04-10 17:48:22 +02:00
Miran
1494d88fa2 rst: parse brackets individually, fixes #10475 (#10997) 2019-04-10 15:55:57 +02:00
Miran
2608bc369e json: add '\v' support, fixes #10541 (#10987) 2019-04-10 15:54:49 +02:00
Araq
bc50795d9c enable most tnewruntime_strutils tests 2019-04-10 15:49:04 +02:00
Araq
26fc7d465a strutils.nim: fixes the indentation of formatEng 2019-04-10 15:44:34 +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
4974f999c3 manual: make currency example compile and ensure it remains working 2019-04-09 22:16:52 +02:00
Araq
72408842d9 koch.nim compiles with --newruntime 2019-04-09 21:25:36 +02:00
Miran
a4883b8426 make nimble packages testing more robust (#10984)
* better tests for the existing packages
* enable testing for packages not in packages.json
* add new packages
2019-04-09 19:38:49 +02:00
Araq
2430521c84 newruntime: fixes memory leak 2019-04-09 12:20:10 +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
0a01f5b655 strs.nim: fixed a silly typo 2019-04-09 11:21:35 +02:00
Araq
f44e1e2214 make tests green again 2019-04-09 09:11:44 +02:00
Arne Döring
2c645eded5 add strformat limitations section (#10982)
* add strformat limitations section
* Update lib/pure/strformat.nim
2019-04-09 08:14:59 +02:00
Andreas Rumpf
58df5b0a8f allocators.nim: use zero initialization 2019-04-08 23:07:21 +02:00
Araq
430814fdb3 make it compile with older nim versions 2019-04-08 17:17:54 +02:00
Araq
6efa7ecf18 respect -d:useMalloc everywhere; turn ansi_c and memory into proper Nim modules 2019-04-08 17:09:27 +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
f6ad071a46 make strformat work as NimScript again 2019-04-06 20:56:48 +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
fab75fbaf1 added nimAsgnStrV2 compilerproc 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
Arne Döring
3a5a0f6d46 Strformat symbol binding (#10927) 2019-04-05 15:27:04 +02:00
Araq
f2f9386101 make sets.nim useful for selective 'from import's 2019-04-05 14:57:59 +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