summary refs log tree commit diff stats
path: root/examples/cross_todo
Commit message (Expand)AuthorAgeFilesLines
* Change expr/stmt in examples to untyped (#6734)Lynn C. Rees2017-11-156-102/+39
* Merge pull request #3831 from ephja/nimrod-to-nimAndreas Rumpf2016-02-061-2/+2
|\
| * nimrod -> nimErik Johansson Andersson2016-02-051-2/+2
* | Fix a few deprecation warningsdef2016-01-253-16/+16
|/
* examples: Trim .txt files trailing whitespaceAdam Strzelecki2015-09-042-19/+19
* Removes dead references.Grzegorz Adam Hankiewicz2015-08-171-2/+0
* Fix typosFederico Ceratto2015-02-151-1/+1
* Fix cross_todo exampledef2015-02-156-15/+15
* s/nimrod/nim/g; s/babel/nimble/gFlaviu Tamas2015-01-092-5/+5
* Adds link to external nimrod-crossplatform-todo repository.Grzegorz Adam Hankiewicz2012-12-181-0/+2
* Merge pull request #253 from gradha/pr_reduce_todo_code_repetitionAraq2012-11-181-79/+63
|\
| * Reduces code repetition through helper procs and templates.Grzegorz Adam Hankiewicz2012-11-151-79/+63
* | Removes 'of TObject' to finalize objects not meant for inheritance.Grzegorz Adam Hankiewicz2012-11-152-3/+3
|/
* Improves the style of some examples.Grzegorz Adam Hankiewicz2012-11-133-47/+37
* Replaces shell scripts with nimrod configuration files.Grzegorz Adam Hankiewicz2012-11-082-3/+8
* Adds command line interface for todo example.Grzegorz Adam Hankiewicz2012-11-012-0/+365
* Adds backend code for the cross platform todo example.Grzegorz Adam Hankiewicz2012-11-014-0/+327
1a917390 ^
f7884717c ^
5131b3cea ^
72e7a9854 ^
e956abbad ^
a6f90d4cd ^

2b323c638 ^
5635fde06 ^
d10973adb ^

c51763915 ^

ec2bd53ea ^
5b789f2da ^

6781da521 ^
990dc2d71 ^
d10973adb ^
fd62116f6 ^





2d54b8508 ^
a702524ae ^
299390a58 ^
a702524ae ^
c51763915 ^
fd62116f6 ^
d10973adb ^
4fa80956b ^

d10973adb ^
e25384db8 ^
42eb21be7 ^
42e6130b2 ^

4fa80956b ^
d10973adb ^
2d54b8508 ^
8b6f9ef5e ^
4741e8f9a ^

2b323c638 ^

5f2d930a5 ^
5b96eaa95 ^
4839800c2 ^


a1cdd6e7f ^







2183bf77a ^

d10973adb ^



42e6130b2 ^
ade67f1ab ^
d10973adb ^
d10973adb ^
1dd9ec85b ^
d10973adb ^
d10973adb ^
d10973adb ^






d10973adb ^

990dc2d71 ^


dd99fe61c ^
e956abbad ^
990dc2d71 ^


3e806a374 ^

d560e84fc ^
2d54b8508 ^
299390a58 ^
990dc2d71 ^

d10973adb ^
4fa80956b ^
d10973adb ^


6a8a409f1 ^
d10973adb ^








d10973adb ^
61a442bb0 ^
d10973adb ^


3005955d2 ^






ddb49e069 ^
c3f11d163 ^
4fa80956b ^
dc6a80bd1 ^



990dc2d71 ^
a6f90d4cd ^
d10973adb ^

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

              
 

                                                                
                               
                                      
 



             
                                    
             
               

                                                                     
                                    
                                                      

                                                                        
                         
                               
                                                 
                                                
                                                                 
                                        

                                               
                                           
 

    

                                                             
                                 

                                                                          
                                                    
                                                                         
 





                                                               
                                                            
                                                          
                                                                    
                                                                 
                                                                               
 
 

              
 
                                                                           
                                                                    

                                                               
                                                                               
                                                               
                                                            
                                     

                      

                                                                            
                               
                                            


                                             







                  

           



       
                               
                                           
                
         
                                    
 
                   






                                          

 


            
                                                
                                             


                                                                              

                                                                       
                   
                                                                  
                                                                        

 
         
         


                                                                             
                                                                             








                     
                                                                      
           


                                 






                                                                            
                       
                                                     
                                                                        



                                                                            
                                   
                                                                     

 
Version 0.8.14
==============

- optimize unused constants away (affected by HLO)
- fix actors.nim; test with different thread var implementations
- dead code elim for JS backend
- implement lib/pure/memfiles properly


version 0.9.0
=============

- test the sort implementation again
- 'let x = y'
- const ptr/ref
- unsigned ints and bignums; requires abstract integer literal type: 
  use tyInt+node for that
- implement the high level optimizer
- warning for implicit openArray -> varargs convention
- implement explicit varargs; **but** ``len(varargs)`` problem remains! 
  --> solve by implicit conversion from varargs to openarray
- tests: run the GC tests
- change overloading resolution
- implement closures; implement proper coroutines
- make exceptions compatible with C++ exceptions
- ``=`` should be overloadable; requires specialization for ``=``
- 'const' objects including case objects
- os module should use Windows Unicode versions
- 64bit build for Windows
- optional indentation for 'case' statement

Bugs
----
- bug: s[1..n] = @[] produces wrong C code
- bug: template t(f_no_Type): stmt = ... crashes the compiler
- bug: generic assign still buggy
  - Optimization: If we use a temporary for the result anyway the code gen
    should make use of this fact to generate better code...
  - bug: memset() without type field initialization?
  - special case the generic assign that needs to care about case objects

- bug: returning a tyVar does not mean it is save to return it:
  proc forward[T](x: var T): var T = result = x
  proc p(): var int = 
    var x: int
    result = forward(x)

- bug: DLL generation is broken; write at least a basic test
- bug: stress testing basic method example (eval example) 
  without ``-d:release`` leaks memory; good way to figure out how a 
  fixed amount of stack can hold an arbitrary number of GC roots!
- bug: osproc.execProcess() should raise an exception if the exit code is not 0


version 0.9.XX
==============

- GC: marker procs for native Nimrod GC and Boehm GC; precise stack marking
- implicit ref/ptr->var conversion; the compiler may store an object
  implicitly on the heap for write barrier efficiency; better: 
  proc specialization in the code gen
- EcmaScript needs a new and better code gen: simply adapt the C code gen to it
- tlastmod returns wrong results on BSD (Linux, MacOS X: works)
- nested tuple unpacking; tuple unpacking in non-var-context
- 'nimrod def': does not always work?
- test branch coverage
- checked exceptions
- make pegs support a compile-time option and make c2nim use regexes instead
  per default?
- fix implicit generic routines
- think about ``{:}.toTable[int, string]()``
- mocking support with ``tyProxy`` that does:
  o.p(x) --> p(o, x) -->  myMacro(o, p, x)
- nice idea:

  p(a, b): 
    echo a
    echo b
  
  is the same as:
  
  p(a, b, proc() =
    echo a
    echo b)

Library
-------

- wrappers for poppler; libharu
- radix tree for strings; maybe suffix tree
- locale support
- bignums
- ftp (and other internet protocols)

- pdcurses bindings

- for system:
  proc `@` [T](a: openArray[T]): seq[T] = 
    newSeq(result, a.len)
    for i in 0..a.len-1: result[i] = a[i]
    
  --> ensure @[] calls the array version!


Low priority
------------

- ``with proc `+`(x, y: T): T`` for generic code
- new feature: ``distinct T with operations``
- find a way for easy constructors and destructors; (destructors are much more
  important than constructors)
- code generated for type information is wasteful
- resizing of strings/sequences could take into account the memory that
  is allocated
- timeout for locks
- adapt thread var emulation to care about the new merge operation
- codegen should use "NIM_CAST" macro and respect aliasing rules for GCC


Version 2
=========

- language change: inheritance should only work with reference types, so that
  the ``type`` field is not needed for objects! --> zero overhead aggregation
  BETTER: ``of`` and safe object conversions only work with ref objects. Same
  for multi methods.
  
- explicit nil types?
  * nil seq[int]
  * nil string
  * nil ref int
  * nil ptr THallo
  * nil proc 

- better for backwards compatibility: default nilable, but ``not nil``
  notation:
  
  type
    PWindow = ref TWindow not nil
    
  The problem with ``nil`` is that the language currently relies on it for
  implicit initialization. Initialization is different from assignment. The
  issues can "easily" dealt with by ensuring:
  
    var x = myProc() # checks myProc() initializes every pointer explicitely
    
- the two other parsers
- generalized case statement (requires better transf)
- rethink the syntax: distinction between expr and stmt is unfortunate; 
  indentation handling is quite complex too; problem with exception handling
  is that often the scope of ``try`` is wrong and apart from that ``try`` is
  a full blown statement; a ``try`` expression might be a good idea to make
  error handling more light-weight
  people also want ``inc a; inc b``
  --> solved by providing an expr version of most control structures?