Closed
Description
see also: label:postponed label:"TODO items remaining" title: [WIP] title: [TODO]
doc
- symbols should have an anchor next to it so it's easy to link to it
EDIT: partially done, tracked here: docgen doesn't create links for certain symbols #10487 - broken rendering: https://nim-lang.github.io/Nim/contributing.html ; maybe broken after RST parser started accepting partial markdown features:
# from dcstyle.rst
* Inline code should be surrounded by single tick marks (`` like `this` ``). If you would like a character to immediately follow inline code (e.g., "``int8``s are great!"), escape the following character with a backslash (``\``). The preceding is typed as ``` ``int8``\s are great!```.
renders as:
- SPEED:
./koch docs
runs eachnim doc
separately, could use a single cmd:nim doc --project fileThatImportsAll.nim
+ maybe a few other files if needed
CI
in koch.nim: follow up from #10183:
- time each
exec
command (so we know the bottlenecks) - add a smoke test (eg
smoke_test.nim
) that runs as early as possible (before other tests) and whose job is to fail fast to reject PR's in a bad state (eg after a typo) and avoid wasting CI time for these; it shall import as many modules as possible (without running into known limitations) and just try to compile it (maybe vianim --errrormax:0 smoke_test.nim
) ; code can be reused with megatest maybe - with
NIM_COMPILE_TO_CPP=true
runs in travis/appveyor, the nim mode is probably not yet being honored everywhere (egnim c
hardcoded in places) - on error, testament doesn't show the relevant err msg if there are many, eg: see D20190111T070023
- report which tests are disabled (in a output json file)
compiler
- update vmgen.codeListing to use compiler/asciitables.nim instead ; it'll generate nicer looking listings
- move compiler/asciitables.nim to stdlib
testament
- use assertEquals and mismatch in testament
-
var compilerPrefix* = "compiler" / "nim" ## built via ./koch tests
=> instead, use nim from PATH, else from—nim
; not fromcompiler" / “nim"
and don't rebuild it in./koch tests
D20190205T124107
=> ./koch tests now does not rebuild nim #10572
typetraits.name
-
typetraits.name
behaves unexpectedtypetraits.name
behaves unexpected #8083 - [typetraits]
echo A[B]
prints differently depending on unrelated code [typetraits]echo A[B]
prints differently depending on unrelated code #8569 - [typetraits] type names should resolve to name of resolved type; currently, not consistent [typetraits] type names should resolve to name of resolved type; currently, not consistent #8570
- Type mismatch error with alias types are useless Type mismatch error with alias types are useless #8339
=> still not completely fixed : see test case in Expand tyAlias when printing nested types #8634 (comment)
runnableExamples
- runnableExamples could probably be run on module scope instead of inside a block; would simplify code (no need to mess with
import
), and allow certain things that are impossible inside a runnableExamples (eg: X has to be at module scope); I ran into this for several unrelated issues, preventing use of runnnableExamples in those cases; this would fix that; note: no performance penalty now that runnableExamples are all run at once
=> #11732
iterators
-
for x in myIter(42)(): ...
gives infinite loop; inconsistent withlet it = iterGen(42); for x in it(): ...
for x in myIter(1)(): ...
gives infinite loop; inconsistent withlet it = iterGen(1); for x in it(): ...
#8775 - [RFC] Better iterators syntax [RFC] Better iterators syntax RFCs#1 (was: #7047)
- closure iterators need while loops and don't work with for closure iterators need while loops and don't work with for #5340
- inline iterators could potentially avoid code bloat by using goto, see [ci skip] document that multiple
yield
in inline iterator cause code bloat #10553 (comment)
osproc
- osproc: startProcess with poEvalCommand need more documentation and more options osproc: startProcess with poEvalCommand need more documentation and more options #8913
pathutils
- this doesn't make sense:
os.isAbsolute(f.string) seems odd; and why unix instead of posix?
$nimc_D/compiler/nim.nim
proc prependCurDir(f: AbsoluteFile): AbsoluteFile =
when defined(unix):
if os.isAbsolute(f.string): result = f
else: result = AbsoluteFile("./" & f.string)
else:
result = f
std/macros
- wrong doc for strVal; probably refers to getImpl
proc strVal*(n: NimNode): string {.magic: "NStrVal", noSideEffect.}
## retrieve the implementation of `symbol`. `symbol` can be a
## routine or a const.
-
deprecate all these: newStrLitNode, newIntLitNode since we can use newLit
fornewFloatLitNode
I'm not sure, see comment in code regarding int int32 int64 are all distinct types, but float and float64 are not #5875 -
Error: node lacks field: X
=> should tell the node kind -
remove
{.compileTime.}
from all procs with aNimNode
param since that pragma is automatically inferred by compiler in this case
defer
- settle fate of defer ; I argue we should encourage it's use; see also: result type inference for defer, to help with a very useful debugging / contracts idiom #8793 and https://forum.nim-lang.org/t/4022#25111
misc
- ./doc/nep1.rst f8e219b
path
is unclear : IMO should be used for a string that can represent both a file and dir, but description not clear - duplicate changelog entry in https://nim-lang.org/blog/2018/09/26/version-0190-released.html
Added the parameter val for the CritBitTree[int].inc proc.
Added the parameter val for the CritBitTree[T].incl proc. - test_async.txt gets generated and not always deleted by tests/async/tasyncfilewrite.nim
- typo:
There will be an outmated process
in b138e89 - use
aspell
as linter to find typos? (and use some logic based on accepting stuff in index as ok workds) - support
clongdouble
, see Discrepancy in Documentation About 'f128 Type-Suffix #10213 (comment) -
toInt(1e19)
should raise instead of returning -9223372036854775808 ; see toInt doesn't raise an exception #2764 (comment) and Floats are not range checked #7179 - is this a bug?
elif defined(nimVM): OsPlatform.nimVM
(instead of:when nimvm
)
important issues
- [RFC] Cyclic imports and symbol dependencies [RFC] Cyclic imports and symbol dependencies RFCs#6 (was: #3961)