File: changes1.html

package info (click to toggle)
angelscript 2.35.1%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 5,388 kB
  • sloc: cpp: 71,969; asm: 1,558; makefile: 665; xml: 214; javascript: 42; python: 22; ansic: 22; sh: 7
file content (898 lines) | stat: -rw-r--r-- 41,145 bytes parent folder | download | duplicates (3)
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
<HTML>
<head>
<title>AngelScript - Changes</title>

<style>
H1
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 24px;
    FONT-FAMILY: Verdana
}
H2
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 18px;
    FONT-FAMILY: Verdana
}
H3
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 16px;
    FONT-FAMILY: Verdana
}
H4
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 14px;
    FONT-FAMILY: Verdana
}
P
{
    FONT-SIZE: 12px;
    FONT-FAMILY: Arial
}
BODY
{
    FONT-SIZE: 12px;
    FONT-FAMILY: Arial
}
TD
{
    FONT-SIZE: 12px;
    FONT-FAMILY: Arial
}
.text_small
{
    FONT-SIZE: 10px;
    FONT-FAMILY: Arial
}
.text_normal
{
    FONT-SIZE: 12px;
    FONT-FAMILY: Arial
}
.text_large
{
    FONT-SIZE: 14px;
    FONT-FAMILY: Arial
}
.header_normal
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 18px;
    FONT-FAMILY: Verdana
}
.header_small
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 16px;
    FONT-FAMILY: Verdana
}
.header_large
{
    FONT-WEIGHT: bold;
    FONT-SIZE: 24px;
    FONT-FAMILY: Verdana
}
A
{
	TEXT-DECORATION: none
}
A:hover
{
	TEXT-DECORATION: underline
}
.border
{
    BORDER-RIGHT: gray 1px solid;
    BORDER-TOP: gray 1px solid;
    BORDER-LEFT: gray 1px solid;
    BORDER-BOTTOM: gray 1px solid;
    MARGIN-TOP: 0;
    MARGIN-LEFT: 0;
    MARGIN-RIGHT: 5;
    MARGIN-BOTTOM: 5;
    PADDING: 5 5 5 5;
    DISPLAY: block;
}
.a
{
	BACKGROUND-COLOR: #FFFFCC;
    DISPLAY: block;
	margin-bottom: 2;
    PADDING: 5 5 5 5;
}
.b
{
	BACKGROUND-COLOR: #EEEEEE;
    DISPLAY: block;
	margin-bottom: 2;
    PADDING: 5 5 5 5;
}
</style>

</head>

<body>

<h1>AngelScript Change Log</h1>

<h2>Version 1.10.1d - 2005/01/21</h2>

<ul>
<li>Bug fixes
<ul>
<li>asGetActiveContext() now returns 0 if there are no active contexts
<li>It is now possible to overload arrays of registered types
<li>Removed an assert failure when compiling math operator on non-math types
<li>On GCC/Linux all classes/structs are always returned in memory regardless of size and complexity
<li>Some compilers complained about the negative array size in the template code that is never instanciated. The code was commented. 
<li>Fixed an assert failure when trying to use a unregistered object type (thanks Alain "abrken" Bridel)
</ul>
</ul>

<h2>Version 1.10.1c - 2004/12/19</h2>

<ul>
<li>Bug fixes
<ul>
<li>ExecuteString() could sometimes return an invalid context pointer when an error occurred.
<li>Application functions that returned float or double failed on GNUC based compilers with optimizations turned on. (thanks Marcin "Szpak" Zajaczkowski)
<li>Prepare() could crash if the function id was incorrect.
</ul>
</ul>

<h2>Version 1.10.1b - 2004/12/01</h2>

<ul>
<li>Bug fixes
<ul>
<li>Temporary objects created explicitly by calling the object's constructor weren't properly handled by the exception handler (thanks Alain "abrken" Bridel)
<li>Values were not implicitly converted to the parameter type when sent as function arguments
</ul>
</ul>

<h2>Version 1.10.1a - 2004/11/26</h2>

<ul>
<li>Bug fixes
<ul>
<li>The tokenizer wasn't able to handle string constants that ended with two backslashes (thanks Scott "waheyluggage" Newby)
<li>The calling convention asCALL_CDECL_OBJFIRST wasn't working for functions with parameters
<li>rvalue was not verified to be initialized in assignments
</ul>
</ul>

<h2>Version 1.10.1 - 2004/11/21</h2>

<ul>
<li>Bug fixes
<ul>
<li>The -> operator didn't compile correctly (thanks Adrian Licu)
<li>If the ?: operator returned literal constants there was an assert failure (thanks Alain "abrken" Bridel)
<li>Arrays of pointers were wrongly reported as uninitialized by the compiler
<li>Dereferencing temporary variables didn't release the variable
<li>Multidimensional arrays weren't working on GNUC based compilers
<li>Arrays of pointers to objects where causing problems (thanks Dan "Aggrav8d" Royer)
<li>Conversions to and from double failed in the VM (thanks Jetro Lauha)
<li>CALLBND didn't work in the ASM vm
<li>ExecuteStep() still didn't work as before with BUILD_WITH_LINE_CUES (thanks Josh Passenger)
<li>++ and -- failed in ASM VM for float values
<li>Temporary variables where at times prematurely released (thanks Jetro Lauha)
</ul>

