-
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathChangeLog
More file actions
2172 lines (1419 loc) · 74.6 KB
/
ChangeLog
File metadata and controls
2172 lines (1419 loc) · 74.6 KB
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
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
L1VM (3.6.0)
VM: experimental "main-sched.c" virtual CPU task scheduler added.
See prog: "hello-sched.l1com".
I fixed a bug in the L1VM scheduler POSIX threading code start position.
NOTE: you can't start new POSIX threads in the L1VM scheduler VM.
I try to fix this, but it can take some time.
-- Stefan Pietzonke <info@midnight-coding.de> Tue 07 April 2026 17:46 +020
L1VM (3.5.6)
Note: I did run Cppcheck and Infer on "l1vm", there were no errors found.
VM: added cbmc.sh CBMC code check tool, with mathematical proofs. The L1VM core has no errors. Only the string functions don't pass the tests. This means that they can not be proven to be correct. But they are safe! This is important to know!
Added Brackets code formatter in "formatter" directory.
New flag: (varname-ascii) if set only alphanumerical chars and "_" in variable name allowed!
VM: Optimized memory bounds check. Now a lot faster using & instead of modulo.
VM: added msg module to send receive messages. See "messages-mod.l1com".
VM: msg module: added allocating max messages and string messages via calloc().
Compiler: now rbuf and rbuf_orig are global to show line and linenumber in var.c error messages.
Linter: checks now if in a function with return arguments, (return) was used.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 21 March 2026 20:55 +020
L1VM (3.5.5)
The linter has now a "strict" flag. With it set the result variables must end by a uppercase "R" ending.
They are not alowed as function arguments. See "linter/math-inc-strict.l1com".
Now the function call variables are also checked and can't be used after the function call.
And pointers to the variables can't be used too.
NEW in linter:
// (remove foo)
Marks variable foo as invalid. It can't be used again after this line!
NEW Linter flags to check if pointer variable is of type "const-int64":
// (pointer strict on)
// (pointer_strict_off)
-- Stefan Pietzonke <info@midnight-coding.de> Fri 09 January 2026 21:55 +010
L1VM (3.5.4)
VM: Added function epoch ms interrupt: get the time after UNIX epoch in ms.
VM: Added gps module to read GPS from the gpsd server.
See "lib/gps.l1com" example.
NEW: The linter has now a "strict" flag. With it set the result variables must end by a uppercase "R" ending.
They are not alowed as function arguments. See "linter/math-inc-strict.l1com".
Added VM/string: "string_format_num" function to print strings formatted: 1,000,000.12345.
-- Stefan Pietzonke <info@midnight-coding.de> Sun 27 December 2025 18:26 +010
L1VM (3.5.3)
VM: added L1VM embedded functions to read/write to global data array.
VM: rs232 library: added Windows build script.
The installer scripts are now in "install" directory. And the program build scripts are now in "scripts".
I did clean this up.
-- Stefan Pietzonke <info@midnight-coding.de> Wed 20 August 2025 22:34 +020
L1VM (3.5.2)
Example programs updates.
-- Stefan Pietzonke <info@midnight-coding.de> Sun 17 August 2025 14:00 +020
L1VM (3.5.1)
Compiler: NEW flag -savecode to put the Brackets code line into the assembly output.
VM: modules: I added support for Bluetooth BLE with the SimpleBLE library.
Note: If you use the SimpleBLE library commercially, then you have to pay a license!
I did check the Bluetooth BLE read and write functions. They both are working!
NEW: support for NetBSD and also MidnightBSD.
-- Stefan Pietzonke <info@midnight-coding.de> Thu 07 August 2025 20:37 +020
L1VM (3.5.0)
Compiler, assembler MAXLINELEN fixes.
AsmJIT compiler finally updated to the current GitHub version.
NEW: SDL 3.0 module: gfx primitives like lines, pixel and GUI are working.
I added camera support. See in "prog/sdl" example.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 31 May 2025 17:54 +020
L1VM (3.4.2)
In settings header LOW RAM limits changed.
The compiler needs then only 11 MiB to compile.
Compiler fixes.
NEW: now in Brackets code a new flag "(linter)" can be set to make sure the code was "linted"!
NEW: added contracts into the compiler. Now "preconditions" and "postconditions" can be set in a function.
See example "prog/lint/math-inc.l1com"!
-- Stefan Pietzonke <info@midnight-coding.de> Thu 08 May 2025 18:12 +020
L1VM (3.4.1)
Added new string-unicode module for unicode support.
See lib/string-unicode.l1com example.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 05 Apr 2025 23:42 +010
L1VM (3.4.0)
Changed the -pack bzip2 bytecode compression to bzip3, which generates more compact files.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 22 Mar 2025 21:38 +010
L1VM (3.3.8)
Preprocesso: show line number in macro errors.
Preprocessor: second pass removed. Now error messages show the right line numbers!
VM: added two new interrupts to switch memory bounds check on push/pull opcodes:
(:memory_bounds_off !)
(:memory_bounds_on !)
If it is switched off then the execution speed can increase a lot.
But the overflow checking is disabled for push/pull opcodes!
Added "unsafe" and "unsafe-end" code blocks.
Inside a unsafe block the memory bounds checking can set on/off.
See example "prog/little-vm.l1com".
Added variable prefixes:
(\num\x * \num\y \num\z :=)
So here is the prefix: \num\
All variables must have the same prefix like the target variable \num\z.
So here \num\ is a special type all variables in the math expression must have.
See "prog/type.l1com".
-- Stefan Pietzonke <info@midnight-coding.de> Sat 08 Mar 2025 12:57 +010
L1VM (3.3.7)
VM/MPFR module Windows and macOS build scripts: memory bounds added.
-- Stefan Pietzonke <info@midnight-coding.de> Fri 21 Feb 2025 32:00 +010
L1VM (3.3.6)
Added "repair multi spaces" function to compiler.
It fixes the two or more spaces problem between tokens.
(set string 13 hello "Hello world!")
will be changed to:
(set string 13 hello "Hello world!")
-- Stefan Pietzonke <info@midnight-coding.de> Sat 08 Feb 2025 13:44 +010
L1VM (3.3.5)
VM: MPFR module: print number string fixes. Now the function checks if string is big enough before saving it into the temp file.
New build scripts with "wspace" in the name. They warn if there are more than one space between tokens.
Use them to find such errors where the preprocressor just gives an error message without line number!
-- Stefan Pietzonke <info@midnight-coding.de> Sun 22 Dec 2024 23:46 +010
L1VM (3.3.4)
VM: string module: added string_verify function to check if a string contains valid chars.
See "lib/string.l1com".
-- Stefan Pietzonke <info@midnight-coding.de> Sat 23 Nov 2024 15:14 +010
L1VM (3.3.3)
VM: debugger now available via interrupt 0: 37.
See include: intr.l1h and intr-func.l1h.
-- Stefan Pietzonke <info@midnight-coding.de> Thu 14 Nov 2024 21:30 +010
L1VM (3.3.2)
VM: MPFR module now uses nano ID for temp file name".
VM: -q flag also silences the threading interrupt functions!
-- Stefan Pietzonke <info@midnight-coding.de> Sun 10 Nov 2024 21:26 +010
L1VM (3.3.1)
VM: net module now has experimental SSL support.
For a demo see "lib/ssl" directory examples.
There is a README to explain how to use it.
I found a SSL tutorial and modified it to make it fit with the other net module code.
On a SSL connection you can use the normal socket read/write functions.
It automatically selects the right functions.
This is a bugfix release. The line number output code was removed.
The pov-edit program now works again!
-- Stefan Pietzonke <info@midnight-coding.de> Tue 22 Oct 2024 22:21 +020
L1VM (3.2.5)
The preprocessor now shows line numbers on error messages.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 28 Sep 2024 19:03 +020
L1VM (3.2.4)
The preprocessor now runs two passes. This makes it possible to define macros with macros in it!
The compiler now prints the filename on an error.
-- Stefan Pietzonke <info@midnight-coding.de> Thu 26 Sep 2024 16:29 +020
L1VM (3.2.3)
SDL module now has new functions copy_area and restore_area.
With this areas of the screen can be copied and restored.
Maybe this is usefull for creating popup custom GUI elements.
-- Stefan Pietzonke <info@midnight-coding.de> Sun 22 Sep 2024 13:00 +020
L1VM (3.2.2)
VM: JIT compiler x86: added modi opcode.
AARCH64 modi code not tested yet. Code is a comment!
-- Stefan Pietzonke <info@midnight-coding.de> Thu 19 Sep 2024 16:26 +020
L1VM (3.2.1)
Compiler bugfixes: now a expression like:
(((x y +) ret :=) ret2 :=)
Is parsed without error! It is assining ret and ret2 to the result.
NEW: Added bytecode hot reload feature. See "prog/reload" for a demo program.
The data is unchanged and must be all at the same addresses in the new loaded bytecode.
Only the code can be changed!
-- Stefan Pietzonke <info@midnight-coding.de> Tue 10 Sep 2024 17:39 +020
L1VM (3.2.0)
Preprocessor bugfixes. Now the preprocessor can insert the string_immutable interrupt on "const-string" variables.
So they can be checked then for overflows.
The preprocessor now can insert the "for" loop start line "(for-loop)" automatically.
See "prog/hello-for-3.l1com" example.
The preprocessor now warns if the intr0 and intr1 interrupts are used direct in the program.
They should be used with the macros in "intr.l1h" or "intr-func.l1h".
-- Stefan Pietzonke <info@midnight-coding.de> Sat 07 Sep 2024 14.16 +020
L1VM (3.1.12)
NEW: interrupts for allocating function local data by copy all data to local
#func data_func_local_alloc (NONE) :(11 0 0 0 intr1)
#func data_func_local (NONE) :(12 0 0 0 intr1)
#func data_func_global (NONE) :(13 0 0 0 intr1)
#func data_func_free (NONE) :(14 0 0 0 intr0)
See prog/webserver-thread-local-2
-- Stefan Pietzonke <info@midnight-coding.de> Sun 25 Aug 2024 09:49 +020
L1VM (3.1.11)
NEW: the preprocessor can now check the variable types set in the macros.
>> intr-func.l1h
>> interrupt macros - new only functions - no macros
>> intr0
>> @# chars to print \n newline char
>> new: types can be set by setting the variable types as the first char:
>> i = integer / string pointer
>> d = double
>> s = string
>> iFOO -> set iFOO as an integer variable
>>
-- Stefan Pietzonke <info@midnight-coding.de> Wed 14 Aug 2024 16:29 +020
L1VM (3.1.10)
VM/mpfr module: I did set a new flag in settings.h to set the MPFR modules filesize function call:
// Set this to 1 if you are using clang 15 or older.
// If you are using clang 16 or later then set this to 0
// This sets the type of the MPFR filesize function. If it is the experimental function or not.
#define CPP_FILE_EXPERIMENTAL 1
-- Stefan Pietzonke <info@midnight-coding.de> Wed 07 Aug 2024 16:49 +020
L1VM (3.1.9)
VM: now the AsmJit part is lunked direct to the VM, if it is build with JIT-compiler.
-- Stefan Pietzonke <info@midnight-coding.de> Mon 08 Jul 2024 16:09 +020
L1VM (3.1.8)
VM: nanoid module buffer overflow fixes.
Assembler: now checks for l1vm home directory for file loading in byte variable.
Compiler: now gives error if "call" or "!" is missing on a function call like this:
(x y :foobar)
VM: MPFR module: use latest version of the mpreal.h include from GitHub repo.
Assembler: load file into byte/string variable filename check for ../ added.
It is illegal! You can only access file in "~/l1vm" L1VM home directory.
-- Stefan Pietzonke <info@midnight-coding.de> Wed 03 Jul 2024 18:44 +020
L1VM (3.1.7)
NEW: VM can be build as a shared library for embedding it in other programs.
See vm/README!
-- Stefan Pietzonke <info@midnight-coding.de> Tue 28 May 2024 22:30 +020
L1VM (3.1.6)
VM: new interrupts 0: 35/36 to get host CPU and host OS type.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 25 May 2024 17:10 +020
L1VM (3.1.5)
Compiler: added := as assign operator for expressions too.
So you now should use := as the assign operator for new programs.
The old way of using = still works. This is backwards compatible
and older programs still compile.
-- Stefan Pietzonke <info@midnight-coding.de> Tue 21 May 2024 15:57 +020
L1VM (3.1.4)
NetBSD: changed the order of allocations in main().
Added preprocessor blocks to run the "run(0)" function.
The pthread_create () call crashes on NetBSD. So there is no multithreading possible yet!
If you know how tom fix this, then contact me please!
Compiler: now you can write expressions like this:
(xd * yd zd :=)
With the target variable on the right side.
In did add "include/intr-func.l1h" to use functions only.
This is needed to use the new "(:print_n !)" syntax.
The old "intr.l1h" is still there for the older syntax using programs.
I did add checks to avoid usign stpop on a constant variable.
-- Stefan Pietzonke <info@midnight-coding.de> Sun 19 May 2024 15:35 +020
L1VM (3.1.3)
Added nanoid module for generating unique IDs.
See lib/nanoid.l1com.
-- Stefan Pietzonke <info@midnight-coding.de> Sun 12 May 2024 07:36 +020
L1VM (3.1.2)
NEW: now preprocessor macros can be called like function calls:
// print string
(hello :print_s !)
print_n
See "prog/hello-func.l1com" !
-- Stefan Pietzonke <info@midnight-coding.de> Wed 08 May 2024 23:37 +020
L1VM (3.1.1)
NEW: linter now checks if function call: "call" or "!" have a space in front or not.
MPFR C++ math library added checks to set number functions: now they check if the new number string is a number!
String module: set string position variables to S8.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 04 May 2024 21:21 +020
L1VM (3.1.0)
NEW: linter now checks if function arguments are in right order at "stpop" call.
-- Stefan Pietzonke <info@midnight-coding.de> Wed 24 Apr 2024 21:14 +020
L1VM (3.0.10)
NEW: preprocessor reuse alredy set defines bugfixes.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 06 Apr 2024 22:00 +020
L1VM (3.0.9)
NEW: Added thread local data memory erasing before free the data.
-- Stefan Pietzonke <info@midnight-coding.de> Sat 23 Mar 2024 18:56 +010
L1VM (3.0.8)
I did add a linter for checking of function call arguments.
See prog/lint directory! The build script is: "l1vm-build-lint.sh".
-- Stefan Pietzonke <info@midnight-coding.de> Fri 22 Mar 2024 12:54 +010
1VM (3.0.7)
I did add a new interrupt to set strings as immutable:
(set string s worldstr " world!")
// set string as immutable:
string_immutable (worldstr)
See "intr.l1h"!
-- Stefan Pietzonke <info@midnight-coding.de> Tue 19 Mar 2024 22:00 +010
L1VM (3.0.6)
AsmJit library si now included in the L1VM sources.
I did clean up the JIT-compilers directories.
-- Stefan Pietzonke <info@midnight-coding.de> Tue 12 Mar 2024 17:27 +010
L1VM (3.0.5)
NEW: functions with no side effects can be marked as "pure".
A pure function can only call other "pure" functions.
See prog/hello-pure.l1com.
Here is an example function:
(squareP func)
#var ~ squareP
(set double 1 num~ 0.0)
(set double 1 ret~ 0.0)
(num~ stpopd)
{ret~ = num~ * num~}
(ret~ stpushd)
(funcend)
This function depends only on the given argument number and returns the square of the number.
So it is "pure"!
-- Stefan Pietzonke <info@midnight-coding.de> Thu 07 Mar 2024 06:57 +010
L1VM (3.0.4)
Should work:
addi, subi, muli, divi
addd, subd, muld, divd
bandi, bori, bxori
jmp, jmpi
eqi, neqi, gri, lsi, greqi, lseqi
eqd, neqd, grd, lsd, greqd, lseqd
-- Stefan Pietzonke <info@midnight-coding.de> Mon 04 Mar 2024 16:52 +010
L1VM (3.0.3)
ARM JIT compiler: first steps are done!
Should work:
addi, subi, muli, divi
addd, subd, muld, divd
There is still lot work to do.
-- Stefan Pietzonke <info@midnight-coding.de> Tue 27 Feb 2024 19:48 +010
L1VM (3.0.2)
BUGFIXES in modules and other parts.
NEW: "variable-local-only-on" and "variable-local-only-off" compiler flags to allow only local variables and no main global ones.
NEW: disassembler build script update. MSYS2 installation script update.
-- Stefan Pietzonke <info@midnight-coding.de> Fri 23 Feb 2024 18:52 +0100
L1VM (3.0.1)
NEW: stack operators short symbols:
new: standard:
(a b>|) (a stpushb)
(b i>|) (b stpushi)
(c d>|) (c stpushd)
(c_st |>d) (c_st stpopd)
(b_st |>i) (b_st stpopi)
(a_st |>b) (a_st stpopb)
-- Stefan Pietzonke <jay-t@gmx.net> Mon 12 Feb 2024 16:54 +0100
L1VM (3.0.0)
NEW: now math expressions can be written like this in Brackets:
{i = xd + yd}
The () brackets are not longer needed for this, to work.
The old way was:
{i = (xd + yd)}
-- Stefan Pietzonke <jay-t@gmx.net> Thur 1 Feb 2024 21:18 +0100
L1VM (2.9.0)
Added "return" to compiler. See "prog/return.l1com".
-- Stefan Pietzonke <jay-t@gmx.net> Thur 1 Feb 2024 15:54 +0100
L1VM (2.8.8)
NEW: Added "tab" to SDL multiline string gadget. With the "tab" key you can insert spaces to "wrap" to the next input line.
See program "lib/sdl-lib-test.l1com".
-- Stefan Pietzonke <jay-t@gmx.net> Sun 28 Jan 2024 20:05 +0100
L1VM (2.8.7)
Added SDL GUI module set_gadget_menu, see: "lib/sdl-lib-test-menu.l1com"!
Added disassembler: in disasm directory.
-- Stefan Pietzonke <jay-t@gmx.net> Wed 24 Jan 2024 19:31 +0100
L1VM (2.8.6)
The preprocessor now removes empty .md documentation files.
The "l1vm-build.sh" script checks now if a "out.md" file exists and copies it if so.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 18 Jan 2024 18:55 +0100
L1VM (2.8.5)
Added vm/modules/string: MSYS2 fixing false positive BOUNDSCHECK array overflow messages.
-- Stefan Pietzonke <jay-t@gmx.net> Son 14 Dec 2023 01:38 +0100
L1VM (2.8.4)
Added net module read/write byte arrays
-- Stefan Pietzonke <jay-t@gmx.net> Son 31 Dec 2023 15:18 +0100
L1VM (2.8.3)
Added l1vmgodata links between keys added.
See l1vmgodata on GitHub.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 23 Dec 2023 18:49 +0100
L1VM (2.8.2)
l1pre preprocessor:
Added:
#docustart
#docuend
You can write documentation inside this two flags.
The preprocessor outputs this into "out.md" Markdown file.
See "prog/math-circle-bignum" for an example.
Added crypto module public/private keys generation and encryption/decryption.
BUGFIX: compiler line: main.c 1786 and following: variable to array assign code fixes.
Added crypto module key hashing and testing functions.
Added crypto module single key generation via password.
-- Stefan Pietzonke <jay-t@gmx.net> Mon 18 Dec 2023 18:33 +0100
L1VM (2.8.1)
VM: added "-fPIE" flag to RELRO zerobuild scripts.
-- Stefan Pietzonke <jay-t@gmx.net> Mon 27 Nov 2023 19:10 +0100
L1VM (2.8.0)
Now I did change the way how local and global variables are used.
I did add two new compiler flags:
(variable-local-on)
(variable-local-off)
If the flag is set to one then only the current function local variables and the main function global variables can be accessed.
You need to use this in your main function:
#var ~ main
So all variables in main are set with the "main" ending:
(set int64 1 foo~ 12)
This variable would be named "foomain".
If you want to see an example then have a look at: "prog/math-circle-bignum-2.l1com".
UPDATE: string module: all MAXLINELEN now replaced by MAXSTRLEN!
NEW: I did add a experimental install script for NetBSD. It may not work at all.
I need to test it on my NetBSD installation.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 18 Nov 2023 18:06 +0100
L1VM (2.7.3)
Update: now the network module uses a read/write buffer on the file send function.
This gives a very high speedup!
-- Stefan Pietzonke <jay-t@gmx.net> Sun 12 Nov 2023 17:40 +0100
L1VM (2.7.2)
I did set a maximum source code line length tp 512 chars.
The default settimng was 4096 and this was way to high for programs with a lot of lines.
Update: now the network module uses a read/write buffer on the file send function.
This gives a very high speedup!
-- Stefan Pietzonke <jay-t@gmx.net> Fri 10 Nov 2023 17:09 +0100
L1VM (2.7.1)
NEW: MPFR module: mp_set_float_prec function to set numbers base and precision (internal bits).
So you can calculate with real big numbers.
See prog/primes-bignum.l1com.
-- Stefan Pietzonke <jay-t@gmx.net> Mon 06 Nov 2023 19:51 +0100
L1VM (2.7.0)
I did change the way how the global data is used.
It is now possible to allocate local data in a thread.
The "data_local_alloc" interrupt allocates local memory and copies the whole global data in it.
So all data accesses in the thread are local. As long as you don't switch to global data.
See "prog/hello-thread-3-local.l1com" and "prog/webserver-thread-local.l1com".
-- Stefan Pietzonke <jay-t@gmx.net> Mon 23 Oct 2023 20:56 +0200
L1vM (2.6.7)
Update: memory module init code fixes.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 20 Oct 2023 23:00 +0200
L1VM (2.6.6)
JIT-compiler code cleanup.
VM: JIT_code cleanup fixed if VM runs without arguments set.
-- Stefan Pietzonke <jay-t@gmx.net> Wed 11 Oct 2023 16:51 +0200
L1VM (2.6.5)
Compiler update: added set const-bool and mut-bool variable definitions.
Syntax highlighters update.
VM: JIT-compiler code cleanup. JIT_code_ind removed
-- Stefan Pietzonke <jay-t@gmx.net> Tue 10 Oct 2023 22:26 +0200
L1VM (2.6.4)
Cells module update: added dealloc node links function.
-- Stefan Pietzonke <jay-t@gmx.net> Fri 06 Oct 2023 19:28 +0200
L1VM (2.6.3)
Net module socket_write_string: possible buffer overflow fix!
-- Stefan Pietzonke <jay-t@gmx.net> Sun 01 Oct 2023 20:35 +0200
L1VM (2.6.2)
New: compiler flags:
(variable-immutable) (variable-mutable) to set the default behavior on variables.
See demo prog/hello-mut.l1com!
Update: syntax highlighters to contain new "mut-byte" etc. variable definitions.
NEW: most installation scripts now install the binaries and libraries into ~/l1vm/bin
You have to set this directory in your PATH and LD_LIBRARY_PATH env variables!
-- Stefan Pietzonke <jay-t@gmx.net> Sun 01 Oct 2023 10:31 +0200
L1VM (2.6.1)
Added string module string mid to byte function.
Update: Clang toolchain git build.
Debian build scripts updated to use clang-15 for zerobuild build.
Cells module added safety checks for cell numbers.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 30 Sep 2023 11:04 +0200
L1VM (2.6.0)
2023/summer reloaded version :)
String module:
Added string_array_sort to string module.
Added string_array_search string search function.
Math vect module:
Array search added.
prog/launcher/ added. A tiny launcher program for my SDL/GUI programs.
Added OTP crypt/decrypt programs.
Fixed file-tools module.
-- Stefan Pietzonke <jay-t@gmx.net> Tue 12 Sep 2023 17:24 +0200
L1VM (2.5.1)
Version now is 2.5.1.
NEW: preprocessor now can use multiline definitions in included file too!
NEW: min/max values of an array can now be get by the new math-vect functions:
vmath_min_int, vmath_max_int, vmath_min_double, vmath_max_double
See prog/array-min-max.l1com example!
Array sort functions for int64 and double arrays added.
Array average number functions added.
Array clear function aded.
-- Stefan Pietzonke <jay-t@gmx.net> Wed 24 Aug 2023 05:49 +0200
L1VM (2.5.0)
VM: modules total cleanup, global variables for memory_bounds now copied to module on module load.
loops.l1h added, it has some loops defining macros
l1pre update: replace_macro error messages fixes.
Added inc () and dec () macros in misc-macros to increase/decrease an integer by one.
See hello-math-3.l1com.
NEW: prepro: #replace and #noreplace block markers. To switch preprocessor replace of macros on and off.
See prog/hello-math-3.l1com example.
BUGFIX: mpfr big num module: init_memory_bounds now is extern "C".
NEW: preprocessor now can use multiline definitions in included file too!
-- Stefan Pietzonke <jay-t@gmx.net> Tue 22 Aug 2023 17:02 +0200
L1VM (2.4.3)
VM: RS232 module code cleanup.
-- Stefan Pietzonke <jay-t@gmx.net> Wed 11 Jul 2023 17:38 +0200
L1VM (2.4.2)
NEW: This version has the working Haiku installer scripts.
So Haiku OS is now official supported.
-- Stefan Pietzonke <jay-t@gmx.net> Sun 9 Jul 2023 22:04 +0200
L1VM (2.4.1)
BUHFIX: The compiler now checks if a variable was already defined at "set".
So this will result in an error!
BUGFIX: now the infix/RPN parser works again! Sorry for this!
Added "install-zerobuild-openbsd.sh" experimental install script for OpenBSD.
Added VM range check now prints out variable value and min max values.
Set STACKSIZE in include/global.h to 4096 bytes. Should be enough!
NEW: VM "get_size" interrupt 33 pointer variable to get the variable size in bytes.
NEW: added "print_lni", "print_lnd" and "print_lns" macros int "intr.l1h" to print variables with a new line at the end.
NEW: l1pre now has multiline @@ line split chars.
NEW: Haiku port: RS232 module now uses Haiku RS232 port names too!
I did also build the FANN library and copied it into the Haiku libs folder.
You have to download the FANN library source code.
Then you need to configure it:
$ cmake . -DCMAKE_INSTALL_PREFIX=/boot/home/config/non-packaged
$ make install
Now you can build the L1VM FANN module.
NEW: now code and data are erased before freeing the RAM.
Debian install scripts now use clang-15 package for install and build.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 6 Jul 2023 22:03 +0200
L1VM (2.4.0)
NEW: l1pre now shows optional include path in info function.
-- Stefan Pietzonke <jay-t@gmx.net> Fri 12 May 2023 21:42 +0200
L1VM (2.3.0)
NEW: compiler: type check in infix/RPN parser (parse-rpolish.c). If types of int and double are mixed then it results in a compile error!
Also gives an error if the variable inside a math expression is an array!
NEW: checks on variable to array and array to variable: make sure variable type is not array on assign:
(array tarray [ index ] =) -> error
(tarray [ index ] array =) -> error
Preprocessor now gives error message if #include is with quotes " ", instead of < >.
So if not an Brackets source code file is compiled, you get an error message!
Added checks if source code line has brackets or not. Give a compiler error if no brackets are found in line.
So the Brackets compiler now does not crash any mor on non Brackets source code files!
BUGFIX: file/open did not set file open flag.
BUGFIXES: ciphersaber module now works!
NEW: now the l1vm-build.sh script searches for includes in the current folder too!
ADDED a unit test demo.
NEW: time module: added better string overflow checks.
-- Stefan Pietzonke <jay-t@gmx.net> Fri 12 May 2023 13:09 +0200
L1VM (2.2.0)
NEW: The Brackets compiler has now an object type for some OOP style functions.
See: prog/math-circle-oop.l1com!
NEW: include/settings.h now sets 256 chars MAXSTRLEN and 256 chars MAXLINELEN on LOW_MEM setting activated by "1"!
To save memory in the compiler.
BUGFIXES: memory module string code fixes. New function "cleanup" to free all memory allocs on "free_mem" global memory free call!
NEW: memory objects module now calls cleanup function on global memory free.
NEW: compiler: added compile time output.
BUGFIXES: file module: file open function now sets right file open/closed flag.
NEW added new text for copyright.
-- Stefan Pietzonke <jay-t@gmx.net> Sun 23 Apr 2023 16:43 +0200
L1VM (2.1.1)
prog/hello-math-stack.l1com added
Compiler: -wall flag added to set all -w warning flags!
README update.
-- Stefan Pietzonke <jay-t@gmx.net> Tue 28 Feb 2023 18:20 +0100
L1VM (2.1.0)
Security BUGFIX: JIT-compiler now checks if code at given index is compiled or not. Resulting in an runtime ERROR if no code found!
Updated README.md.
NEW: now in the infix/RPN parser you can write a short name for the target variable: _ like this:
{target = (_ + x + (_ * y))}
Every _ will be replaced by "target"!
See prog/hello-target-shortname.l1com.
NEW: VM stack interrrupt 0: 32 stack_type returns the type on the top of the stack.
See prog/stack.l1com! And include/intr.l1h.
Update: include/vars.l1h stack types added.
-- Stefan Pietzonke <jay-t@gmx.net> Tue 7 Feb 2023 20:46 +0100
L1VM (2.0.7)
Updated copyright in global.h to 2023.
NEW: now legal value ranges for variables can be set:
(x x_min x_max range)
See prog/hello-ranges.l1com
NEW: -wsetundef compiler flag now shows the variable name in the message!
NEW: data cloud now can load/save all data bases too!
See datacloud.l1h!
NEW: datacloud 3x1 worker update, now using even/odd args for worker runs.
NEW: module not load check on module function call.
NEW: math-3x1-cluster/3x1-worker.l1com example added. It outputs a l1vmgodata database with the given input range of the 3x1 problem.
NEW: now all module function call on unset functions exit the VM by an error.
So not initialized functions cause this new error!
-- Stefan Pietzonke <jay-t@gmx.net> Fri 27 Jan 2023 19:29 +0100
L1VM (2.0.6)
NEW: compiler flag: "-wsetundef" warns if a variable has no value set!
NEW: compiler flag: "-wvarunused" warns if defined but unused variables are found!
NEW: fann module: train, save and train from data file functions added.
Examples in /lib: train_fann.l1com and train_fann_file.l1com.
FANN module code cleanup. Now uses pointers for the input/output vars.
NEW: string module demo update, string-tools.l1h now uses string_left and string_right in string replace function.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 12 Jan 2023 20:33 +0100
L1VM (2.0.5)
Code cleanup.
NEW: Compiler now exits on first "code list full" error message.
BUGFIXES: vm/modules/file-tools.
BUGFIX: vm/file file_close now checks if file handle was open.
NEW: before JIT compile blocks you can now use (x load) to load a int64 or double number into a register.
So the code inside the JIT compiled block can do calcualtions without "unknown" opcodes in it!
NEW: "m=" assign to use the "move" opcode if both variables are in registers.
See "prog/hello-move.l1com" for more!
(xd id m=)
Moves variable "xd" to "id" var.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 24 Nov 2022 23:01 +0100
L1VM (2.0.4)
NEW: lib/array.l1com, include/array.l1h functions to assign variable lists to arrays.
Added lib/json-l1com and include/json.l1h with functions for parsing json strings.
BUGFIXES: string module: string mem search function now sets string search start position right!
NEW: string module now has the "string_parse_json" function!
See lib/strin.l1com.
-- Stefan Pietzonke <jay-t@gmx.net> Tue 25 Oct 2022 18:20 +0200
L1VM (2.0.3)
NEW: interrupt 0: 31: pointer_type to get the pointer variable type.
NEW: added nested code to switch statement: switch.
-- Stefan Pietzonke <jay-t@gmx.net> Fri 14 Oct 2022 11:57 +0200
L1VM (2.0.2)
BUGFIX: compiler: nested-code-off added continue statement to fix operator not known error!
-- Stefan Pietzonke <jay-t@gmx.net> Mon 3 Oct 2022 23:30 +0200
L1VM (2.0.1)
NEW: mem library now has string_to_array and array_to_string functions.
NEW: filetools directory read now has index start and end flags to read a part of the filelist.
See "lib/file-tools-dir.l1com" example!
BUGFIXES: string module: array functions index overflow check fixed!
BUGFIX: string.c searchstr now gives the right position of the substring, if searched by a startpos greater than 0!
-- Stefan Pietzonke <jay-t@gmx.net> Thu 27 Oct 2022 17:11 +0200
L1VM (2.0.0)
NEW: check_pointer interrupt. See prog/people-object.l1com for more!
NEW: memory object function: get_obj_mem_type to return the type of a memory object index.
-- Stefan Pietzonke <jay-t@gmx.net> Wed 14 Sep 2022 20:30 +0200
L1VM (1.9.0)
NEW: module file-tools added: file_copy, directory_create, remove_all, file_rename, file_size_bytes, file_exists
NEW: directory file list read added.
-- Stefan Pietzonke <jay-t@gmx.net> Sun 11 Sep 2022 13:54 +0200
L1VM (1.8.0)
NEW: now nested code flag is set to 1 on function start.
init_registers () is then called at: if, else, endif, for, next, do, while, switch ? statements.
This removes the need for "reset-reg" call in the code.
Syntax highlighters updated: "nested-code-off" added.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 1 Sep 2022 15:57 +0200
L1VM (1.7.2)
NEW: compiler now exits with error if no main function is defined.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 20 Aug 2022 12:23 +0200
L1VM (1.7.1)
NEW: VM: main.c show -p flag infos.
NEW: scripts in distribution now use "bash" as the shell, this fixes some errors!
FIXES: compiler now gives error if label is defined twice. And if function name already used.
Compiler: update: now "stpop" opcode to loadreg code part set.
Added script to build and install latest Clang from GitHub.
NEW: prog/bool.l1com include/bool.l1h : define variable true/false.
Now boolean variable assign is checked by the "bool" command:
(bool true Bool =)
Only "true" or "false" are allowed in this expression!
Here the variable "Bool" will be set to "true".
Compiler:
NEW: new "bool" variable type in "set" variable setting.
The bool variable name must begin with a uppercase "B"!
// boolean variable name must beginn with upercase B!
(set bool 1 Bool 1)
The parser checks if the boolean variable is used in a normal math expression and returns an error if so!
This also includes the RPN parser and the infix expression parser.
NEW: more mono fonts added. Moved standard free mono font into /free.
NEW: now you just can do:
(true Bool =)
to set a boolean variable!
-- Stefan Pietzonke <jay-t@gmx.net> Fri 26 Aug 2022 21:40 +0200
L1VM (1.7.0)
NEW: compiler: "stpush" and "stpop" for use with multiple variables.
See example "prog/stack-new.l1com"
NEW: VM: run process priority flag on Linux:
$ l1vm fractalix-3.2 -p 19
The ranges go from -20 high priority to 19 lowest priority.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 21 Jul 2022 19:27 +0200
L1VM - (1.6.0)
NEW: replaced all string constant sizes MAXLINELEN by MAXSTRLEN.
BUGFIX: VM: shell arguments length check added!
NEW: Doom Emacs syntax highlighter added.
VM: JIT-compiler reset to working version.
NEW: process handling flags in settings.h.
NEW "worker-hello" folder with experimental l1vmgodata data base client worker. See README there!
NEW: now download.sh script also installs .obj files!
VM/modules/endianess: aligning of function arguments removed to compile with gcc.
BUGFIXES: removed function args alignment on modules.
-- Stefan Pietzonke <jay-t@gmx.net> Sun 3 Jul 2022 20:19 +0200
L1VM - (1.5.9)
NEW: "ranges.l1h" and "prog/range-new.l1com" variable range checks macros.
NEW: now you can set a window title for the SDL windows:
(window_title_str :sdl_set_window_title call)
NEW: check if pointer variable source is constant: show error message if true.
NEW: syntax highlighters: "cast" command added.
NEW: process module now uses user "l1vm" which should "not" be in "sudoers" for making it safe!
NEW: Windows 11 WSL: updated build scripts to use "clang" and "clang++" compiler names!
-- Stefan Pietzonke <jay-t@gmx.net> Sun 05 Jun 2022 16:51 +0200