summary refs log tree commit diff stats
path: root/build
Commit message (Expand)AuthorAgeFilesLines
* empty.txt files: Trim trailing whitespaceAdam Strzelecki2015-09-041-1/+1
* Merge pull request #1075 from flaviut/inlinedocsAndreas Rumpf2014-04-091-0/+1
'alt'>
db4f617af ^




7d5e965dc ^
1f63d1c76 ^
8c671d22d ^

63e9a88c1 ^
db4f617af ^


bc9749310 ^
db4f617af ^
1f63d1c76 ^
db4f617af ^



1f63d1c76 ^
db4f617af ^
8c671d22d ^
1f63d1c76 ^
99bcc233c ^
4d4b3b1c0 ^
ae0e5604f ^


ceb30d7a0 ^

ae0e5604f ^




db4f617af ^




8c671d22d ^

49d810f34 ^

db4f617af ^




6ce462c58 ^

db4f617af ^








ff4a69b62 ^

db4f617af ^
300430fbb ^
e27e873b7 ^
31bb4311e ^
e27e873b7 ^

8c671d22d ^
e27e873b7 ^
49d810f34 ^








ceb30d7a0 ^

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88


            


                          




                                                                               
                                                                             
                                                                 

                                                                         
      


                                
             
 
                                                                            



                                                                            
                                                      
 
                                                                           
                                                                          
                        
 


                                                                   

            




                                                                            




                             

                                                                               

                                                                             




                       

                                                                       








                                                                               

                                          
 
                                       
 
                         

              
version 1.0 battle plan
=======================

- iters for js
- fix "high priority" bugs
- try to fix as many compiler crashes as reasonable


Not critical for 1.0
====================

- get GC:v2 stable: nim c --gc:v2 -r -d:useSysAssert -d:useGcAssert -d:smokeCycles -d:useRealtimeGc tests/gc/gctest

- find a solution for the  x.f[T](y)  gotcha
- implement ``.delegate`` for .experimental

- Destructors need to be refined.
- annotation support for getType()
- ``concept`` needs to be refined, a nice name for the feature is not enough.
- make '--implicitStatic:on' the default; then we can also clean up the
  'static[T]' mess in the compiler!
- ``not`` or ``~`` for the effects system
- document and stress test ``.partial`` object declarations
- add "all threads are blocked" detection to 'spawn'
- figure out why C++ bootstrapping is so much slower
- The bitwise 'not' operator cold be renamed to 'bnot' to
  prevent 'not 4 == 5' from compiling. -> requires 'mixin' annotation for procs!
- make 'nil' work for 'add':
  - resizeString
  - incrSeq
  - addChar
- pragmas need 'bindSym' support
- allow simple read accesses to global variables --> difficult to ensure that
  no data races happen
- pragmas need re-work: 'push' is dangerous, 'hasPragma' does not work
  reliably with user-defined pragmas
- memory manager: add a measure of fragmentation
- we need a magic thisModule symbol
- optimize 'genericReset'; 'newException' leads to code bloat

- prevent 'alloc(TypeWithGCedMemory)'?
- split docgen into separate tool; not happy how it worked with ``nimsuggest``
  though
- map ``string`` and ``seq`` to ``std::string`` and ``std::vector``
- macro support for '='; bind '=' to a memory region
- macros as type pragmas


Bugs
====

- VM: Pegs do not work at compile-time
- VM: ptr/ref T cannot work in general
- blocks can "export" an identifier but the CCG generates {} for them ...
- ConcreteTypes in a 'case' means we don't check for duplicated case branches


GC
==

- use big blocks in the allocator
- provide tool/API to track leaks/object counts
- resizing of strings/sequences could take into account the memory that
  is allocated


Concurrency
===========

- test 'deepCopy' for closures
- implement 'foo[1..4] = spawn(f[4..7])'

Low priority:
- support for exception propagation? (hard to implement)
- the copying of the 'ref Promise' into the thead local storage only
  happens to work due to the write barrier's implementation


CGEN
====
- codegen should use "NIM_CAST" macro and respect aliasing rules for GCC
- ``restrict`` pragma + backend support
------- Nimble is Nim's package manager. For the source based installations where you added Nim's ``bin`` directory to your ``$PATH`` the easiest way of installing Nimble is via:: nim c koch koch nimble