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