<li>Library interface
<ul>
<li>asIScriptContext::Prepare() can now be called with the argument asPREPARE_PREVIOUS to prepare a context for calling the same function that was previously called.
</ul>

<li>Script language
<ul>
<li>All number types are now implicitly converted for assignments and function arguments
<li>When evaluating math operations of two different number types the types are first implicitly converted to the largest type
<li>bits datatype is implicitly converted to and from uint/int
</ul>

<li>Virtual machine
<ul>
<li>Optimized the ASM VM
</ul>

<li>Compiler
<ul>
<li>Greatly improved build times
</ul>

<li>Multithreading
<ul>
<li>Multithreading support is off by default, to add the support define the flag USE_THREADS
<li>The flag NO_THREADS no longer have any effect
</ul>

<li>Project files
<ul>
<li>Added as_typeinfo.h and as_typeinfo.cpp
</ul>
</ul>

<h2>Version 1.10.0 - 2004/11/02</h2>

<ul>
<li>Virtual machine 
<ul>
<li>Optimized the C++ VM
<li>Jumps no longer suspend the VM
<li>New byte code BC_END, only used by exception handler.
<li>Added a new module as_context_x86.cpp with an optimized VM using assembly. Compile with the flag USE_ASM_VM to utilize this new VM. (contribution by Andres "Lioric" Carrera) NOTE: This is currently slightly slower than the C++ VM, but will be optimized further in future releases.
<li>Removed the NOP instructions as they are no longer needed for alignment
<li>Added the SUSPEND bytecode again. It's used to guarantee that the host application always can suspend a context, i.e. all loops have a SUSPEND instruction.
</ul>

<li>Bug fixes
<ul>
<li>Exception handler would continue the execution 
<li>Temporary variables were not always freed after compiling a function call
<li>Constants were not always successfully converted to reference when making function calls (thanks Anthony "Deyja" Casteel)
<li>The switch case didn't treat 8 and 16 bit integer types correctly (thanks Alain "abrken" Bridel)
<li>The exception handler failed when objects where returned by reference
<li>There was a memory leak when adding script sections but not actually building them (thanks Alain "abrken" Bridel)
</ul>

<li>Script language
<ul>
<li>Added the operator 'xor' for boolean types. Alias '^^' (suggestion by Thomas Suter)
<li>Added native support for arrays
</ul>

<li>Library interface
<ul>
<li>Changed the parameter type for callConv to asDWORD in the interface
<li>If the configuration is wrong the engine writes the message "Invalid configuration" to the outstream if available. People keep forgetting to verify the return code, this may help them understand why the build isn't done.
<li>RegisterObjectBehaviour() should only be used for object behaviours. Global behaviours should be registered with RegisterGlobalBehaviour().
<li>GetFunctionName(), GetFunctionDeclaration(), GetGlobalVarName(), GetGlobalVarDeclaration(), GetImportedFunctionDeclaration(), and GetExceptionString() have changed to return a pointer to the string, so it is no longer necessary to pass a buffer to them.
<li>GetImportedFunctionSourceModule() and GetModuleNameFromIndex() now return the length as well.
<li>New global function asThreadCleanup() (see multithreading)

<li>Fixed ExecuteStep() to work as before
<ul>
<li>By default ExecuteStep() is guaranteed to suspend execution at least once per loop
<li>Added the compile flag BUILD_WITH_LINE_CUES, which makes the script compiler add extra bytecodes that allow ExecuteStep() to return after each statement.
</ul>

<li>Improved ExecuteString()
<ul>
<li>Calls to ExecuteString() can now be nested. 
<li>ExecuteString() now takes an extra parameter, which allow the application to receive the context pointer directly, or even pass its own context by using the flag asEXECSTRING_USE_MY_CONTEXT.
<li>GetContextForExecuteString() is deprecated.
<li>ExecuteString() now reports build errors with line and column number starting with the passed string.
</ul>

<li>Overridable array objects
<ul>
<li>It is now possible to register array objects, overriding the native array object
<li>New error code: asLOWER_ARRAY_DIMENSION_NOT_REGISTERED
<li>The library now returns asAPP_CANT_INTERFACE_DEFAULT_ARRAY if the application tries to register a function that uses arrays that haven't been registered by the application.
</ul>
</ul>

<li>Multithreading
<ul>
<li>Added support for multithreading (can be disabled by defining NO_THREADS)
<li>Multithreading should now work with both MSVC and MinGW. Still only for Windows though.
<li>asGetActiveContext() is now thread safe
<li>Reference counting is thread safe
<li>The engine now deletes all unused modules when Discard() is called, this simplifies the context's interaction with the modules making the engine more stable for multithreading
<li>Created the global function asThreadCleanup() that will allow AngelScript to cleanup some thread local data. Should be called before exiting any extra threads that access AngelScript.
</ul>

<li>Miscellaneous
<ul>
<li>Added the module as_thread.cpp that abstract the OS's thread functions 
<li>New module as_arrayobject.cpp for the default array implementation
<li>Added as_debug.h
<li>Made minor code changes to make compilation on Linux smoother (thanks Johannes Plass)
<li>Changed MSVC projects to output to a different file when in debugmode (thanks Dan "Aggrav8d" Royer)
<li>Added std::vector binding code to the library download (thanks Anthony "Deyja" Casteel)
<li>as_compiler_expression.cpp was merged with as_compiler.cpp
</ul>

