| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(#15078)
* fix #11354 jsgen not carefully handle genAddr with nkHiddenAddr,nkStmtListExpr; genAsgn with lvalue tyVar and rvalue tyPtr
* correct logic
* add test for #11354
* handle nkHiddenAddr when n.len == 1
* Update compiler/jsgen.nim
* Update compiler/jsgen.nim
* Apply suggestions from code review
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* I don't care about observable stores
* enforce explicit initializations
* cleaner code for the stdlib
* stdlib: use explicit initializations
* make tests green
* algorithm.nim: set result explicitly
* remove out parameters and bring the PR into a mergable state
* updated the changelog
|
|
|
|
|
| |
* remove tyOpt, mOpt
* fixup
|
|
|
|
|
| |
* fix #14576 addr(param) now works in nim js
* workaround https://github.com/nim-lang/Nim/issues/14578
|
|
|
|
| |
* Fix #14570
|
|
|
|
| |
* fix #14350, cstrings in JS init as null
|
|
|
|
|
| |
function (#14230)
* fix https://github.com/timotheecour/Nim/issues/135 ; unify all file,line,col formatting into a single function
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* many bugfixes for js
fixes #12672, fixes #14153, closes #14123, closes #11331, fixes #11783, fixes #13966, fixes #14087, fixes #14117, closes #12256.
mostly fixes the fact that it was allowed to assign to newly created temp variables. additionally attempts to get rid of null initialized seqs/strings (though they might pop up here and there); this simplifies a lot of things and makes code size smaller. even if null seqs/strings pop up here and there it's still better than all those bugs existing.
* formatting fixes
* CI fixes
* more CI fixes
|
|
|
|
|
| |
* Fix negative arrays for JS, refs #13966
* small extra fix: no need to .slice() cstring in JS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Error -> Defect for defects
The distinction between Error and Defect is subjective,
context-dependent and somewhat arbitrary, so when looking at an
exception, it's hard to guess what it is - this happens often when
looking at a `raises` list _without_ opening the corresponding
definition and digging through layers of inheritance.
With the help of a little consistency in naming, it's at least possible
to start disentangling the two error types and the standard lib can set
a good example here.
|
|
|
|
|
|
|
|
|
| |
ints (#14134)
* fix https://github.com/timotheecour/Nim/issues/133; $(a: float) works in nim js like in other backends
* fix tests
* fix test for windows that prints 1.1e17 differently than other OS
|
| |
|
| |
|
| |
|
|
|
|
| |
* fixes #13513
* merge tarithmetics in tarithm
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Cleanup compiler code base
* Unify add calls
* Unify len invocations
* Unify range operators
* Fix oversight
* Remove {.procvar.} pragma
* initCandidate -> newCandidate where reasonable
* Unify safeLen calls
|
|
|
|
|
|
| |
* Improve comment on JSGen, replace 12+ concatenations by 1 multiline string
* Peer review feedbacks https://github.com/nim-lang/Nim/pull/12548#discussion_r340051147
|
|
|
|
|
|
|
|
| |
(#12688) [backport]
* conversions to unsigned numbers are not checked anymore; implements / fixes https://github.com/nim-lang/RFCs/issues/175
* change the spec yet again to be less consistent but to make more sense; updated the changelog
|
| |
|
|
|
|
| |
* JSgen make indent be all spaces, instead of mixed spaces and tabs, for generated JS
|
| |
|
|
|
|
|
|
| |
* Sets need copying in JS
* Fixes #11353
* Add test for #11353
|
| |
|
|
|
|
|
| |
* Remove sonsLen
* Use Indexable
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* fix to(Biggest)Int
* kill toFloat magics as well
|
| |
|
|
|
|
| |
* fixes #11847
|
| |
|
| |
|
| |
|
|
|
|
| |
--styleCheck:error
|
|
|
|
|
| |
* remove zeroExtend and friends from the compiler builtins.
* fix jssys
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
might change the type inference rules to make it more convenient
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|