Commit Graph

6937 Commits

Author SHA1 Message Date
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
Miran
9f94199d0c random: works for slices and enums, fixes #7698 (#10998) 2019-04-11 08:38:18 +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
2430521c84 newruntime: fixes memory leak 2019-04-09 12:20:10 +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
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
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
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
Araq
d5f2a5c204 add back what was required 2019-04-04 16:35:15 +02:00
Araq
228d53006a refactoring: move threadlocalstorage into its own file 2019-04-04 16:35:15 +02:00
cooldome
8546393ddb Merge pull request #10954 from cooldome/atomicInc_regression
fixes regression #10953
2019-04-04 11:42:08 +01:00
MrZoraman
c6327e229a Fix dead sequtils link (#10960) [ci skip] 2019-04-04 07:03:15 +02:00
Andrii Riabushenko
ad1c6fe8b9 fixes #10953 2019-04-03 15:06:26 +01:00
Miran
d337e4a932 md5: add missing .gcsafe. to the forward declarations (#10944) 2019-04-02 14:44:19 +02:00
Araq
9029257a99 attempt to make the CIs green again 2019-04-02 11:01:38 +02:00
Miran
b707790519 do not display stacktrace twice, fixes #10922 (#10939) 2019-04-02 09:10:03 +02:00
Araq
b77a2037f8 newruntime: progress 2019-04-02 00:46:38 +02:00
Araq
3b14f0ed10 see what appveyor thinks about this 2019-04-01 17:50:03 +02:00
Araq
0f0cc9e6eb see what appveyor thinks about this 2019-04-01 17:45:23 +02:00
Araq
204ecfc817 os.nim: proper indentation 2019-04-01 17:45:08 +02:00
Araq
c3067e36bb newruntime: progress 2019-04-01 16:51:18 +02:00
Araq
fda1352ccf json.nim: tiny refactoring 2019-04-01 16:24:04 +02:00
Miran
aeb30a72c0 update unicode.nim (#10921)
* update unicode.nim

* create a script to create the needed unicode data
* make unicode.nim compatible with Unicode v12.0.0
* slightly improve unicode.nim documentation (fixes #4795)

* more documentation
2019-03-31 08:36:04 +02:00
Araq
caf0552573 make Boehm GC work on Windows 2019-03-30 00:56:21 +01:00
Andreas Rumpf
f8e720fda9 fixes json.nim regression 2019-03-29 08:01:59 +01:00
Arne Döring
e904b3f952 code cleanup (#10874) 2019-03-28 12:32:02 +01:00
Miran
d74179dde3 use atomicInc/atomicDec (#10906) 2019-03-27 11:17:44 +01:00
genotrance
0378bfa402 Fix #10907 - remove unused typedef string (#10908) 2019-03-26 16:20:26 -05:00
Andreas Rumpf
802ecbc49e macros: typo 2019-03-26 09:51:31 +01:00
Jjp137
b0e236674c logging: better documentation (#10895) 2019-03-24 18:53:04 +01:00
Andreas Rumpf
1332f649b2 stats.nim: bugfix: use min in '+' [backport] 2019-03-23 15:09:28 +01:00
Viktor Kirilov
f8146dfd84 improvements on the hot code reloading support (#10892)
* calling the "_actual" versions of functions when defined within the same module - slowdown for the snappy compression is now down from x6 to x4-x5 when HCR is ON
* dynamically linking to the runtime for VS when HCR is on - binaries are smaller
* compilerProcs are also called using the _actual direct version within the module they are defined (system)!
* updated comments & goals
* handling VS-compatible compilers on Windows in a cleaner way
* now the .dll/.so files end up in the nimcache even when --nimcache isn't explicitly stated
2019-03-23 14:48:47 +01:00
Andreas Rumpf
7c08303faf system.nim: documentation improvements 2019-03-23 10:55:26 +01:00
Miran
714c4f0d67 add short overview of the system module (#10883) 2019-03-23 08:34:59 +01:00
Andreas Rumpf
bf592c4e94 more destructor based changes (#10885)
* mark user defined destructors with sfOverriden to simplify the logic
* refactoring in preparation to merge liftings and generic instantiations for destructors
* ast: introduce nkHiddenTryStmt for destructor generation in order to be able to optimize better the code later on
* renamed 'patterns' switch to 'trmacros' as it was totally misleading before
* destructors: introduce tfCheckedForDestructor flag in preparation of strict =destroy checking
* test for invalid/too late destructor introductions
* liftdestructors: make code robust for nimsuggest
* --newruntime works for hello world again
* newruntime: code generation for closures
2019-03-23 00:12:05 +01:00
Mamy Ratsimbazafy
25649616ea Add OpenMP overload with stepping (#10891) 2019-03-22 23:38:43 +01:00