</ul>

<h2>Version 1.9.2a - 2004/10/12</h2>

<ul>
<li>Bug fixes
<ul>
<li>Subtraction was optimized as if it was associative (thanks Lennart Denninger)
<li>SetArguments() failed for script functions that returns registered object types by value. (thanks Thomas Suter)
<li>The application would crash if an exception was raised in ExecuteString() (thanks Joe "Desdemona" Wright)
<li>GetFunctionName() and GetFunctionDeclaration() now works for the ExecuteString() function id as well.
<li>The compiler didn't warn when passing uninitialized variables to function parameters (thanks Alain "abrken" Bridel)
<li>Constructors with parameters could cause assertion failure in GenerateExceptionHandler(). (thanks Alain "abrken" Bridel)
</ul>
</ul>

<h2>Version 1.9.2 - 2004/09/30</h2>

<ul>
<li>Library interface
<ul>
<li>The interface now uses default argument value where applicable to make it easier to use
</ul>
<li>Script language
<ul>
<li>Added support for global objects using constructors with parameters (contribution by Andres Carrera)
<li>Improved constructors with parameters to work with local objects as well
<li>Constructors can now be used in expressions to create temporary objects
</ul>
<li>Virtual Machine
<ul>
<li>Removed the bytecode EID, which speeds up execution when there are objects in the scripts
<li>The exception ID is found by looking in a separate array
<li>Added the bytecodes RDGA4 and MOVGA4 for faster access to global variables
<li>Removed the bytecodes SET1 and PSP
<li>Added the bytecodes ADDIi, SUBIi, ADDIf, SUBIf, CMPIf
</ul>
</ul>

<h2>Version 1.9.1 - 2004/09/21</h2>

<ul>
<li>Bug fixes
<ul>
<li>Switch-case didn't work correctly if the cases were not ordered in ascending order (thanks Dmitry "RCL" Rekman)
<li>The ternary operator ?: didn't release temporary variables as it should, causing an assert failure in the debug version (thanks Dmitry "RCL" Rekman)
<li>Passing string constants to condition operator would cause an assertion failure. (thanks Joe "Desdemona" Wright) 
<li>Implicit conversion of pointer to a reference to a pointer caused assert failure (thanks Joe "Desdemona" Wright)
<li>The ternary operator ?: still wasn't working ok (thanks Joe "Desdemona" Wright)
</ul>
<li>Virtual Machine
<ul>
<li>Added 4 new conditional jump byte codes JS, JNS, JP, and JNP
<li>Renamed JMP0 and JMP1 to JZ and JNZ respectively
<li>Added the bytecodes CMPIi and CMPIui
<li>Removed the bytecodes LINE and SUSPEND. 
<li>Line numbers are now stored in a separate array for the functions that need them
<li>Added bytecode CALLSYS for calling system functions and CALLBND for calling bound functions
<li>RET now pops the function arguments
</ul>
<li>Script language
<ul>
<li>String constants are now concatenated by the compiler if only whitespace separate them
<li>If the first case in the ternary operator ?: is a constant 0 it's type will be converted to the type of the second case.
</ul>
<li>Compiler
<ul>
<li>Added many optimizations
<li>Code that can't be reached is now removed by the compiler
<li>If statements that have constant expressions are optimized to go directly to the correct case
<li>If there are no objects in the function the exception handler will only have a return instruction
</ul>
<li>Library interface
<ul>
<li>ExecuteStep() no longer suspends execution after each statement because of the remove bytecodes LINE and SUSPEND.
<li>Added support for asCALL_CDECL_OBJFIRST (thanks Tristan "Kurioes" Hartskeerl)
<li>The value of boolean true can now be configured in as_config.h (the default is set to 1)
</ul>
</ul>

<h2>Version 1.9.0 - 2004/09/02</h2>

