* 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
* 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.
* 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
* Make index out of bounds more useful by including the 'bounds'.
* fixes#9880 index out of bounds (remaining cases); revives #10228
* change err msg to: `index 3 not in 0 .. 1`
* Add a test for issue #9389
* Fixes#9389.
* Make object contructors copy objects properly by checking whether the expressions passed to them don't need to be copied.
* Make mArrToSeq implementation actually check if a copy needs to be made.
* Avoid unnecessary copy in mChr impl
* Assume set constructor elements need no copy
* Add a test for issue #9410
* Add a test
* fix passing fat pointers (#9410)
* Enhance tests
* More tests and fixes
* Add more (failing) tests [ci skip]
* Added equality operator for fat pointers, more tests and fixes
* Fix printing uninitialized strings
* Fix mInc, mDec double eval, add more tests
* Tests
* Refactored, fixed multiple evals, revamped the tests, added missing ops
* Fix ups
* Fix#9643 and #9644
* add pointer normalization
Because of PHP can't have refs for literal function parameters I
needed to come up with a hack such that the following code compiles with
PHP target.
```nim
type Foo = tuple[a: string, b: int]
var foo: array [0..2, Foo]
foo[0] = ("Test", 1)
foo[1] = ("Me", 2)
for x in foo:
echo x.a
echo x.b
```