This repository has been archived by the owner on Nov 22, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
/
mono-0.7
241 lines (174 loc) · 7.13 KB
/
mono-0.7
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
Hey guys!
Mono 0.7 has been released.
It has been a long time since the last release of Mono (almost
three weeks). We have made an incredible ammount of work in the past
three weeks.
* Highlights of this release:
* The monoburg: BURS-instruction selector implemented (for our
portable JIT engine).
* JIT engine works for very simple programs (Fibonacci works
for instance). It is about 30% faster running than the
equivalent code compiled with Kaffe.
The interesting part is that this was accomplished with the
a minimum register allocator, and very simple monoburg
rules, so there is a *lot* of room to improve here.
* The Interpreter has madured a lot. Value Types are fully
supported now; We dropped the FFI dependency, as we now
have our own code generator.
* The runtime has been expanded and extended as to support
real file I/O (including console I/O). So Hello World works
in there.
* The compiler can generate code for most statements now; It
also performs semantic analysis on most expressions.
Creation of new objects is supported, access to parameters,
fields and local variables works. Method invocation works.
Implicit type conversions, assignments and much more.
Operator overloading is implemented, but broken on this
release, hopefully this will be fixed soon.
Delegates and Attributes are now declared and passed around,
but no code generation for those exist yet.
* More classes (look for details). Sergey and Paolo have been
working on various classes in System.Reflection.Emit to get
the compiler self-hosting.
* NUnit is now part of the distribution, so it should be
trivial to write test cases (and if you want to help out,
this is one way to do it, we really need more tests cases).
I am going to try to switch to Nick's JB for C# this week or next
week. But the excitement of having the compiler deal with real C#
programs is too much to be contained, and I can not keep my hands of
the code generation in the compiler.
* Availability:
http://www.go-mono.com/archive/mono-0.7.tar.gz
http://www.go-mono.com/archive/mcs-0.7.tar.gz
* Details
Class Library Changes:
Many enumerations have been revamped to have the same value
definitions as those in .NET as those cause problems. They were also
missing the [Flags] attributes, so we got that right too.
* System
SerializableAttribute impl (Miguel)
String updates (Jeff)
System.Char (Ravi)
* System.Configuration
ConfigurationSettings impl (Christopher Podurgiel)
SingleTagSectionHandler impl (Christopher Podurgiel)
DictionarySectionHandler impl (Christopher Podurgiel)
* System.Collections.Specialized
NameObjectCollectionBase impl (Nick Drochak)
* System.Diagnostics
StackFrame stubs (alexk)
StackTrace stubs (alexk)
* System.IO
File stubs (Jim Richardson)
IOException impl (Paolo)
StreamWriter impl (Dietmar)
StreamReader stubs (Dietmar)
* System.Net
ConnectionModes (Miguel)
ProxyUseType (Miguel)
WebStatus (Miguel)
* System.Reflection
Assembly (stubs) (Paolo)
MethodBase (Paolo)
MethodInfo (Paolo)
* System.Reflection.Emit
EventToken (Sergey)
FieldToken (Sergey)
FlowControl (Sergey)
ILGenerator (stubbed) (Paolo)
Label (Paolo)
MethodToken (Sergey)
OpCode.cs (Sergey)
OpCodeType (Sergey)
OpCodes.cs (Sergey)
OperandType (Sergey)
PEFileKinds (Paolo)
PackingSize (Sergey)
ParameterToken (Sergey)
PropertyToken (Sergey)
SignatureToken (Sergey)
StackBehaviour (Sergey)
StringToken (Sergey)
TypeToken (Sergey)
* System.Threading
Most classes stubbed out by Dick Porter (Dick)
* System.Web
HttpWorkerRequest stubs (Bob Smith)
* System.Web.Hosting (Bob Smith)
AppDomainFactory stubs (Bob Smith)
ApplicationHost stubs (Bob Smith)
IAppDomainFactory stubs (Bob Smith)
IISAPIRuntime stubs (Bob Smith)
ISAPIRuntime stubs (Bob Smith)
SimpleWorkerRequest stubs (Bob Smith)
* System.Web.UI
LiteralControl implemented (Bob Smith)
HtmlContainerControl bugfixes (Bob Smith)
BuildMethod
BuildTemplateMethod
HtmlTextWriterAttribute
HtmlTextWriterStyle
HtmlTextWriterTag
IAttributeAccessor
IDataBindingsAccessor
INamingContainer
IParserAccessor
IPostBackDataHandler
IPostBackEventHandler
IStateManager
ITagNameToTypeMapper
ITemplate
IValidator
ImageClickEventHandler
OutputCacheLocation
PersistanceMode
StateItem
* System.Web.UI.HtmlControls
HtmlAnchor impl (Leen Teolen)
HtmlTextArea impl (Leen Teolen)
* System.Web.UI.WebControls
WebControl.cs (Gaurav Vaish)
* System.XML
Lots of enumerations (Miguel)
(will add later)
* Add loads of enumerations throughout (Sergey)
(will add later)
Compiler Changes:
* Assignment (Miguel)
* expression semantic analysis (Miguel)
* constructor creation, chaining (Miguel)
* Unified error reporting (Ravi)
* initial attribute support (Ravi)
* calling convention support (Miguel)
* loop construct code generation (Miguel)
* conditional statement code generation (Miguel)
* indexer declarations (Ravi)
* event declarations (Ravi)
* try/catch parsing fixed (Ravi)
* initial delegate support (Ravi)
* operator overload (Ravi)
Tools Changes:
* Add NUnit windows binaries to distribution (Nick Drochak, Miguel)
Runtime Changes:
* First JIT implementation (Dietmar, Paolo)
* value type size calculation (Dietmar)
* full value type support (Paolo)
* frequently used types cache (Paolo)
* FileStream support (Paolo)
* Console input/output support (Dietmar)
* print arguments and exception name in stack trace (Paolo)
* beginnings of virtual call support (Paolo)
* reimplement pinvoke support (Dietmar)
* remove libffi dependency (Dietmar)
* IBURG code generator implementation (Dietmar)
* new opcodes implemented: starg.s, ldobj, isinst, (Paolo, Miguel)
ldarg, starg, ldloc, ldloca, stloc, initobj,
cpblk, sizeof, conv.i, conv.i1, conv.i2, conv.i4,
conv.i8, conv.u1, conv.u2, conv.u4, conv.r4,
conv.r8, ldelema, ceq, cgt, clt.
* This list
Parts of this list of features were compiled by Alex by following
the CVS mailing list. My deepest thanks to Alex for helping me out
with this. I want to apologize for the missing features that I did
not document here, Mono is moving too fast to keep track of all the
changes.