<ul>
<li>Library interface
<ul>
<li>Renamed RegisterTypeBehaviour() to RegisterObjectBehaviour()
<li>Removed the flags asCALL_RETURNBYVAL and asCALL_RETURNBYREF
<li>Removed the flags asOBJ_IS_COMPLEX and asOBJ_IS_NOT_COMPLEX
<li>Included support for saving and loading compiled bytecode (thanks Dennis Bollyn)
<li>Removed the need to pass stack size when calling Prepare() or ExecuteString()
<li>Added the method SetDefaultContextStackSize() 
<li>New error message asINVALID_CONFIGURATION, which is returned by Build() if the configuration failed
<li>Removed AS_CALL from the interface. This changes the exported function names.
<li>Added new methods for binding module functions from different modules.
<li>Removed GetModuleID()
<li>Added GetModuleIndex(), and GetModuleNameFromIndex()
<li>Added GetFunctionIDByIndex() and GetGlobalVarIDByIndex()
<li>Added functions for automatically binding all functions imported in a module. New error code asCANT_BIND_ALL_FUNCTIONS
<li>Added the lineOffset parameter to AddScriptSection()
</ul>
<li>Compiler
<ul>
<li>Compiler no longer outputs unecessary messages, such as "Building..." 
<li>Each error message now follows a standard format: {section name} ({row}, {col}) : {Error or Warning} : {Message}
</ul>
<li>Virtual machine
<ul>
<li>The context stack now dynamically grows as needed
<li>New byte code BC_STR, that pushes the constant string address and length on the stack. The direct memory address is no longer stored in the compiled byte code
</ul>
<li>Script language
<ul>
<li>Added the global statement 'import FUNC_DEF from "MODULE NAME";'. 'import' is a reserved keyword, but 'from' isn't.
</ul>
<li>Miscellaneous
<ul>
<li>Renamed acCString to asCString and acCArray to asCArray
<li>Minor code improvements and potential bug fixes (thanks Wade Brainerd)
</ul>
<li>Bug fixes
<ul>
<li>Returning complex objects in script functions didn't work as expected. (thanks Joe "Desdemona" Wright)
<li>An assert failed in GenerateExceptionHandler() when returning large types.
<li>The macros asFUNCTIONP() and asFUNCTIONPR() wasn't working (thanks Joe "Desdemona" Wright)
<li>When a Build() fails, the module is cleaned up so that ExecuteString() can't call half compiled functions
</ul>
</ul>

<h2>Version 1.8.3 - 2004/08/31</h2>

<ul>
<li>bug fix: An object with asBEHAVE_ASSIGNMENT registered could be assigned even though it was declared as const (thanks Lee "_MrC_" Clark)
<li>bug fix: Two functions with the same name and parameters would cause an assertion failure in compiler (thanks Alain "abrken" Bridel)
<li>bug fix: Discarding a module with Discard() could sometimes cause the module object to be deleted twice (thanks Alain "abrken" Bridel)
<li>bug fix: There was a typo in macro asMETHODPR() (thanks Joe "Desdemona" Wright) 
<li>bug fix: An unclosed statement block could lead to assert failure in the parser (thanks Alain "abrken" Bridel)
</ul>

<h2>Version 1.8.2 - 2004/08/13</h2>

<ul>
<li>Methods from classes with multiple inheritance are now supported
<li>Changed how the byte code references script functions, so that they are now local to each module, i.e. independent of module ID
<li>BC_PGA now takes an int instead of a dword
<li>Changed so that registered global properties are referenced by index instead of their memory address
<li>Global script variables are referenced by their local index, i.e. independent of module ID
<li>Added support for switch case statements (thanks Jeff White)
<li>Added support for the negative operator behaviour. The new flag is asBEHAVE_NEGATE
</ul>

<h2>Version 1.8.1 - 2004/08/13</h2>

<ul>
<li>Changed debug output to be put in subdirectory AS_DEBUG
<li>bug fix: Some errors were always reported on line 1 column 1, no matter where they were located
<li>bug fix: An assertion failed when a function call used a temporary variable and the function wasn't found (thanks  Jakub "krajzega" Wasilewski)
<li>bug fix: Non-complex objects with 2 DWORDs in size is now correctly returned from system functions
<li>bug fix: Objects returned in memory is now correctly handled by MinGW for cdecl calling convention
<li>bug fix: Objects registered with asOBJ_IS_COMPLEX was not treated correctly by MinGW
<li>bug fix: BC_PGA didn't mask out the module ID when retrieving the address of the global variable. (thanks Anders "Dentoid" Stenberg)
<li>bug fix: Class methods can now return objects in MSVC
<li>bug fix: Local variables in the top statement block could be destroyed at return even though they were declared after the return statement. (thanks Anders "Dentoid" Stenberg)
<li>bug fix: Class methods can now return objects in memory on MinGW
<li>bug fix: ExecuteString() could cause a crash when executed on a script compiled for the second time using the same module name. (thanks Jakub "krajzega" Wasilewski)
<li>Registering methods from classes with multiple inheritance are detected and reported as not supported
<li>Registering methods from classes with virtual inheritance are detected and reported as not supported on MSVC. Can't be detected on GNUC
<li>Cleaned up as_callfunc_x86.cpp
<li>Added support for virtual methods in GNUC
<li>New flags for RegisterObjectType(): asOBJ_CLASS, asOBJ_CLASS_CONSTRUCTOR, asOBJ_CLASS_DESTRUCTOR, asOBJ_CLASS_ASSIGNMENT, asOBJ_PRIMITIVE, asOBJ_FLOAT
<li>The flags asCALL_RETURNBYREF and asCALL_RETURNBYVAL no longer have any effect, and will be removed in a future version
</ul>

<h2>Version 1.8.0c - 2004/07/19</h2>

<ul>
<li>bug fix: When creating a module its ID wasn't set correctly if another module had previously been released (thanks Lennart Denninger)
<li>bug fix: An assert failed when calling function in global variable initialization (thanks Lennart Denninger)
</ul>

<h2>Version 1.8.0b - 2004/07/17</h2>

<ul>
<li>bug fix: Overloaded functions in multiple modules didn't compile correctly (thanks Anders "Dentoid" Stenberg)
<li>bug fix: MinGW reported duplicate labels when compiling as_callfunc_x86.cpp (thanks Jakub "krajzega" Wasilewski)
</ul>

