summaryrefslogtreecommitdiff
path: root/TODO
blob: 3da6bc6db395b64bd498a50b1da3ab73bac74bdd (plain)
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261

priorities guidelines
-   documentation > community > applications > features
-   mobile > desktop


------------------------------------------------------------------- weeks Jan 4, Jan 11

0.3  goal: start of more public development
done:
- use travis ci
- timeout for tests
- docker image: lambdacube3d/lambdacube3d
- quake map viewer application works for a sufficiently small map  +Csaba
- update online editor to use the new compiler
- tooltip testing
- compiler: ranges in error messages +Andor
- subexpression type tooltips in the editor
- pretty print Exp's defined in CoreToIR.hs
- refactored Builtins.lc
- homepage review (what is lambacube, etc.)
- documentation: overview
- API documentation started
- Hello World example on Haskell
- show pipeline in editor

------------------------------------------------------------------- weeks Jan 18, Jan 25

0.4  goal: usable compiler
done:
- compiler: fix looping (primes, recursivetexture01)
- refactor test system
- support simple import lists (hiding + explicit)
- support type synonyms
- better tooltip ranges & types
- tried to speedup with cache max. de bruin indices
- multiple guards
- handle constructor operator fixities, also in patterns
- small language feature tests framework

next:
- compiler optimization: separate types and values (vs. church style lambda)
- compiler optimization: separate use of neutral terms
- compiler optimization: erease lam var type
- compiler optimization: erease univ. pol. arguments of constructors
- compiler optimization: improve max debruijn index handling
- ambiguity check (compiler): really check type annotations
- ambiguity check (compiler): prohibit constraints like    a ~ List a,  a ~ a -> a, etc.
- compiler: (~) :: forall a b . a -> b -> Type

- automated test env. for backends

- better API documentation
- document Hello World example on Haskell
- documentation: getting started: hello world on various platforms  +Csaba

extra:
- ambiguity check (compiler): suppress univ. polymorphic ambiguity
- compiler: record field name handling
- review ShadowMapping.lc test case
- better persentation of types in editor tooltips
- pattern variable type tooltips
- compiler: refactor pretty printing
- compiler: bug: head <-> tail  switch: recheck fails (too late)
- compiler: review coe usage (missing?)
- review DemoUtils.lc test case
- minimal quake videos

------------------------------------------------------------------- week Feb 1

refactoring, cleanup, contact with people, etc.

- blog about release:
  - few sentences about the past events
  - meeting in december with every team member?
  - new members? Andor, he added support for travisCI and docker
  - we have a roadmap for the next 6 months?
  - links for the documentation
  - few words what to expect
    - new release in every 2-3 weeks
    - stable compiler with type class and frequency support (see TODO)
    - higher level abstractions in the graphics API
    - small game in app-store
- blog: fast reducer?


------------------------------------------------------------------- weeks Feb 8, Feb 15

0.5  goal: improvement + linear time interpretation

- docs: feature teaser, 2 min paper videos
- testenv: performance benchmarks
- 100% test coverage

- compiler optimization: irrelevance + erasure
- compiler:  recheck should not fail - coe missing?
- compiler:  (a ~ b) + (a ~ c)   --->   b ~ c        (fragment06tailrecursion)
- compiler:  review type annotation in where blocks
- compiler: add more structure to witnesses?

- backend:   GLSL codegen doesn't support Vector and tuple patterns (not compiler frontend related):
          fragment02tuple
          fragment02vectorpattern
          fragment05uniform
- backend: basic pipeline optimization (let-floating)
- backend: array support

floating:
- properly desugar node definitions
- allow to reorder definitions (not just bottom-up)
- support local pattern matching functions
- support recursive local definitions
- mutual recursion (inference & reduction)

extra:
- support @ patterns
- support guards + where
- support pattern guards
- support view patterns
- support pattern synonyms

other extra:
- evalXXX not wired in compiler
- support dep. pattern matching
- compiler:  dependent prelude should work again

