forked from redline-smalltalk/redline-smalltalk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
979 lines (574 loc) · 28.8 KB
/
CHANGES
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
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
30/12/2011
Fixed issue #49. Bootstrapped Mataclass had incorrect superclass set.
Added primitive 220 to lookup if a receiver canUnderstand a selector.
Added primitive 221 to see which class contains a method dictionary that includes a selector.
Adjusted primitive 220/221 to look in receiver not receivers class.
29/12/2011
Fixed issue #50 ==. All ObjectTests pass. One test was a false positive and has been fixed.
Ensured MetaClass was registered to ensure we dont get two in memory.
Added naming of Class' metaclass to make debug/stack trace output easier to read.
28/12/2011
Added primitive p218 which gets the internal fullyqualified name of the receiver,
or 'unnamed' if the receiver is not a class.
27/12/2011
Fixed issue #65 with block referring to outer self and getting block, not outer self.
25/12/2011
Added support for subclass:instanceVariableNames:classVariableNames:poolDictionaries:
*Note, need support for classInstanceVariableNames.
Fixed string with nested ''
24/12/2011
Fixed issue with nested arrays ('foo' ('bar') 'baz').
Fixed issue relating to basicSize. There is an associated issue with iterating through arrays.
I have not tested if this fix also fixes that issue.
Added size for non-indexed objects.
23/12/2011
Modified Maven pom to have a "no-tests" profile for convenience that
skips the JUnit-based tests and the Smalltalk-based tests.
21/12/2011
Finished Objects and Protocols Document.
20/12/2011
Added notNil to UndefinedObject as resolution of raised issue.
Fixed typo in Object.st at:put: - value should have been anObject
Fixed Object hash. Issue 52.
19/12/2011
Changes to array handling as part of issue logged against isKindOf:
18/12/2011
Added to list of classes and protocols.
17/12/2011
Modified stout launcher to follow same process as stic launcher.
Added List of Classes to be adopted and implemented.
Started List of protocol for each of these classes that needs to
be implemented.
Fixing variable resolution within nested blocks to walk up the chain
of outer receivers looking for the variable.
Implementing the base initialization of the Character class.
Added new primitive to construct Character instances with the proper Java Character.
16/12/2011
Modified HelloWorld example to be just hello world, and moved assert example into
AssertExample.st
15/12/2011
Revamped the *nix version of stic. Enables use of Redline from anywhere on your machine.
Just 'install', export REDLINE_HOME and add REDLINE_HOME/bin to your path.
14/12/2011
Added support of non-local returns for blocks with ^ in them.
Fixing path separator bug in Maven pom that affects Windows hosts.
11/12/2011
Adding detection of blocks with ^ returns in them.
10/12/2011
Added support for nested nested blocks.
09/12/2011
Added BlockAnalyser delegate to cater for nest block parsing correctly.
Added stack of block analysers to handle nested, nested blocks.
05/12/2011
Added method to block node to know if it contains an answer expression. Start
of work to support ^ from blocks.
04/12/2011
Fixed a bug with nested blocks.
Initialize temporaries to nil (UndefinedObject).
Added some required methods to Object and UndefinedObject.
03/12/2011
Fixed bug with tightly nested blocks.
Removed some extra output.
01/12/2011
Added -e options to command line. There is a bug in getting options with quotes in them.
Fixing a.s.a.p
27/11/2011
Modified whileTrue/whileFalse support to ensure block yield responds to ifTrue:/ifFalse:
26/11/2011
Added support for nexted expressions, ie: (expression).
Added primitive support for [] whileNil: and whileNotNil:.
Added support for dispath in Stout.
Changed call from INVOKEVIRTUAL to INVOKEINTERFACE. NoOp router being called.
Added routing support for Stout. Can now invoke blocks based on route.
Add [] whileTrue/whileFalse support
Fixed variable registration to not try and register "" as a variable
Added a simple test runner to the integration-test phase of Maven
Added a simple assertion facility in Assert.st
25/11/2011 Changes
Full block access to outside variables.
Fixed bug with creation of variables.
24/11/2011 Changes
Finished Block access to variables outside of the block.
23/11/2011 Changes
Merges upstream changes, fixed conflicts and added meven plugin compiler version.
22/11/2011 Changes
Added argument to variable lookup to cater for outercontext lookups when in blocks.
Ensuring that the class initialize method gets invoked for each created class.
21/11/2011 Changes
Added cascaded KeywordMessageElement processing.
Added cascaded BinaryMessageElement processing.
20/11/2011 Changes
Added bootstrap methods to accept each of the class creation cascade messages.
19/11/2011 Changes
Block access to outcontext Method Arguments now working.
Need to clean up method arguments to use an array everywhere.
Added call to router in Stout. Next dispatch to block.
18/11/2011 Changes
Block access to outercontext temporaries now working.
Working on supporting same with outercontext fields.
17/11/2011 Changes
Working on blocks accessing temporary variables defined outside of the Block.
15/11/2011 Changes
Working on blocks within blocks. A few compiler issues.
Made whileTrue: / whileFalse: on BlockClosures primitive.
14/11/2011 Changes
Added convieniance methods to ProtoObject for sending messages.
Fixed bug with multi-blocks.
13/11/2011 Changes
Added Block applyTo method argument support.
12/11/2011 Changes
Added Block argument (variable) support.
Added Block temporary support.
11/11/2011 Changes
Fixed block compilation bug where block was compiled inline and as a Block.
Fixed boolean examples to use true not True the class.
09/11/2011 Changes
Initial Block support complete.
08/11/2011 Changes
Adding Block support. Will handle ^ blocks soon.
07/11/2011 Changes
Creating proper instances of True and False during bootstrapping.
05/11/2011 Changes
Added support for arrays, including nested arrays.
Switching Integer classes to use BigInteger instead of BigDecimal.
Adding in superclass and cls for singletons True and False.
03/11/2011 Changes
Added support for temporaries - getting and setting.
02/11/2011 Changes
Added a 'context' parameter to each method call to contain the call context items, like class method
found in, temporary variables and other items.
Passing a 'context' to Eigenclass applyTo method; used for scripts that have temporaries.
Modified grammar to support negative and positive numeric constants.
Started implementing the Character class.
Implemented createCharacter in Primitives.
Started temporaries support.
31/10/2011 Changes
There have been various changes between 28/09/2011 and now, however we have have neglected to update
the changes file. Oops.
Removing extra parameter to Eigenclass applyTo method.
Changing classMesthodWasFoundIn parameter to thisContext array.
28/09/2011 Changes
Adding more support for initializing Class variables.
27/09/2011 Changes
Added support for initializing Class variables.
26/09/2011 Changes
A few example file changes to exercise variables.
Added Router class to map http routes to handlers within Stout. Contributed by
Jacky Cheung.
25/09/2011 Changes
Output some trace to let you know instance variables are being initialized.
Fixing off-by-one error in MethodAnalyser that was breaking method arguments
Implementing more of the Object protocol (comparing, testing, accessing)
23/09/2011 Changes
Added indication of instance or class to method compilation. This is useful for handling
instance variable resolution.
Adding storage and methods for recording what variables a class has, instance and class instance.
17/09/2011 Changes
**FIXED** Pathname issues on Windows, Mac and Linux.
14/09/2011 Changes
**FIXED** bug where an instance method called class is not parsed correctly.
This was fixed with a 'hack' where the preprocessor outputs a class method as
'Object _class_ >>' which works, but needs to be changed later.
Removing instanceVariableNames etc from Class.st and adding to the Bootstrapper
so that they're accessible from within other class definitions.
Adding other parts of the "testing" protocol to Object
Adding superClass and inheritsFrom to Behavior. inheritsFrom is commented out
until we add variable support.
Fixing a pathname issue causing runtime issues in Windows.
Added generation of Character instances.
13/09/2011 Changes
Added support for traditional subclass keywords, plus new shorthand.
Added outstanding super sends.
Added trace output as a guide for TODO items.
12/09/2011 Changes
Added support for cascading message expressions. Tested with unary messages.
Added warning about a possible stack balance problem with cascaded messages. Posted to
ASM news group to find out if I need to add more code to balance stack.
Added long subclass: keyword support - see examples/st.redline.Subclass.
Adding creation of an Array via Smalltalk - creates a ProtoObject array.
Implementing a few indexable primitives - size, at:, at:with:
11/09/2011 Changes
Changed creation of Integer instances to use single method. Need to make rest of instance
creation use this approach.
Add back some output when methods are applied - helps with debugging while we wait for
Transcript support. (Coming later today).
Added method argument load support, so you can reference method arguments. Working on
store side, which is an error. ie: Can't methodArgument := value.
Replaced long license comment with simpler one liner.
Multiple argument method calls.
Basic Magnitude protocol.
Parts of the Boolean protocols.
Switching Integer to be backed by a BigDecimal.
True and False classes.
10/09/2011 Changes
Adding PowerMock and EasyMock for unit testing
Adding first unit test of an Integer primitive
Removed unnecessary Bootstrapping of Number classes
Fixing equality checks on Integers
Adding Cobertura plugin to generate code coverage reports on demand
Adding 100% unit test coverage of Integer primitives
10/09/2011 Changes
Start of Number support. Adding object creation for basic Numbers.
All LiteralNumbers parse as Integers now.
10/09/2011 Changes
Removed trailing separator from source paths.
Added Transcript class with ability to output to Console.
08/09/2011 Changes
Changed use of "/" in some places to use File.separator, so things work on windows.
(Suggestion from Stefan Krecher)
Modified stic usage message to use File.separator.
More modifications around replacing File paths correctly under windows and linux.
07/09/2011 Changes
Adjusted snapshot version number.
06/09/2011 Changes
Pulled contribution. Now supporting Maven.
Modified maven pom to copy across 'extras' into target/redline-deploy/extras.
Changed runtime path to match where maven puts the runtime soruces.
Added reserved word Smalltalk and associated SmalltalkImage class.
03/09/2011 Changes
Added paths spec for Redline runtime so you can choose which runtime you want.
02/09/2011 Changes
Added command line argument parsing back into Redline.
29/08/2011 Changes
Implementing primitives.
Fixed bug preprocessing binary message patterns.
27/08/2011 Changes
Continuing implementation of Stout and associated methods needed in Redline Runtime.
Adding handler for more arguments to methods. There is a limit.
26/08/2011 Changes
Implemented import. Moving onto further Stout functionality.
24/08/2011 Changes
Adding implementation of import: method.
21/08/2011 Changes
Adding ability to emit JVM bytecode from within a Smalltalk method.
Adding wrap and dispatch to Stout web framework.
Adding start of import from a namespace
15/08/2011 Changes
Cleaned up Exception handling so we don't nest causal exceptions that don't need nesting.
(smaller stack traces)
14/08/2011 Changes
Added example script calling a call. Shows up a need to handle exceptions a little better.
ie: when the script throws an exception, it looks like the class isnt found which isnt true.
13/08/2011 Changes
Removed a lot of trace - will put back later.
Continuing with implementing Runtime.
12/08/2011 Changes
Empty methods now answer receiver.
Changed message send when a class is invoked by stic to "main:"
11/08/2011 Changes
Added start of method analyser to handle setup of method bytecode writing.
Method compilation and dispatch to dynamically created methods working.
Primitives <primitive: xx> being called.
Implemented basicNew.
10/08/2011 Changes
Added trampoline of registering a method to be compiled and a message send to have method
compiled.
09/08/2011 Changes
Added support for requesting the compiling of methods.
Added MethodBytecodeWriter to handle writing method classes.
08/08/2011 Changes
Added generator support for reserved words nil, false, true, self and super.
07/08/2011 Changes
Finished bootstrap resolution. Full Runtime required to run is now compiled and loaded
before a 'user' class is compiled and run.
06/08/2011 Changes
Turning bootstrapped classes into full classes at load, rather than on first message not found.
This loading increased startup time, and makes run more predictable.
04/08/2011 Changes
Added start of stout - the Redline simple web tool - started by Pat Maddox and myself at
ESUG Las Vegas 2011.
Fixed silly bug in hierarchy.
03/08/2011 Changes
Added placeholder/start of Smalltalk Runtime.
Added bootstrap hieararchy for String and Symbol.
Added bootstrap hierarchy for Boolean, True, False and UndefinedObject including the
creation of singleton instances for True, False and Nil (UndefinedObject).
02/08/2011 Changes
Added namespace (package) support. Can lookup classes from other packages - Yay.
Bootstrapped more of the hierarchy needed to start a Smalltalk. Still have a few more
classes as part of Symbol hierarchy.
Changed primitive subclass methods to check if new subclass is one of the bootstrapped
classes and to use that, rather than create a new class.
01/08/2011 Changes
Added bootstrapped class for String. Need to add rest of hierarchy for bootstrapped
classes.
Used Pharo naming of MetaClass. Was Metaclass.
Added start of Smalltak Runtime source.
Added scanning of st/redline package for objects.
*NOTE* We should change from using '.' as a package separator and use '/' to cut down
processing - since java wants '/' at bytecode level.
31/07/2011 Changes
Added primitive for creating a subclass and used this primitive from builder class
which is generated and executed for each .st file. This special subclass extends
ProtoObject but is never registered.
30/07/2011 Changes
Modified package registry to use stack. You have a default package name for all
classes defined in a file. You can override but don't - people wont be expecting
it.
Modified proprocessor grammer to support short hand import statements. These expand to longer hand
messages.
29/07/2011 Changes
Added creation and registration of subclasses using new/simpler approach.
Working on namespace support.
Adding special thread local registry to handle registering a package against the
objects created in a .st file.
28/07/2011 Changes
Added method dispatch and with simplified bootstrapped hierarchy.
Moved class and instance data object out of ProtoObject - reduce lines in file.
Added bootstrap methods to get runtime working.
27/07/2011 Changes
Added boostrapper and initial bootstrap class Symbol.
Added creation of Symbol with primitive java value.
26/07/2011 Changes
Added simpler handling of common bytecodes.
Added primitive for creating Symbols.
25/07/2011 Changes
Restructured the implementation hierarchy, not Java object st.redline.ProtoObject
is base of all things.
ClassBytecodeWriter made simpler.
Fixed bug with resolving a class - if the loading of a class doesn't register itself
in the class hierarchy then all hell breaks loose (NullPointerException).
23/07/2011 Changes
Adding base support in Object to be an object. Working towards class parts.
22/07/2011 Changes
Modified <init> method to call applyTo() on itself (instance of java dynamic class) so
calls 'self' have a proper receiver. In preparation for namespaces/packages.
ie: so in a statement like "self import: 'package'", self refers to a proper object.
Using Object cache in resolving class Objects.
Added primitive to register an object in classes cache.
21/07/2011 Changes
Moves primitives inline - might make Object class really big but stack traces are shorter.
Intoduced Redline runtime exception to wrap non-runtime exceptions.
Started adding runtime support in Object
Added root of all objects ProtoObject to fill gap between Smalltalk Object and Java Object.
20/07/2011 Changes
Added first of new primitives - primitiveVariableAt - which will look for the referenced
variable and then when not found will call primitiveResolveObject - which may load a new
class from source.
19/07/2011 Changes
Added ClassBytecodeWriter - used to be a single generator but cleaner if I separate.
Class being written and executed without problem.
Removed source paths from sources found in source path.
Changing Object resolution support - moved into primitive - will support name spaces this way.
17/07/2011 Changes
Added a preprocessor to process the method definitions starting with "+" and "-".
It is expected this preprocessor will be extended over time to turn many things into
message sends the backend compiler will handle.
03/07/2011 Changes
Added runtime probe of instance, class, class instance and pool variables.
02/07/2011 Changes
Clean up how output is done - using print writers defined in environment.
Added default 'src/main/smalltalk' as path for sources.
Thinking about adding 'src/test/smalltalk'
30/06/2011 Changes
Replaced the command line processing so you can turn verbose on to get more information about
what Redline is doing. Removed console output - will replace with log output.
25/06/2011 Changes
Refactored grammer to remove backtracing - no backtracking at all making grammar very fast.
Changed compilation model for methods to trigger a send to a class to compile the method
from source - more smalltalk like - using message sends.
Introduced a preprocessor to enable parsing of +/- decorators on method to define a class + or
instance - method. Preprocessor turns these into messages to compile methods with source.
This version of the Compiler is much neater, simpler, faster and dynamic.
26/03/2011 Changes
Refactoring grammar to not have backtrace. This is a work in progress and the grammar may not work
until it is complete!
19/03/2011 Changes
Adding grammar fragments to support full/edge case Smalltalk-80 grammar.
15/03/2011 Changes
Parsing sequences within a block.
Added variations on keyword messages where they are preceeded by a binary or unary message send.
13/03/2011 Changes
Added parsing of primary blocks, as start of block support.
Added start of generating block class.
04/03/2011 Changes
Added parsing of cascaded messages and generation of cascaded message sends.
Fixed bug with which object is kept for subsequent message sends in cascade.
03/03/2011 Changes
Added output of string for ASM mnemonic to provide more meaningful trace of bytecodes being generated.
25/02/2011 Changes
Added handling of Assignment expressions.
Added handling of expressions made up of only a Primary.
24/02/2011 Changes
Adding index to local variables, so they can be referenced in load or store.
Added load and store of temporary and method argument variables.
Added registry of temporaries and variables. Used for lookup when a variable is referenced.
23/02/2011 Changes
Parsing temporaries in methods and scripts.
Assigning local variable slot index to each temporary.
18/02/2011 Changes
Generating code for call of primitives. ie: <primitive: x>. Not complete - need to create a method
for each primitive.
17/02/2011 Changes
Parsing pragmas ie: <primitive:>. Need to add generation of primitive system calls.
14/02/2011 Changes
Parsing Arrays "{ statements }", and generating code.
Parsing (expression)'s, and generating code for them.
13/02/2011 Changes
Looking into array {statements} support.
12/02/2011 Changes
Implemented smalltalk instance resolution enhancement suggested by Jose Antonio Illescas del Olmo.
(We now use a thread local to cache instance, rather than lookup current thread.)
Backed out enhancement, however it did help reveal a logic error. We need to use current instance
(this) class classloader to get Smalltalk instance.
Refactored test to make it easier to change the way Smalltalk instance is fetched.
Now we fetch the smalltalk instance by looking at the receiver class' classloader.
11/01/2011 Changes
Added generation of array creation and add of array elements for Literal arrays.
+ tests around this.
Added grammar for numbers.
Added generation of Number instances from primitive numbers.
Added Smalltalk Runtime class library placeholders.
10/01/2011 Changes
Added grammar rules to parse nested literals.
Added Analyser rules for nested literal arrays.
09/01/2011 Changes
Parsing LiteralArrays and generating code for them.
04/01/2011 Changes
Parsing String Symbols.
Parsing Literal arrays. Still need to handled nested literal arrays.
03/01/2011 Changes
Parsing literals for True, False and Nil and resolving them to instances of the associated class.
Added a few placeholder Smalltalk Runtime sources.
02/01/2011 Changes
Ensured turning bootstrapped class into real class resolved the superclass chain, not just
current class. Including metaclass chain.
Added method comment chunk to TestMethod to ensure !! chunks were processed correctly.
Added parsing of Characters and conversion to Character instances.
Added paring of additional # symbols.
31/01/2011 Changes
Binding method into dictionary of owning object.
30/01/2011 Changes
Adding call to bind method into dictionary of owning object.
29/01/2011 Changes
Checked balancing of stack for <init> methods and normal methods.
Added additional 'applyToWith' signatures. We support 10 arguments.
Added additional tests to generator.
28/01/2011 Changes
Adding tests to Analyser to drive out generation of method classes.
Added concept of current "Context" to generator to support coming method generation.
Modifed generator to use contexts and push and pop them.
Methods are being generated. Now to add code to instantiate and put into an Objects
method dictionary.
27/01/2011 Changes
Implemented parsing of 'chunk' file format fragments.
Add node creation and analysis for chunks, including method patterns.
26/01/2011 Changes
Lookup existing class when making subclass (dont assume it is a new class).
Modified message send handling to reload classes that are bootstrapped from source
when they dont understand a message. After reload message is resent.
25/01/2011 Changes
Cleaned up Bootstrapper class and added more to the hierarchy of classes that gets
bootstrapped. These placeholder skeleton classes will be reloaded from source at a later
point.
I think the hierarchy is correct and I need to double check.
Reimplemented primitive subclassing to use cleaned up Bootstrapper methods.
Removed duplicate registration of new class during subclass.
Added primitive names to classes - java toString() returns this name. Helps debugging.
21/01/2011 Changes
Added bootstrap superclass to bootstrapped String and Symbol so that method lookup
doesnt throw NPE.
Renamed basicAt/basicAtPut to primitiveAt and primitiveAtPut to remove possible confusion with
Smalltalk runtime method of same name.
20/01/2011 Changes
Added generation of Binary Message Send.
19/01/2011 Changes
Added logging around Smalltalk class so verbose option shows what is being done by Redline.
Added parsing of BinaryMessageSends. Still need to support generating code from them.
18/01/2011 Changes
Added logging using a Java Logging Framework. Logging has to work for simple apps as well as
those that run within a J2EE Web Container.
Using SL4J for logging to users can choose their own framework.
Added bootstrap of UndefinedObject and 'nil'.
16/01/2011 Changes
Loading classes from source to registered instances!
Added Trace option to command line. Turn trace on for *lots* of output.
15/01/2011 Changes
Added bootstrap of Symbol and String class so we can create Classes.
Need to implement bootstrapped Subclass creation method, and mechanism for turning
bootstrapped classes into full classes from their source.
14/01/2011 Changes
Refactored Bootstrapper to correctly bootstrap ProtoObject hierarchy according to Smalltalk rules.
Renamed a few methods to make their meaning more clear.
Added RMethod support for applyToWith methods for up to 10 arguments. Redline doesnt support more than
10 keyword arguments right now. It can if required.
Added RObject send method support for up to 10 arguments.
Modified src/test/smalltalk/TestKeyword.st to be an example Class creation message.
Added creation of String and Symbol instances from primitive value string.
Added bootstrap method for 'subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:'
13/01/2011 Changes
Refactored ProtoObject to have more dynamic data depending on being used for a class or instance.
Refactored method dispatch to use new structure of ProtoObject.
*Note* Bootstrapper needs redoing so execution right now will result in NullPointerException. Will
fix a.s.a.p
12/01/2011 Changes
Added grammar to recognise Symbols and Strings.
Added generator methods to generate calls to Smalltalk to convert the primitive String and Symbol into
Objects.
Added send of keyword messages with simple String or Symbol arguments.
11/01/2011 Changes
Added to grammar to allow parsing of each kind of statement. See 'statements:' in grammar file.
Answering the result of an expression is now implemented. If an expreesion result is not answered
the value is popped off the stack to keep it balanced.
Added Bootstrapper class which initializes ProtoObject instance and registers it in Smalltalk dictionary.
Changed Test.st to call ProtoObject to show method resolving. *Currently* will result in Runtime exception
with a TODO. Will be adding to ProtoObject method dictionary shortly.
Added grammar and nodes to support parsing of keyword messages. *Currently* Keyword message arguments can
only be primary values.
10/01/2011 Changes
Added ProtoMethod as base for all methods.
Made fixes suggested by David Kemp for Windows platform.
Added Tests for ProtoObject to drive out method lookup and dispatch.
Added instance variables holder in ProtoObject. Offset 0 is always the
class object.
Added src/main/smalltalk/Redline folder, which will contain the Smalltalk
source for the runtime.
Default namespace for Smalltalk Runtime Objects is Redline.
Tracking line number for Parse tokens and adding to generated bytecode. Now any
exception shows corresponding line in Smalltalk source file
Added grammar to allow for multiple expressions seperated by '.'
Added pop of stack when expression result is not answered.
07/01/2011 Changes
Add 'sourcepath' command line option for specifying which folder to look in
for source files. The leading sourcepath names are removed from source filenames.
eg: sourcepath src/test and a source file of src/test/smalltalk/Object.st
will result in a source filename of smalltalk/Object.st and a class Object in
the package smalltalk.
06/01/2011 Changes
Cleaned up Smalltalk class and readying it for resolving Classes.
Send being called but dispatch wont be implemented until Class resolution in place.
Thinking through Class resolution process.
04/01/2011 Changes
Changed Smalltalk Class to be a Class Loader, and set itself as context class loader,
so code can use Thread.currentThread().getContextClassLoader() to get hold of the active
Smalltalk instance.
Added Test around generating message sends.
Added ObjectWeb ASM library for generating java bytecodes.
Added GeneratorTest to drive out Generator functionality.
Added Tracing versions of the ObjectWeb classes so I can see what is happening.
Removed verifyNoMoreInteractions from tests until I work out how to properly ensure no
unsolicited calls are made to mocks.
01/01/2011 Changes
Adding more tests around analyser. Fleshing out interaction with generator.
28/10/2010 Changes
Added SourceFile to add methods to File that we need.
Added Tests around Analysis and interaction with generator.
24/10/2010 Changes
Added AnalyserTest to drive out interaction with Nodes and Generator.
Added Analyser class.
Added Generator class.
23/12/2010 Changes
Added parsing of source input into Node tree.
Added visiting of Node tree.
Fixed an error in capturing multiple unary messages in grammar.
Slapped self on wrist for not updating this file more frequently.
21/12/2010 Changes
Added delegation to Interpreter to interpret source code. Added Tests around delegation.
20/12/2010 Changes
Added stic.bat supplied by Jeff Heon. Adapted from Kasim's ClojureW Project (https://bitbucket.org/kasim/clojurew)
Refactored File related functionality out into FileReader class. Need tests around FileReader.
16/12/2010 Changes
Refactored SticTest to use PrintWriters rather than PrintStreams, since PrintWriters
will be used later. Makes for less code = good. Refactoring suggested by David Kemp.
Added Smalltalk and Environment Tests and Classes.
Added Mockito mocking framework to help with Testing.