<h2>Version 1.8.0a - 2004/07/12</h2>

<ul>
<li>bug fix: asOBJ_IS_NOT_COMPLEX incorrectly identified objects smaller than or equal to 8 bytes (thanks Lennart Denninger)
<li>bug fix: Function calls in a second module didn't compile correctly (thanks Lennart Denninger)
</ul>

<h2>Version 1.8.0 - 2004/07/10</h2>

<ul>
<li>Removed the flags parameter from RegisterGlobalProperty() and RegisterObjectProperty()
<li>Added RegisterStringFactory()
<li>Removed the bstr type from the library
<li>Added new behaviour flags for assignment operators, changing the values of the others
<li>Overloading assignment operator and compound assignment operators now work
<li>Added changes to remove level 4 warnings for MSVC .NET (thanks Ricard)
<li>Added C++ code alternative to the assembler code (thanks Eric Love)
<li>Changed the way function pointers and method pointers are registered. Use as asFUNCTION(f) and asMETHOD(c, m) macros.
<li>bug fix: Object method calls didn't free the object if it was temporary. (thanks Peter Marshall)
<li>Support for compilation of scripts into separate modules have been implemented.
<li>BC_PGA now takes a DWORD instead of a WORD
<li>@init() and @exit() are no longer reported by GetFunction...()
<li>Added support for STDCALL (contribution by Adam Hoult)
<li>bug fix: Functions with arguments of object types sent by value didn't pop all the arguments from the stack (thanks Adam Hoult)
<li>Added the method Discard() which allows the application to discard a module when it is no longer needed
<li>Added the method GetModuleID() which can be used to enumerate script functions in modules
<li>RegisterObjectType() should now use the new flags asOBJ_IS_COMPLEX and asOBJ_IS_NOT_COMPLEX
<li>ExecuteString() now take the name of the module in which it is to be executed
<li>Added support for enumeration of global script variables
<li>Added new macros to make it easier to take the pointer of overloaded functions and methods
</ul>

<h2>Version 1.7.1a - 2004/06/10</h2>

<ul>
<li>bug fix: Arguments received by reference was erronously destroyed (thanks Peter Marshall)
<li>bug fix: MSVC++.Net 2003 crashed when compiling scripts. (thanks Fredrik Malmer)
<li>bug fix: Unnamed parameters wasn't treated by the exception handler
<li>bug fix: Some temporary variables wasn't correctly freed, leading to memory leakage
</ul>

<h2>Version 1.7.1 - 2004/05/27</h2>

<ul>
<li>bstr has become an internally registered type 
<li>bstr.length() is now a method instead of a property
<li>Removed the byte code STRMKE
<li>RegisterObjectType() now accepts the flags asCALL_RETURNBYVAL and asCALL_RETURNBYREF
<li>bug fix: Prepare() should no longer crash when receiving invalid function id (thanks Xavier "meink" Shay)
<li>The unexpected token message now shows what token was found
<li>It is now possible to use function overloads for scripted functions as well
<li>GetFunctionIDByName() returns asMULTIPLE_FUNCTIONS if more than one function with the same name exists
<li>GetFunctionIDByDecl() is now supported
<li>bug fix: The -> operator now works with direct pointers as well as pointer references (thanks Joe "Desdemona" Wright)
<li>bug fix: multiple variables per global declaration statement now works again (thanks Lennart Denninger)
<li>bug fix: scripts with errors in global variables could crash the application if no output stream was specified (thanks Fredrik Ehnbom)
<li>bug fix: calling ExecuteString() without first building a script didn't work (thanks Fredrik Ehnbom)
<li>ExecuteStep(asEXEC_STEP_OVER) is now supported
<li>Added support for the indexing operator
<li>The asBEHAVE_INDEX flag is used to register the overloaded indexing operator
<li>bstr[int] returns a reference to the indexed byte
<li>The library is now working on the Dreamcast (thanks Fredrik Ehnbom)
<li>bug fix: When compiling function calls the compiler didn't discard alternatives with more parameters than used arguments (thanks Lennart Denninger)
</ul>

<h2>Version 1.7.0 - 2004/05/03</h2>

<ul>
<li>Included the makefile for Linux compilers (thanks Stefan Diepenbrock)
<li>Added the methods ExecuteString() and GetContextForExecuteString() to the engine interface
<li>ExecuteStep() now takes a parameter that defines how to execute, only asEXEC_STEP_INTO is supported at the moment
<li>ExecuteString() is able to work with compiled script
<li>ExecuteString() now takes a flag that can be either 0 or asEXECSTRING_ONLY_PREPARE (thanks Joe "Desdemona" Wright)
<li>Removed the concept of global constants, they are instead global variables that are read-only
<li>bug fix: global variables ignored any type modifiers, thus global pointers were not possible (thanks Gunder Wulde)
<li>condition operator can be used when initializing global variables
<li>Global variables can now be initialized with expressions using other global variables, not just constants
<li>When finding the matching overloaded function, a conversion between signed and unsigned integers are given priority over conversion between integer and float (thanks Joe "Desdemona" Wright)
<li>bug fix: A pointer with an assignment behaviour can now be assigned a null pointer.
<li>Changed the library license from LGPL to the zLib license
</ul>