------------------------------------------------------------------- weeks Feb 22, Feb 29

0.6  goal: type classes

- docs: feature teaser, 2 min paper videos
- open functions ->  open type families
- Constraint type: uniqueness of witnesses for types with at most one elements
- injectivity inference
- compiler: type classes
- community: blog about compiler internals
- backend: generated backends
- user supplied cpu values like color values and rendering context

------------------------------------------------------------------- week Mar 7

refactoring, cleanup, contact with people, etc.
- blog: c++ backend for opengl es 2.0 / generated backends
- blog: improved quake renderer, slowly turns into haskell quake engine
- blog: dependent type inference
- blog: type classes support

------------------------------------------------------------------- weeks Mar 14, Mar 21

0.7  goal: high-level API

- libs: high level API (lambdacube library) (application driven)
- apps: various prototype experiments (e.g. visual effects, high-level API, FRP)
- compiler: better error messages
    -   don't overnormalize (String => [Char])
    -   ...
- compiler (floating): review parser de-brunin index handling
- compiler (floating) optimization: better De Bruijn indices handling (compactified)
- compiler (floating) optimization: interpreted De Bruijn
- docs: feature teaser, 2 min paper video

------------------------------------------------------------------- weeks Mar 28, Apr 4

0.8  goal: frequencies

- apps: various prototype experiments (e.g. visual effects, high-level API, FRP)
- compiler: frequencies
- libs: fequencies in high level API
- docs: tutorial (like salesforce)
- docs: API documentation

------------------------------------------------------------------- weeks Apr 11, Apr 18

0.9  goal: experiment with FRP

- libs: begin experiments with FRP
- docs: tutorial (like salesforce)
- compiler:  better app typing
- backend: basic GPGPU support
- basic 3d graphics introduction with LambdaCube 3D, something like this: http://petercollingridge.appspot.com/3D-tutorial/generating-objects

------------------------------------------------------------------- week Apr 25

refactoring, cleanup, contact with people, etc.

- blog: pattern match compiler
- blog: frequency support
- blog: higher level abstractions in the graphics API

------------------------------------------------------------------- weeks May 2, May 9

1.0  goal: debug support

- editor improvments
- backend: basic debug support
- testenv: systematic micro tests (with quickcheck?)
- community: gamejam
- docs: feature teaser, 2 min paper video

------------------------------------------------------------------- weeks May 16, May 23

- backend: Unity plugin
- compiler optimization: coe / type class irrelevance switch
- docs: feature teaser, 2 min paper video

------------------------------------------------------------------- week May 30

refactoring, cleanup, contact with people, etc.

------------------------------------------------------------------- weeks Jun 6, Jun 13

- apps: demo for a demoscene party
- backend: profile-based optimization with machine learning
extra:
- write docs for the data definition language and also release the lib

------------------------------------------------------------------- weeks Jun 20, Jun 27

- apps: small game to App Store or Google Play
- docs: document/teach programming skills with dependent types
- community: contact people in industry

------------------------------------------------------------------- end of semester

refactoring, cleanup, contact with people, etc.
reviews, blogs

- plan the route
- blog: data definition language with support: Haskell, PureScript, C++


------------------------------------------------------------------- end of route

2.0
- involving more people
- backend: dynamic pipelines
- backend: dynamic input grouping/restructure for better performance
- Vulkan backend
- compiler: reflection (template Haskell)
- support nested data parallelism
- compiler: self-compilation
- domain-free compiler (move all lambacube specific parts into libraries & backend)
- compiler: Agda modelling

--------------------------------------------------------------------

insert somewhere:

- variable name normalization in the generated pipeline so that the same structures have to be equal
- tail recursion -> GPU
- generate let in shaders
- completion in editor
- editor socket reconnection
- highlight errors in editor
- support injective type families
- setup texture sampler configuration
- setup viewport for render target size (purescript)
- generate warning messages for possible typos in names
- update lambdacube(engine) page on haskell wiki
- warning on missing patterns
- editor: show definition place & show use places of variables etc.