Skip to main content
summaryrefslogtreecommitdiffstats
blob: 1941842ff59620fd8d11e26a23fa6e6f8911c1de (plain) (blame)
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
todo
----
registry of handlers for different kinds of resources (including classes and byte code (?)); classes need way to express their fdc!!! --> rethink fdc concept?
make the concept of the "XyzRegistry" explicit, common abstraction --> interoperability of languages
configuration of backend type system - parameters to the backend?
globalVars rauswerfen? --> ContributionStateContext?

JavaBeansType: Interfaces als Supertypen
UML type system
logNullDeRef: log call stack including call parameters - runtime flag to log "verbosely"?
AOP
Profiler

Check: SourcePos-Infos in Fehlern, Exceptions in ExpressionBase ordentlich gewrappt

static properties; enums

kommentieren

Marker-Interface / Annotation "FunctionDefs" o.ä. --> generische Unterscheidung für Java-Importer, ob Klasse
  als Bean oder als "Funktionen-Container"

testen, insbes. syslib

DefinitionType in FunctionType mergen

dead code elimination?

isInstance

Buddy Policy für syslib und backend

syslib-Funktion: allFunctions (List<Type>) --> auch Funktionen ohne Parameter zur Laufzeit 
  finden (oder built-in? --> syslib-Aufruf verlässt den Scope)
Function-Match (z.B. &myFunc (String, Foo) --> spät binden! --> dynamisch durchgereichter Kram
  wird gematcht
Currying
Map als Builtin-Typ
Properties über getter/setter abbilden (z.B. im mm keine property mehr)?
Eigene Properties definieren (d.h. generische Map dafür an jedem Objekt)?
"final" (auch als Hint für Optimierung --> wird nicht durch dynamische Exytensions
  erweitert --> Tail Recursion geht nur dort)
Initialisierung der Functions mit FunctionDefContext: Nicht zwingend eager
  in voller Tiefe, sondern lazy beim ersten Einstieg in eine neue CompilationUnit
zusätzlich zu statisch unterschiedenem this / Collection-Sonderfall außerdem
  den generischen Fall --> aber nur dann (Ref-Typ "Object"), wenn es statisch
  nicht entscheidbar ist. --> volle Rückwärtskompatibilität
globale Type-Registry für alle zurückgegebenen Objekte --> nach beliebigem Rumreichen
  kann man an ihnen zumindest die eingebauten Operations aufrufen, auf ihre Properties
  zugreifen

Konzept für stufenweises Überschreiben - syslib --> built-in operation --> Extension (oder so)

Debugger: ein Source-Primitive kann aus mehreren Runtime-Primitives bestehen - in der RT 
	markieren, wo neuer Source-Primitive beginnt? Oder einfach Mapping in Rückrichtung 
	und vergleichen?
tail recursion
replace/add von Extensions im dynamischen Scope

equals auf Type-Implementierungen


Unterstützung
-------------
UML und EMF testen


Decisions
---------
Overwriting / hiding of functions is only posible for functions without guards (to avoid 
  the necessity of comparing guards for equality)
IteratorType is now handled via the Java type system
Only one global type system to avoid ambiguities when objects are passed from one compilation unit to another


Ideen für die Zukunft
---------------------
"async" -Keyword --> Ausnutzung von Multicore???


statisch behandeln
----------------
hasThis etc. im FunctionDefContext statisch handeln?
"this"-Mehrdeutigkeit (welche Reihenfolge?)
Collection-Resolution-Mehrdeutigkeit


done
----
Interface ExecutionContextAware für Java-Extensions
cached
PolymorphicResolver
int / long: gnädig bei Java-Extensions
double / float: gnädig bei Java-Extensions
Array / List
optimierter String --> an Schnittstellen ggf. konvertieren
optimierter String --> hierarchische Dirty-Propagation nach oben
JavaBeansTypesystem
Konzept für FunctionType - braucht der Parametertypen!?
metaType etc.
EMF-Typesystem
setExecutionContext bei ExecutionContextAware nicht als exportierte Funktion behandeln
toString() überschreibbar, trotz lazy evaluation
Operators: implies, <, <=, ==, !=, >=, >, !, unary -, 
potential bug - EfficientLazyString is mutable || return value from cached function --> 
  flag "isImmutable" in EfficientLazyString; static method "concat" insetad of "append" to treat this transparently

Back to the top