<h2>Version 1.6.1b - 2004/03/30</h2>

<ul>
<li>bug fix: Declaring multiple global variables in the same statement resulted in compiler error (thanks Jayanth)
<li>Added the tokens &&, ||, and ! as aliases to 'and', 'or', and 'not'
</ul>

<h2>Version 1.6.1a - 2004/03/23</h2>

<ul>
<li>Removed compilation warning for VSC++ .NET 2003 (thanks Daniel Krenn)
<li>bug fix: When reading booleans as object properties the compiler failed to mask out value (thanks Joe "Desdemona" Wright)
</ul>

<h2>Version 1.6.1 - 2004/03/21</h2>

<ul>
<li>bug fix: There was a memory leak in the tokenizer (thanks Philip Love)
<li>bug fix: An exception occured when compiling method calls with objects as parameters (thanks Bartosz "Hans" Czuba)
<li>More code cleaned up
<li>BCONSTR and BDESTR are no longer used, instead BC_CALL is used
<li>BCONSTR, BDESTR, BCOPY, STRDEL, STRCPY, STRMOV, STRCAT, STRCMP and STRWRT has been removed
<li>bug fix: break, continue, and return sometimes caused GenerateExceptionHandler() to fail since objects were destroyed more than once
<li>Added support for the for-loop (thanks Erik J Baran)
<li>Return values are now returned in a special register instead of on the stack
<li>Added bytecodes SRET4, SRET8, RRET4, RRET8 for managing the return register
<li>Added the calling convention asCALL_CDECL_OBJLAST for object methods. This calls the method as a normal C function with the object reference as the last parameter
<li>The asMETHOD and asFUNCTION types are now defined macros instead
<li>Type behaviours must be registered as either asCALL_THISCALL or asCDECL_OBJLAST
<li>Pointers can now be compared with other pointers of the same type and level, or with 0 for null pointer tests
<li>It is now possible to register overloaded operators for all dual operators, except assignment operators
<li>bstr is now handled with operator overloads
<li>bug fix: booleans are now 1 byte large, just as for C++ (thanks Josh "nihlist" Passenger for spotting the bug).
<li>Cleaned up the code that compiles overloaded operators and function calls
<li>Changed all the JMP instructions to use a 4 byte offset
<li>Function overloading for registered functions and object methods is now supported
<li>bug fix: When converting a constant to another type the value would become 0
</ul>

<h2>Version 1.6.0 - 2004/02/18</h2>

<ul>
<li>Added parameter flags for RegisterObjectType, but should be set to 0
<li>The flag asCALL_WITHCONTEXT is no longer available, use asGetActiveContext() to retrieve context instead
<li>GetFunctionCount() can now be used to obtain the number of script functions compiled
<li>The way type behaviours are registered have been changed to allow more flexibility
<li>Cleaned up the code
<li>bug fix: RegisterObjectMethod() didn't accept asCALL_RETURNBYVAL and asCALL_RETURNBYREF flags
<li>If any of the engine configuration methods fail the engine object will no longer let the application build scripts.
<li>Function parameters and variables can now be declared as const
<li>The flag asPROPERTY_READONLY has been removed, use const in declaration instead
<li>bug fix: exceptionID wasn't initialized to zero in Prepare() and the program could crash at an exception
<li>Lot's of changes to allow compilation with DJGPP (thanks Eric Love)
<li>Added as_config.h that may be used to configure some aspects of the compilation to acomodate for compiler differences
<li>Improved the angelscript.h by allowing the user to define exactly the way AngelScript is linked
<li>bug fix: Equality comparison between bits types didn't work (thanks Bartosz "Hans" Czuba)
</ul>

<h2>Version 1.5.2 - 2004/01/30</h2>

<ul>
<li>bug fix: When sending objects with behaviours by value in function arguments the exception handler didn't correctly destroy the objects
<li>bug fix: Pointers now work correctly with behaviours
<li>Added the flags asCALL_RETURNBYVAL and asCALL_RETURNBYREF that can be used to register how a system function returns if the engine isn't able to correctly determine it
<li>Cleaned up the method CallSystemFunction() giving about 10% performance improvement
</ul>

<h2>Version 1.5.1 - 2004/01/26</h2>

<ul>
<li>bug fix: The compiler no longer crashes when an object method name is not found (thanks Lennart Denninger)
<li>Changed where and when objects are constructed and destructed
<li>Changed bstr to use behaviour functions for construct, destruct, and copy
<li>Changed the STRMKE and the STRCAT byte codes
<li>STRDEL, STRCPY, STRMOV, and STRWRT are no longer used
<li>Added bytecodes JMPP, EID, and PEID
<li>Completely remade the way the script engine cleans up the stack in case of exceptions
<li>It is now allowed to register behaviours for pointers to objects
<li>Exceptions may be thrown in the construct and copy behaviour functions
</ul>

<h2>Version 1.5.0 - 2004/01/19</h2>

