-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
ChangeLog
1865 lines (1217 loc) · 63.5 KB
/
ChangeLog
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.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
L1VM - (1.5.8)
NEW: added libsodium easy encrypt/decrypt function
NEW: "set" variable definition now with range sense check!
Added l1vmgodata library error checks for socket.
NEW: changed all build scripts to use "build.sh" script for building the Bracket programs.
Security fixes in process library. "sudo" and "su" not allowed anymore!
Test: macOS: install vm modules in to "~/bin".
BUGFIX: VM process module now has searchstr() prototype!
VM process module now needs: include/settings.h PROCESS_MODULE flag to be set for build!
As a default it is switched off:
NOTE: only set PROCESS_MODULE in 'include/settings.h' to 1 if you know:
that it can not avoided to run 'su' and 'sudo' in scripts!
This can be very dangerous!
-- Stefan Pietzonke <jay-t@gmx.net> Wed 18 May 2022 22:55 +0200
L1VM - (1.5.7)
include/global.h: MAXLINELEN set to 4096.
VM: show free module message on free_module.
Compiler: pointer function update.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 12 Apr 2022 00:57 +0200
L1VM - (1.5.6)
NEW: VM: shows if file sandbox root is set or not.
BUGFIX: VM SDL module: event_gadget_string_multiline wait event fix!!
NEW: install-wsl-debian.sh and install-wsl-debian-jit.sh: preprocessor copy to ~/bin
like vm and compiler.
NEW: SDL GUI string multiline text input string overflow BUG fix.
NEW: SDL GUI string multiline cursor up/down edit fixes.
NEW: updated example: people-struct.l1com. Now uses new load_obj_array_memobj function.
NEW: VM: file module: file_read_array and file_write_array to read/write arrays.
NEW: VM: BUGFIX: network module added string return buffer overflow check!
NEW: string function strlen_safe fix.
-- Stefan Pietzonke <jay-t@gmx.net> Mon 11 Apr 2022 20:07 +0200
L1VM - (1.5.5)
NEW: added math library degree to rad and rad to degree functions.
Added sin () math test to math library demo.
Renamed math-const.l1h constants without the @ char, because some compile trouble!
NEW: math modules: missing tandouble function added.
NEW: Brackets: pointer bugfixes on double array variables.
-- Stefan Pietzonke <jay-t@gmx.net> Fri 18 Mar 2022 16:43 +0100
L1VM - (1.5.4)
NEW: VM: string module added: "get_env" and "set_env" functions for working on ENV variables.
VM: string module: get_env function BUGFIX!
Compiler: error message if using undefined variable on "stpop" opcode.
NEW: compiler: "pointer" command for getting the real address of a variable.
See program "prog/hello-pointer.l1com"!
NEW pointer variables begin with uppercase 'P'. They can be used in the array variable assigns.
-- Stefan Pietzonke <jay-t@gmx.net> Sun 27 Feb 2022 22:00 +0100
L1VM - (1.5.3)
NEW: Compiler: BUGFIXES in parse-rpolish.c.
And new math expressions:
{i = (xd < yd) && (xd > zerod)}
Compiler: added in rpolish: shiftleft: <| and shift right: >|.
Updated the "egypt-callgraph.sh" scripts to generate *.ps files of the function call graphs.
VM: network module added mimetypes for L1VM files.
-- Stefan Pietzonke <jay-t@gmx.net> Sun 20 Feb 2022 21:44 +0100
L1VM - (1.5.2)
BUGFIX: load/pulld now frees variable in register on pulld!
Fixed comp/parse-rpolish too!
So registers can be saved!
NEW: compiler: (no-var-pull-on) and (no-var-pull-off) to speedup the {} calculation expressions.
If the flag is set to be switched on, then no "pull" opcodes are used. This gives a huge speedup!
See "prog/double-test-optimzed.l1com"!!
-- Stefan Pietzonke <jay-t@gmx.net> Sun 13 Feb 2022 15:44 +0100
L1VM - (1.5.1)
NEW: VM: math-vect module now uses memory bounds check!
NEW: assembler "." exp ression input line checks.
NEW: Moved data info define to include/settings.h and increased it!
NEW: settings.h: WINDOWS_10_WSL setting. If turned on the SDL module switches off audio, not supported by the WSL!
NEW: asmjit library now can be build with latest release.
NEW: the Brackets compiler now parses assign expressions like:
{ret = foo}
now right! No need for: {ret = foo } anymore!
Removed "-lcrypto" libary from JIT-compiler build zerobuild make file.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 10 Feb 2022 15:56 +0100
L1VM - (1.5)
NEW: STACK_CHECK flag in settings.h to switch stack check on/off!
With stack check enabled bugs on the stack data types can be found.
So you cant pop of a byte if there is a int64 on top!
NEW: macOS now has string bounds check in string module!
Now the other modules use bounds check on macOS too.
Stack check errors was coming from too old memobj library.
Now stack check is set to 1 in settings.h!
Build scripts on Linux and macOS now build missing modules.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 29 Jan 2021 22:14 +0100
L1vM - (1.4.4)
VM: mem-obj-lib: now sets EMPTY as empty variable.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 15 Jan 2022 17:31 +0100
L1VM - (1.4.3)
VM: main function now uses wait loop thread 1 on macOS only.
On macOS the main program will run in thread 0. This is needed to run the SDL module.
It can only be run from main program!
The other OS will run the VM bytecode in thread 1.
VM: mem-obj-lib: now sets EMPTY as empty variable.
-- Stefan Pietzonke <jay-t@gmx.net> Tue 11 Jan 2022 18:28 +0100
L1VM - (1.4.2)
JIT-compiler now sets a return code for run function and exits the program on error!
NEW: intr.l1h: global pthread mutexes lock/unlock: globallock/globalunlock.
It can be up to 255 mutexes set!
See example hello-thread-4.l1com.
Compiler: BUGFIX: now if espression with double numbers don't results in cast error.
Compiler: BUGFIX: updated if expression error message with double numbers.
-- Stefan Pietzonke <jay-t@gmx.net> Fri 07 Jan 2022 15:07 +0100
L1VM - (1.4.1)
NEW: compiler now gives errors if array variable assign gives loose in precision.
For example assign int64 to an int32 array!
NEW: compiler now gives an error if array variable is to small at definition.
NEW: compiler now has: "-werror" flag to handle all warnings as errors!
This is used for variable type safety checking warnings!
NEW: type cast:
(set int64 1 y 42)
(set int32 1 a 0)
(cast y a =)
Will cast from int64 to int32 without errors! As set by the programmer.
JIT-compiler now sets a return code for run function and exits the program on error!
-- Stefan Pietzonke <jay-t@gmx.net> Thu 30 Dec 2021 21:08 +0100
L1VM - (1.4)
NEW: macOS support: now with the sdl-2.0 module!
All modules build now!
sdl-2.0: prog/lines.l1com now works! I had to call a SDL event function in the delay loop!
(:sdl_get_mouse_state !)
This is needed to avoid errors on macOS.
NEW: char casting warning fixes.
-- Stefan Pietzonke <jay-t@gmx.net> Sat 25 Dec 2021 17:55 +0100
L1VM - (1.3.1)
NEW: now the l1com compiler compiles code with blank lines in it!
You will still get an error message if the brackets don't match in a not blank line!
NEW: VM main.c load_module now sets OS specific .so dynamic library extension.
In the modules includes now the name is set without ".so" ending: "libl1vmsdl".
FIXES: SDL module now stays in event poll loop if no event can be read.
BUGFIX: I found out that a "switch" can not be in the first code line of a program!
The compiler creates a wrong "loada" line! NOW FIXED!
NEW: the compiler now checks if RPN or bracket expression assigns a high precision to a lower precision var.
For example:
{ret = x y z + *} Where x is int64 and ret = int32, this will get an error!
code in comp/parse-rpolish.c
NOW variable assign looks like this:
{ret = foo }
-- Stefan Pietzonke <jay-t@gmx.net> Sat 18 Dec 2021 22:43 +0100
L1VM - (1.3.0)
NEW: compiler now checks size of string and shows an error message if the set size is too small!!
(set string 5 hellostr "Hello world!")
This will get an error message!
REMOVED SDL library linking in VM build scripts and zerobuild files.
NEW: comiler now has "jsra" opcode. See "prog/hello-jsra.l1com".
NEW: added __MACH__ in global.h to set the Linux flag automatically.
Use "DIVISIONCHECK 0" and "CPU_SET_AFFINITY 0" on macOS!
NEW: experimental GitHub actions build script added.
Math module now uses libsodium for random numbers.
NEW: added libserialport installation to build scripts
-- Stefan Pietzonke <jay-t@gmx.net> Fri 03 Dec 2021 13:03 +0100
L1VM - (1.2.0)
NEW: CODE CLEANUP all stack check code removed.
It did not work right because the modules couldn't access the local threads stack type data!
BUGFIXES: now (optimize-if) works without errors!
FIXES: did a gcc/g++ compile run and removed all "ALIGN" macros out of function arguments!!!
File module: get_string function BUIGFIX: set read error code.
Added file module: "file-def.l1h": definitions for file_fseek function.
NEW: distribution/get-koder77-key.sh script to add my gpg key to your keyring.
ADDED: now module mem-obj can store strings too. See lib/mem-obj-lib.l1com.
-- Stefan Pietzonke <jay-t@gmx.net> Wed 27 Oct 2021 09:17 +0200
L1VM - (1.1.6)
NEW: include/settings.h with all user settings.
NEW: compiler: "loadl" opcode added for loading labels into variables.
See "prog/hello-thread-2.l1com".
NEW: example "prog/hello-thread-3.l1com": it uses the new interrupt macros.
-- Stefan Pietzonke <jay-t@gmx.net> Fri 08 Oct 2021 12:14 +0200
L1VM - (1.1.5)
VM: JIT-compiler: removed init code.
NEW: include-lib/mem-obj-lib.l1h, lib/mem-obj-lib.l1com:
In this module a memory object can save both int64 and double variables into one array.
See the examples noted above!
I got "false" memory bounds errors running my "pov-edit" program.
Now I changed the string module to use memory_bounds not if the "BOUNDSCHECK" in global.h is not set.
So "BOUNDSCHECK" is now turned of as default!!
NEW: string module: "string_regex" for searching regex string patterns in a string.
VM: SDL module: get_gadget_x2y2: string multiline added.
VM_SDL module: "free_all_gadgets" function added. And code to free the multiline string gadget.
VM SDL module: "sdl_get_key" added to read raw keycodes. See "lib/sdl-lib-key.l1com" example!
VM/file module: "fput_c" stack BUGFIXES.
-- Stefan Pietzonke <jay-t@gmx.net> Thu 23 Sep 2021 17:09 +0200
L1VM - (1.1.4)
NEW: I added the fp16 fixed floating point library as a module.
See prog/math-circle-nofp.l1com. The range goes from -32767 to 32767.
It is for CPUs without floating point opcodes.
I did this for use on Kludged Linux on my Psion 5MX.
As there is no floating point numbers support there!
UPDATE: I did update the sign and download scripts for L1VM packages on my repository.
BUGFIX: endianess library n_to_hostw function now set.
NEW: messages-lib: "include-lib/messages-lib.l1h" for sending and receiving messages codes.
See example "lib/messages-lib.l1com"
NEW: SDL module:
set_gadget_string_multiline, change_gadget_string_multiline and get_gadget_string_multiline.
See lib/sdl-lib-test.l1com for an example.
This is the multiline string edit gadget.
NEW: the JIT-compiler is now added as open source.
-- Stefan Pietzonke <jay-t@gmx.net> Tue 7 Sep 2021 18:49 +0200
L1VM - (1.1.3)
BUGFIXES: VM: math module serious stack type BUGFIXES!
prog/build-all.sh: wrong suffixes BUGFIX!
Now no filenames like foobar.l1com.l1db are there!
NEW: ranges interrupts: 28/29 to check if a variable is in a defined range.
See "include/intr.l1h"
NEW: "prog/shell.l1com": a simple L1VM shell. You can run L1VM programs by
the commands: "run" or simple by "!":