Nim/lib/system
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
..
alloc.nim --newruntime: progress 2019-03-14 19:53:27 +01:00
ansi_c.nim make it compile with older nim versions 2019-04-08 17:17:54 +02:00
arithm.nim Fix corner case of checked div/mod on x86 (#10406) 2019-01-22 07:33:27 +01:00
assertions.nim move system.dollars in a separate file (#10829) 2019-03-13 15:59:09 +01:00
assign.nim code cleanup: there is no tyOptRef 2019-02-22 19:42:11 +01:00
atomics.nim fixes #10953 2019-04-03 15:06:26 +01:00
avltree.nim make AVL tree node part of the memory regions; fixes hard to reproduce channel crashes 2017-01-31 13:08:47 +01:00
cellsets.nim removes deprecated T/P types 2018-11-16 13:27:56 +01:00
cgprocs.nim Initial version of the hot-code reloading support for native targets (#10729) 2019-02-26 15:48:55 +01:00
channels.nim refactoring: move threadlocalstorage into its own file 2019-04-04 16:35:15 +02:00
chcks.nim --newruntime: work in progress 2019-03-14 07:59:44 +01:00
debugger.nim removes deprecated T/P types 2018-11-16 13:27:56 +01:00
deepcopy.nim code cleanup: there is no tyOptRef 2019-02-22 19:42:11 +01:00
dollars.nim move system.dollars in a separate file (#10829) 2019-03-13 15:59:09 +01:00
dyncalls.nim Make HWND a pointer instead of a cint and fix MSVC compiler warning (#10789) 2019-03-13 15:54:36 +01:00
embedded.nim use abort instead of quit (#10872) 2019-03-21 06:52:30 +01:00
endb.nim further system.nim cleanups 2019-02-06 22:35:51 +01:00
excpt.nim fixes #10765 (#10993) [backport] 2019-04-11 13:51:51 +02:00
fatal.nim move assertions and iterators out of system.nim (#10597) 2019-03-07 00:49:39 +01:00
gc.nim code cleanup: there is no tyOptRef 2019-02-22 19:42:11 +01:00
gc2.nim gc: removed dead code 2019-03-14 07:59:44 +01:00
gc_common.nim use atomicInc/atomicDec (#10906) 2019-03-27 11:17:44 +01:00
gc_ms.nim gc: removed dead code 2019-03-14 07:59:44 +01:00
gc_regions.nim gc: destructors is beginning to work (#10483) 2019-01-29 15:12:16 +01:00
hti.nim code cleanup: there is no tyOptRef 2019-02-22 19:42:11 +01:00
inclrtl.nim make nim bootstrap again for older versions 2016-07-30 00:50:38 +02:00
indexerrors.nim revive #10228 (fix #9880) (#10610) 2019-02-13 23:30:14 +01:00
io.nim Compiler plugin for implementing incremental computation in user space (#10819) 2019-04-11 23:09:11 +02:00
io.nim.cfg Revert "put extracted modules behind the switch, to enable doc generation" 2019-03-14 13:22:46 +01:00
iterators.nim move system.dollars in a separate file (#10829) 2019-03-13 15:59:09 +01:00
jssys.nim revive #10228 (fix #9880) (#10610) 2019-02-13 23:30:14 +01:00
memory.nim make tests green again 2019-04-09 09:11:44 +02:00
memtracker.nim Try to let memTracker compile (#8502) 2018-08-05 09:53:10 +02:00
mmdisp.nim --newruntime: progress 2019-03-14 19:53:27 +01:00
nimscript.nim Add link to nims.html (#10472) [ci skip] 2019-01-27 17:27:54 +01:00
osalloc.nim Haiku support for Nim (#8542) 2018-08-14 09:35:07 +02:00
platforms.nim add wasm32 platform 2019-03-03 09:03:28 -06:00
profiler.nim Give better error message when profiler and memProfiler used at same time (#9948) 2018-12-19 10:02:20 +01:00
repr.nim code cleanup (#10874) 2019-03-28 12:32:02 +01:00
reprjs.nim Fix fat pointers, object copying, magic double evals on JS (#9411) [backport] 2018-12-04 12:04:27 +01:00
sets.nim code cleanup (#10874) 2019-03-28 12:32:02 +01:00
strmantle.nim move system.dollars in a separate file (#10829) 2019-03-13 15:59:09 +01:00
syslocks.nim removes deprecated T/P types 2018-11-16 13:27:56 +01:00
sysspawn.nim Trim remaining expr/stmt from stdlib (#6742) 2017-11-15 17:34:48 +01:00
sysstr.nim fixes #10845 2019-03-15 17:51:52 +01:00
threadlocalstorage.nim add back what was required 2019-04-04 16:35:15 +02:00
threads.nim refactoring: move threadlocalstorage into its own file 2019-04-04 16:35:15 +02:00
timers.nim improvements on the hot code reloading support (#10892) 2019-03-23 14:48:47 +01:00
widestrs.nim code cleanup (#10874) 2019-03-28 12:32:02 +01:00