<ul>
<li>When registering object types the name is checked against all other names registered
<li>It is no longer possible to register two object members with the same name
<li>Contexts now hold a reference to the engine object
<li>Added RegisterTypeBehaviour() that allows the application to register helper function that will be call when a script variable is initialized, uninitialized, and copied
<li>Added bytecodes BC_BCONSTR, BC_BDESTR, and BC_BCOPY
<li>Objects with behaviour cannot be sent by value
<li>Returning objects with behaviour requires special care for system functions
</ul>

<h2>Version 1.4.1 - 2004/01/14</h2>

<ul>
<li>bug fix: SetArguments() and GetReturnValue() didn't work
<li>Change the message for when implicit conversion is not possible to a more descriptive one
<li>Added int32 as alias to int, uint32 to uint, and bits32 to bits
</ul>

<h2>Version 1.4.0 - 2004/01/12</h2>

<ul>
<li>Created the asIScriptContext interface for communicating directly with the contexts
<li>Context::Prepare() now takes a function ID instead of a string, making it faster for repeated preparations with the same function
<li>Get/SetStackData() has been renamed to GetReturnValue() and SetArguments()
<li>GetReturnValue() and SetArguments() now takes an array of dwords instead of a single dword
<li>System functions now receive a pointer to the context instead of the engine
<li>Added RegisterGlobalProperty() giving the script engine access to variables in the host application
<li>bug fix: properties are now properly treated as read only if the flag is set
</ul>

<h2>Version 1.3.9 - 2004/01/06</h2>

<ul>
<li>bug fix: the compiler determined the size of the returned value incorrectly for large types
<li>bug fix: the script engine crashed the program when calling system functions that returned large types
<li>warnings and errors during compilation of constants are now correctly shown
<li>Improved performance for repetetive execution of the same script function by caching some values
</ul>

<h2>Version 1.3.8 - 2003/12/10</h2>

<ul>
<li>Explicit conversions no longer generate warnings about precision
<li>bug fix: global constants of type double didn't hold the correct value
<li>float constants can now be declared explicitly by including the f modifier after the number
</ul>

<h2>Version 1.3.7 - 2003/11/27</h2>

<ul>
<li>Added datatype <code>double</code>
<li>lots of new byte codes to handle the <code>double</code> data type
<li>Added missing conversions <code>bits</code> -> <code>bits8</code>, <code>bits16</code> -> <code>bits8</code>, <code>bits</code> -> <code>bits16</code>
<li>bug fix: Conversions in constant expressions now work
<li>bug fix: <code>bits</code> constants are now correctly parsed
</ul>

<h2>Version 1.3.6 - 2003/11/07</h2>

<ul>
<li>Fixed a memory leak
<li>Multiple global constants of the same type can now be declared in the same statement
<li>Conversion on constants now continue being constants if possible
<li>Constant declarations now correctly report error if expression type is wrong
<li>Constant expressions are now implicitly converted to correct type for constant declarations
<li>Global variables can now be declared and initialized with constant expressions
<li>Added byte code PGA (Push Global Address) used to access global variables
</ul>

<h2>Version 1.3.5 - 2003/09/23</h2>

<ul>
<li>Fixed a bug with returning a pointer to a float from a system function
<li>Fixed bug in CleanStack, that crashed program on an exception
<li>bstr.length is now uint
<li>Changed data types for functions asCreateScriptEngine, asBStrAlloc, and asBStrLength
<li>Improved speed of object method calls with almost 10%
<li>Added new bytecode PUSHZERO improving speed about 3%
<li>Added new bytecode COPY for copying memory blocks
<li>Simple structs are now supported, those that don't need special treatment for construction, destruction and assignments
<li>Added bytecode PSP (again)
<li>Fixed a bug that sometimes crashed the program if a system function declaration was wrong
</ul>

<h2>Version 1.3.4 - 2003/09/16</h2>

<ul>
<li>Added data types: <code>int8</code>, <code>int16</code>, <code>uint8</code>, <code>uint16</code>, <code>bits8</code>, <code>bits16</code>
<li>Bitwise shift operators now takes an unsigned integer to the right
<li>bits, int, and uint can be implicitly converted to a larger type but never to a smaller
<li>Added byte codes BC_SB, BC_SW, BC_UB, BC_UW, BC_WRT1, BC_WRT2, BC_INCi16, BC_INCi8, BC_DECi16, BC_DECi8
<li>Implemented ++, -- for uint type (missing from last version)
</ul>

<h2>Version 1.3.3 - 2003/09/10</h2>

<ul>
<li>Added data type: <code>uint</code>
<li>Integer constants are now <code>uint</code>
<li>Added byte codes BC_UI2F, BC_F2UI, BC_CMPui
<li>Fixed a bug that affected unary operations on constant values
</ul>

<h2>Version 1.3.2 - 2003/09/02</h2>

<ul>
<li>Separated texts from the code for easier maintenance
<li>Separated library code from Windows DLL code
<li>Library code is now following the ANSI standard
<li>Fixed bug that at crashed program when the engine was destroyed
<li>System functions may now returns references that the script engine can write to
</ul>

<h2>Version 1.3.1 - 2003/08/22</h2>

<ul>
<li>RegisterObjectMethod() is now supported for non virtual object methods
</ul>

<h2>Version 1.3.0 - 2003/08/19</h2>

