-
Notifications
You must be signed in to change notification settings - Fork 5
/
Updates.txt
570 lines (536 loc) · 23.3 KB
/
Updates.txt
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
E-VO v3.7.0 :
Formerly : GRIO Amiga E Compiler !
Changes maked from Amiga E v3.3a:
Optimisations:
(3.3b)
Better ELSEIF:
Was: Is:
Scc D0 Bcc xxx
EXT.W D0
EXT.L D0
BEQ xxx
Testing data in D0:
Was: Is:
MOVE.L xx(Ax),D0
OR
MOVE.L Dx,D0
TST.L D0 Bcc xxx
Bcc xxx
Stack back:
Was: Is:
JSR xxxPROC/EFUNC
LEA 4(A7),A7 ADDQ.L #4,A7
(3.3c)
Short instruction for interval (-128;127):
Was: Is:
MOVE.L xxxx,D0
CMP.L #0,D0 BEQ xxx
or
TST.L D0
BEQ xxx
Was: Is:
CMP.L #1,D0 MOVEQ #1,D1
BEQ xxx CMP.L D1,D0
BEQ xxx
Was: Is:
OR.L #-1,D0 MOVEQ #-1,D1
OR.L D1,D0
Was: Is:
SUB.L #25,D0 MOVEQ #25,D1
SUB.L D1,D0
Was: Is:
... ...
MOVEM instrunction:
Was: Is:
MOVEM.L D3,-(A7) MOVE.L D3,-(A7)
MOVEM.L (A7)+,A5 MOVEA.L (A7)+,A5
Start value for variable:
Was: Is:
MOVEQ #0,D0 MOVEQ #0,D0
MOVE.L D0,-$0224(A4) MOVE.L D0,-$0224(A4)
MOVEQ #0,D0 MOVE.L D0,-$0228(A4)
MOVE.L D0,-$0228(A4)
NEW [1,x,10000]:
Was: Is:
MOVE.L D0,(A7) MOVE.L D0,(A7)
MOVEQ #1,D0 MOVEA.L D0,A6
MOVE.L (A7),A6 MOVEQ #1,D0
MOVE.L D0,4(A6) MOVE.L D0,4(A6)
MOVE.L x(A5),D0 MOVE.L x(A5),D0
MOVE.L (A7),A6 MOVE.L D0,8(A6)
MOVE.L D0,8(A6) MOVE.L #10000,D0
MOVE.L #10000,D0 MOVE.L D0,12(A6)
MOVE.L (A7),A6
MOVE.L D0,12(A6)
Zero offset to Ax register:
Was: Is:
MOVE.L (A7)+,$0000(A0) MOVE.L (A7)+,(A0)
MOVE.L D0,$0000(A7) MOVE.L D0,(A7)
(3.3d)
Removed LINK A5,#-XXXX/UNLK A5:
if PROC haven't args and vars
Put element to the list:
Was: Is:
LEA xx(PC),A0 PEA xx(PC)
MOVE.L A0,D0
MOVE.L D0,-(A7)
Was: Is:
MOVE.L #xx,D0 PEA xx.(W/L)
MOVE.L D0,-(A7)
Was: Is:
MOVE.L xx(A4/A5)/Dx,D0 MOVE.L xx(A4/A5)/Dx,-(A7)
MOVE.L D0,-(A7)
(3.3f)
Some improvements in EAEXP.
(3.3g)
Added features:
(3.3b)
-Possible to use EXIT in LOOP/ENDLOOP and REPEAT/UNTIL .
-Improved functions:
StrCopy()
StrCmp()
StrAdd()
MidStr()
ForAll()
Exitst()
SelectList()
FileLength()
ReadStr() -> much faster
MapList()
ListCmp()
ListAdd()
ListCopy()
String()
OstrCmp() .
-New function StriCmp() -> case sensitive version of StrCmp() .
(3.3c)
-String joining in the list by "+" .
-Get/set list elements by 1+a .
-Function InStri() -> like InStr() but it case sensitive .
-Geting address of object member/method: {abc.a[3].z} .
-Line number report in branches .
-OPT STRMERGE for string merging .
-EXPORT ignored if not used in MODULE .
(3.3d)
-In definition OBJECT or var array size can be defined by [4*3+1]
-DEF a:REG abc now accepted .
-"=>" and ">=" it's the same , "=<" and "<=" it's the same .
-Things like that : Func()::blah.a now is possible .
-Using OPT 020+ we get improved code :
1. to the startup compiler put test code for entered CPU
2. inline mul/div (*;/) working for long sizes
3. function Mul()/Div() is patched for 020+
4. EXT.W;EXT.L is changed to EXTB.L .
(3.3e)
-Modified startup code .
-REGS var in HANDLER PROC ( only if you define them ,
no in optimisation ).Becarefull with that this maybe very dangerous
if you use REGS var in HANDLE'r.
-Using LONG label -> we get reloc of entered label .
-Short version ARRAY definition in PROC/OBJECT ( DEF a[10]:CHAR ) .
-NOALIGN keyword for OBJECT definition , it's turn off auto align
odd members (example : OBJECT blah NOALIGN ).
-INC/DEC extension : INC x,20 ( x:=x+20 ) .
-ASM mnemonics:
MUL(U/S) AND DIV(U/S) - long size
EXTB.L
-NOT keyword for IF/WHILE/UNTIL expresion .
-UNION keyword for OBJECT's definitions :
OBJECT abc
a:LONG
UNION
[b:INT,c,d]
[
e:CHAR
f:LONG
g:INT
]
ENDUNION
k:PTR TO LONG
-> or something like that :
UNION [
[b:INT,c,d],
[e:CHAR,f:LONG,
g:INT]
]
ENDOBJECT
-Added operators : & eq AND
|| eq OR
~ eq NOT .
-Possible assigment in member/list elements ([a.e:=0]) .
(3.3f)
-New functions:
StrClone(estr) - duplicate estring
ListClone(elist) - only long size elements
GetA4() - ...
-Keyword SAFE for PROC's ( ex: PROC SAFE bla(a,b) ) :
result push REG's D2-D7/A2-A6 on the stack .
-OPT RUNBG - run background ( 2 vers 4 kick<v37 & kick>=v37 ) .
-Modified startup code (to work with or without RUNBG , and
fake stack is setup ).
-New global var "thistask" .
-Modified LIBRARY startup/Open/Close ; tasks never be hash-tabled
but tabled by dynamic allocated one linked list .
- "//" is a comment .
-Added exporting in MODULE arg name for method's ;
optional can be switched off by new keyword OLD
( ex: OPT MODULE OLD ); update ShowModule tool for display "new"
module .
(3.3g)
- Improved fake stack setting , now is more os compatible
( used exec SwapStack() for OS v37 else old things ).
- Added PRIVATE methods in OOP ( PROC bla() OF abc PRIVATE IS EMPTY )
- member can be used as method ( OBJECT abc;a,b;ENDOBJECT -> abc.a(1,2) )
- possible set PROC/label address in static list like this [1,2,main]
( old mode [1,2,{main}] ; is still working ,but code is longer )
- registers can be used as normal variable ( very beta )
- EXTRA keyword for LIBRARY mode (idea taken from CreativE) :
LIBRARY namestring,version,revision,versionstring EXTRA value IS ...;
now library base can have more variables
- PREPROCESS'ing is on at beginnig , OPT PREPROCESS leaved for down compatibility.
- Added shift expresion (exp. CONST ABC=1<<4; x:=y<<3 ).
- Function added AstringF - like StringF but for normal string's
Fixed Bugs:
(3.3b)
-Functions:
Facos()
Fsinh()
... .
(3.3c)
-Bad object reference:
OBJECT bla
brr
ENDOBJECT
PROC main()
DEF i:bla
WriteF('\d\n',i.brr.brr)
ENDPROC
-MOVEQ #-128,D0 now accepted .
-Default member in object now is PTR TO CHAR .
-RAISE error report .
-Error report without "]" in DEF a[ .
-Library base showed unref if called in other module .
-EOR.L #3,D0 changed to EORI.L #3,D0 .
(3.3d)
-Get address member then a first is dereference : {a::abc.c} .
(3.3e)
-Getting address member if he not defined .
-Bad brach set in LIBRARY if OPT CPU not used .
-Things like:
IF IF x THEN x ELSE x=y THEN y ELSE 0
generating bad code .
-"IF" optimiser cut TST after functions/procedures;
Example:
IF CtrlC() THEN Raise(ERR_BREAK)
CODE:
BSR CtrlC
BEQ xxx .
(3.3f)
- Bad reporting in case: OBJECT bla; a,b,c ;PROC zzz() ( or CONST ...)
error message "label expected" - now "incorrect object definition" .
- Small fixes in head code in LIBRARY output .
- Raise() in LIBRARY if PROC isn't have HANDLE'r JUMP to $0 address .
- Small bug in geting var address .
- Agrrh... nasty bug in close library routine . Resolved.
- Fake stack maker bug ( in setting Upper/Lower pointers) .
(3.3g)
- Another bugs fixed in "get address " sequence (ex.: {a.c[a]} ).
- Problem with definition static OBJECT's and UNION's members.
- Small bug in reg exp
Development restarted as E-VO by Darren Coles
(3.4.0)
- Name change to E-VO
- New version numbering 3.4.0
- Add CONT command, similar to EXIT but continues the loop at the top
instead of dropping out.
- Make default cpu 68000
- Make stack buffer configurable (and default it to 50k)
- Fix file handle leak
- Fixed breaking defect MIDSTR command
- Allow CONT and EXIT commands to be called inside an IF or SELECT
- Add ANDALSO and ORELSE short circuit versions of AND and OR
- Optimised IF/WHILE/REPEAT expressions and removed TST immediately
following MOVEQ
- Fixed KickVersion not returning true when version number is exactly
equal to the requested version
- Allow String(0) which was valid in E v3.3a
- Show line numbers for unused variables/labels/procs
- Allow new formatting characters \u (unsigned long) \q (double quote)
\! (ascii bell) \v (vertical tab) \xHH (hex char) (taken from
CreativE)
- Allow macros to be defined by passing in DEFINE command line
parameter (taken from CreativE / ECX)
- Allow string consts (taken from CreativE)
- Added #date preprocessor (taken from CreativE but enhanced with hours
minutes and seconds options)
- Added DoMethod, DoMethodA, CoerceMethod, CoerceMethodA,
DoSuperMethod, DoSuperMethodA, Set, Sets, Get, Gets, CtrlD, CtrlE, CtrlF,
Chk, Eof, Fopen, Fclose, Alloc, Free, PutF, ReadB, WriteB, Size, Lsl, Lsr
functions (all taken from CreativE)
- We now have optimised versions of WriteF, PrintF, PutF when targetting
OS 37.
- Added SHOWFNAME command line parameter.
- Reverted order of efunctab back to how it was in E to restore
compatibility with pre-compiled E modules that are using Mul Div or
WriteF.
- Added the following functions:
LowerChar(c), UpperChar(c) - takes a char and returns a char
StrAddChar(s,c) - Adds a single character to an estring
ListAddItem(l,i) - Adds a single item to an elist
- Immediate assignments for values -256 to 254 for even numbers converted
to MOVEQ followed by ADD.L D0,D0
- Optimised NEW [] list creation to remove duplicate moves into D0
eg. NEW [0,0,0,0]
- Added OPT PURE to check for non pure code (eg variables in static
lists/objects and GetA4 call)
- Optimisation: Removed TST.L D0 after EXT.L D0 in IF/WHILE/REPEAT etc
conditions.
- Optimisation for default values for reg vars into single MOVE
instruction.
- Optimisation for reg var assignments where moveq is used into a single
MOVE instruction where possible.
- Added warning when compiling a library that OPT PURE is recommended
- Optimisation for reg var assignments where moveq+add is used.
- Optimisations with FOR loops to remove redundant move instructions.
- Added FATAL 'string' command which generates no code but will fail
the compilation (useful for use with #ifdef)
- Added WARN 'string' command which generates no code but will show
- a warning during compilation
- Added EVO_3_4_0 auto generated #define macro which will allow you
to check for a minimum version of the compiler. New defines will be
additionally created for each new version of the software.
- Added #ELSE #ELIFDEF #ELIFNDEF preprocessor commands
- Added #UNDEF preprocessor command
- Added 020 optimised versions of Long, Int and Char functions
- Added StrIns(estring,estring,pos) - insert string function
- Added StrRem(estring,pos,len) - remove substring function
- Store full path of source files when generating debug hunk (allows
EDBG to find the files if they are not all located in the same
folder).
- v47 (OS3.2) emodules, including all the new reaction interfaces
- ARRAY OF CHAR no longer word aligned in OBJECTS
- NOT operator works correctly with immediate values (eg "NOT 0" did not
work correctly.
- MUL/DIV optimisations also working for 020 generated code.
- NOALIGN now requires 020 as accessing unaligned INT or LONG will result
in exception if you don't have 020.
- Fixed optimiser bug in library calls where IF function was used in
a parameter that prevented the correct value from being passed.
- Fix: x AND 0 was returning incorrect value
(3.4.1)
- Fix: Optimisation error where multiple variables set to the same value
were not set correctly.
- Made the select source file window wider in EDBG to account for the
full path being displayed.
(3.5.0)
- Added ac020 object with pad int to allow optimised 32 bit writes on
020+ courtesy of Samuel D. Crow
- When compiling in debug, disable the optimisation that removes LINK,
UNLK in procs where not needed (EDBG doesnt step properly when these
aren't present)
- EDBG: Add case insensitive search
- EDBG: Added search next
- EDBG: Display variable values in both hex and decimal
- Fixed: Clears an extra byte in the String() initialisation causing
memory corruption in the case of String(0)
- EDBG: Enhanced breakpoints - multiple can now be set and can be
seen/set in a column next to the code
- EDBG: Support for multiple breakpoints and debugging while code is
running.
- EDBG: Added support for debugging under OS4.x (eg without using CPU
exceptions)
- EDBG: Added support for adding watch variables by entering name
- Added support for DEBUG50 mode which allows debugging using JSR
instructions instead of causing cpu exceptions which allows debugging
under OS 4.x
- Added support for multi-dimensional arrays
- Added support for PTR TO PTR variables
- Added EVO_3_5_0 define
- Added ? operator (ported from CreativE)
- Added OPT FPEXP (fpu floating point support - ported from CreativE)
- Added :=: swap operator (ported form CreativE)
- Added OPT INLINE (ported from CreativE)
- Added OPT NOSTARTUP (ported form CreativE)
- Added OPT UTILLIB (ported from CreativE)
- Added NOREGS option (ported from CreativE)
- Updated module format (now version 12) to account for multi-dimension
arrays and PTR TO PTR type in object members
- Ported some optimisation code from CreativE
- Added ENDPROC WITH function (ported from CreativE)
- Added == operator (range check - ported from CreativE)
- Added new system constants TAG_DONE, TAG_END, TAG_INORE, TAG_MORE,
TAG_SKIP, TAG_USER, OFFSET_BEGINNING, OFFSET_BEGINING, OFFSET_CURRENT,
OFFSET_END (ported from CreativE)
- Added new utilitybase variable
- Added 020+ optimised MOD function
- Added support for += -= etc operators (ported from CreativE)
- ShowModule: Added support for new module format (version 12)
- Added improved LONG,INT,CHAR routines from CreativE which allow
expressions
- Added improved SIZEOF command that allows SIZEOF objectvar
- Allow \xNN for hex char in strings
- Add ELSEWHILE and ALWAYS extension to WHILE LOOP (from CreativE)
- Improvements to SELECT x to allow expressions (from CreativE)
- Added LEGACY option to output module format version 10 and disable newer
features
- Fix: 2 << obj.val was generating corrupt code
- Add SECTION (code and data) support
- Fix: ReadStr return value was not completely compatible with EC (fix
Pragma2Module bug)
- ShowModule: Add -e parameter which will force output into a form that
can be directly recompiled
- Added a scanf module in the other folder
- Allow string consts in modules
- Allow float CONST definitions
- Remove some unused startup code when OPT ASM in use.
- ShowModule: Added support for string CONSTs
- Added OFFSETOF to get the offset of a member of an object
- Added MemFill, AstrClone, ListInsItem, ListRemItem, ListSwapItem functions
- EDBG: Support for sections
- FindModule: Coded new FindModule application from scratch with support
for latest module format.
- Make second parameter of SetStr optional and if not specified it will
set the calculate the string length automatically
- Added EndsWith function eg EndsWith(s,'A') returns TRUE if a string1 ends
with string2
- Fix: CHAR '' or CONST STR='' would cause memory corruption
- Fix "3*SIZEOF LONG" error
- added AstpCopy and UsedStack and StackSize functions
(3.5.1)
- fix issue with short jump calculations being done incorrect in certain
circumstances, causing crashes.
- fix casing of math ieee functions to match original E modules
- disable OPT POOL and OPT UTILLIB in legacy mode
- disable THISTASK, __POOL and UTILITYBASE in legacy mode
- reinstate [] in immediate list to previous E functionality (a blank
0 item list)
- fix optimisation issue where MOVE.B (A0),D0 and MOVE.W (A0),D0 followed
by TST.L would be optimised incorrectly.
- fix issue with immediate lists, ListMax() could not be used as the max
size was not populated.
- allow 0 length lists to be created eg List(0)
- add showhunk source
(3.6.0)
- EDBG: add support for ECX/EEC compiled executables
- fix issue with memfill that could cause odd address exception on 68000
- add TRY..CATCH..ENDTRY allowing more control over exception handling
- Add UNTILN, WHILEN ELSEWHILEN, IFN, ELSEIFN, EXITN, CONTN which are
inverse of their counterparts eg. UNTILN x is equal to UNTIL Not(x)
- Add WORD and BYTE types (unsigned 16 bit and signed 8 bit variable types)
and Word() Byte() functions as well as PutByte() and PutWord()
- Allow SIZEOF object and SIZEOF object.member
- Fix issue where SIZEOF x didnt throw a compile error if x was not defined
- Added EVO_3_6_0 define
- Added Compare, Ucompare, Fcompare, StrCompare functions
- Fixed Int() function to sign extend result
- Added OPT LEGACYINT to restore old version of Int() command
- Added command line switch LEGACYINT/S which does the same as the above OPT
- Allow BYTE and WORD types in modules, increase module version to 13.
- FindModule: fix error in memory deallocation
- FindModule: update for BYTE and WORD types (module version 13)
- ShowModule: update for BYTE and WORD types (module version 13)
(3.6.1)
- add checks for object going over 64k
- fix 020 optimised address calculation for array of object (or ptr to
object) indexing
- added EXENAME and DESTDIR command line arguments to override the output
file name.
- EDBG: Setting breakpoint caused crashes on certain versions of graphics.library
- fix casing for IeeeDPFloor and IeeeDPCeil
- Extend lists to handle 64k items instead of 32k
- Fix #else preprocessor parsing issues
(3.7.0)
- Compiler sometimes produced garbage error message with an error at the very
end of the file.
- Reformatted the Amigaguide document to better fit in 80 columns.
- added Arexx compile scripts
- allow creating a new object directly into an object member
eg. self.a:=NEW self.a.method()
- method table was not correctly initialised for objects declared as
eg. DEF a:b OR DEF a[5]:ARRAY OF b
- heap in compiler is allocated with MEMF_CLEAR in compiler to ensure all
data in the exe is initialised to 0 and not contain random data from
memory
- calling a method on an array element of an object did did not calculate
the correct address for the method.
- compiler was creating 020 opcodes when accessing an array of objects
- added NIL pointer checks when calling methods on array of objects
- self variable was set incorrectly for methods declared with an exception
handler
- fix issue with wrong opcode being generated in this code
DEF a
DEF b:PTR TO LONG
a:=[0,b[0]:=5]
resulting in the value not being stored correctly
- include textfield module
- fix bug in reaction_lib with the freeClickTabs, freeChooserLabels and
freeRadioButtons functions not looping through the list correctly.
- add support for long branch 020 instruction.
- fix invalid memory access when casting the result of a procedure call
to an object
- fix inconsistencies with SIZEOF command
- fix error in branching code for the == operator
- add missing listview module
- add some extra functions in reaction_lib (openClass, openLibs,
closeLibs, libDoGadgetMethodA)
- added PSIZEOF operator
- added ARRAYSIZE operator
- added SelectFirst function
- added debug symbols for methods
- allow CONT and EXIT within SELECT statement
- updated Rnd() function to be pure
- flagged openw, opwns, boolgad, settopaz, sets, gets functions as not pure
- added WARN TRUE/FALSE to enable/disable warnings
- added Rol() and Ror() functions
- the 020 variant of Mod() was not correctly used by the compiler and
was also taking the parameters the wrong way around
- added 020 variant of ListItem function
- track line numbers for warnings
- NOREGS option was not correctly parsed on methods
- taking a reference to a method {obj.method} did not return the
correct address
- 1.3 startup code now updates stack pointers to allow stack space
functions to return the correct values.
- skip NameFromFH call on kick 1.3 meaning the compiler now works
on that OS again
- NOT operator was very broken (inconsistently applied and in some cases
not applied at all)
- Added EVO_3_7_0 define
- casting and PTR TO PTR handling is improved and should now work in all
use cases.
(3.8.0)
- Added variable names + types and procedure line numbers to EVAR debug
info
- Made multi-dimensional arrays memory layout more logical (first
dimension is most significant)
- Fix global variable structure generated for library definitions
- Added object definitions to debug info
- Update EDBG to parse new EVAR structures
- Add _SRCLINE_ define (current line number)
- Add _SRCPROC_ define (current proc name)
- Added EVO_3_8_0 define
- Added support for ARRAY OF PTR TO ... in objects
- Fixed issue where two variables declared with the same initial value
did not get set correctly.
(3.8.1)
- FindModule: add module version 14 support
- Showmodule: add module version 14 support
- fix legacy compile mode so it doesnt include changes in module
version 14
- Fix reaction texteditor tag values in gadgets/texteditor.m
DATE HISTORY:
3.3b 20.11.1999 -> 12.12.1999
3.3c 15.12.1999 -> 12.01.2000
3.3d 21.01.2000 -> 02.03.2000
3.3e 05.04.2000 -> 22.06.2000
3.3f 03.01.2001 -> 15.10.2001
3.3g 04.01.2002 -> 16.06.2003
3.4.0 09.06.2021 -> 07.10.2021
3.4.1 19.10.2021 -> 23.10.2021
3.5.0 04.11.2021 -> 14.07.2022
3.5.1 08.08.2022 -> 06.09.2222
3.6.0 12.09.2022 -> 19.04.2023
3.6.1 24.04.2023 -> 16.06.2023
3.7.0 30.06.2023 -> 09.03.2024
3.8.0 13.03.2024 -> 28.06.2024
3.8.1 08.07.2024 -> 09.07.2024