<ul>
<li>Reduced windows .dll size 10% by using the linker option /OPT:NOWIN98
<li>Reduced size another 20% by turning off exception handling (something that can't safely be used in a dll anyway as other compilers don't implement it the same way)
<li>Interface functions and methods are now explicitly declared as _stdcall
<li>The script language now allows the use of pointer declarations, although no pointer arithmetic
<li>Added the -> operator to access members from pointers
<li>Changed the RegisterObjectProperty() parameters
<li>RegisterObjectType() now takes an object size as property as well (although, only 0 is supported)
</ul>

<h2>Version 1.2.1 - 2003/08/12</h2>

<ul>
<li>Registered object types are checked already when registering them
<li>Registered global functions are checked at inclusion
<li>Fixed bug, a script exception could sometimes crash the app
<li>Object properties can now be registered by the application.
</ul>

<h2>Version 1.2.0 - 2003/08/05</h2>

<ul>
<li>The engine now supports multiple contexts for executing several script functions in parallel
<li>The application can now set a script exception in system functions
<li>The application can query the current function and line number being executed
<li>Changed the status codes returned by Execute()
<li>It is now possible to suspend a context
<li>The last context executed is returned with GetLastContextExecuted()
<li>EnumerateContexts() enumerates all existing context IDs.
<li>PrepareContext() uses an existing context created with CreateContext() to improve performance of execution
<li>A pointer to the scripting engine is sent as the last parameter to the system functions
<li>Improved error codes for interface methods
<li>ExecuteStep() allows the application to step through the script.
</ul>

<h2>Version 1.1.2 - 2003/07/31</h2>

<ul>
<li>Added the access operator <code>.</code> for object properties
<li>Added <code>length</code> property to the <code>bstr</code> type
<li>Added ADDOFF that adds an offset to a pointer in a variable
<li>Fixed a bug in CompileDeclaration()
<li>Fixed a bug in Execute() where it returned 1 when finished succesfully
<li>Fixed bug in CallCDeclFunction(), where printf() and OutputDebugString() didn't work in the called function
<li>asCDataType now allows references to be marked as read-only
</ul>

<h2>Version 1.1.1 - 2003/07/25</h2>

<ul>
<li>Cleaned up the code for the instruction set
<li>Added instruction set statistics
<li>Removed NOP, PSP, END
<li>Added MOVSF4, SWAP4, STORE4, RECALL4
<li>Improved performance of the switch case in asCThread::ExecuteNext()
<li>Improved performance for compound assignments
<li>Fixed a bug in CompileConversion()
</ul>

<h2>Version 1.1.0 - 2003/07/18</h2>

<ul>
<li>The thread now reserves space on the stack for arguments and return value
<li>It is now possible to send arguments and retrieve return value
<li>The declarations of the script functions can be retrieved for verification
<li>Compiler error on divide by zero with constant
<li>Throws divide-by-zero on DIVi, MODi, DIVf, MODf
<li>Added byte code LINE that the thread uses to report on which line an exception ocurred
<li>The output stream is now only used during build.
<li>Made the string methods global because the memory is shared anyway
<li>Information about exceptions ocurred can now be retrieved from the engine
<li>The engine interface now uses reference counting to control memory deallocation
<li>Changed the name of the thread functions, as they create the misconceptions that multiple threads are allowed
<li>The output stream is now sent with the Build() method, as it is only used during build.
</ul>

<h2>Version 1.0.4 - 2003/07/16</h2>

<ul>
<li>Improved compiler code to be easier to maintain
<li>Improved the implicit conversion to include assignment and return expressions.
<li>Improved compiler message output, doesn't write "Parsing..." or "Compiling..." unless there is an error or warning.
<li>Improved verification of extended types and system functions
</ul>

<h2>Version 1.0.3 - 2003/07/08</h2>

<ul>
<li>Undeclared variables are only reported once
<li>Doesn't give assert failed when lvalue is a temporary variable (gives a compile error instead)
<li>A warning is now given if a variable is used before being assigned a value
<li>Added implicit conversion between int and float for constant values
<li>Constant expressions are evaluated into a single constant
<li>Constant declarations may now take constant expressions
<li>Constants can only be declared one per statement.
</ul>

<h2>Version 1.0.2 - 2003/07/03</h2>

<ul>
<li>Fixed minor error where the script engine treated the argument to STRMKE as short instead of WORD as it should.
<li>Added an extra SUSPEND in both while and do-while loops to make sure that at least one exist in every loop.
<li>Fixed a bug where assigning a string to a variable breaks the code.
<li>Added post compile optimizations
<li>Added byte code RDSF4 that the optimizer puts in the place of PSF followed by RD4
<li>Added asGetLibraryVersion() to the API
</ul>

<h2>Version 1.0.1 - 2003/06/30</h2>

<ul>
<li>Corrected the missing return type for operator = in asCDataType (thanks Marc Fascia for spotting that)
<li>Fixed a bug where the script engine crashed when initializing variables with a declared bstr constant.
<li>Improved version check so that it is backwards compatible for changes in build version (bug fixes)
</ul>

<h2>Version 1.0.0 - 2003/06/25</h2>

<ul>
<li>Improved temporary variable reutilization
<li>Removed bug in release version
<li>Cleaned up the code for public release
<li>Prepared for compilation as DLL
</ul>

</body>
</html>