Download Latest Version emal-0.0.234-anycpu-20250131.zip (428.8 kB)
Email in envelope

Get an email when there's a new version of EMal

Home
Name Modified Size InfoDownloads / Week
subprojects 2025-02-20
emal-0.0.234-anycpu-20250131.zip 2025-01-31 428.8 kB
emal-0.0.234-anycpu-20250131.exe 2025-01-31 2.1 MB
emal-0.0.234-src-20250131.zip 2025-01-31 524.7 kB
README.txt 2025-01-31 54.7 kB
emal-0.0.208-anycpu-20241212.zip 2024-12-12 341.1 kB
emal-0.0.201-src-20241114.7z 2024-11-14 245.0 kB
emal-0.0.201-anycpu-20241114.exe 2024-11-14 2.1 MB
emal-0.0.144-anycpu-20240924.exe 2024-09-24 2.3 MB
emal-0.0.112-src-20240524.7z 2024-05-24 170.8 kB
emal-0.0.112-anycpu-20240524.exe 2024-05-24 2.1 MB
emal-0.0.83-src-20230721.7z 2023-07-21 211.8 kB
emal-0.0.83-anycpu-20230721.exe 2023-07-21 2.0 MB
emal-0.0.68-anycpu-20230622.exe 2023-06-22 1.9 MB
horsefly-0.0.5-20220509.1-emal.0.0.13.zip 2022-05-09 9.2 kB
emal-0.0.8.zip 2022-03-02 682.4 kB
emal-0.0.6.zip 2021-08-10 1.6 MB
Totals: 17 Items   16.7 MB 0
EMal is a new programming language that wants to be easy to understand and read.
I would like to introduce my kids to programming with this language, and I want to use it for my job in order to
prototype algorithms and test REST services.

The language is expressive and has a gradual type system.
It supports double grammar with english and italian keywords.

Execution speed is slow and is not a goal for EMal.
It's written in c#, because I use it for my daily work, and writing a new language stresses my skills. 

The development is ongoing, but it's still in alpha status.
You can access working examples at https://rosettacode.org/wiki/Category:EMal

It can happen that I release binary versions more often than the sources.

Below I link the project changelog and the project status for every class involved.

(*
 * @(#) changelog.eg                                  0.0.6    31/01/2025
 *
 * Copyright 2020-2025 Alberto Innocenti <lanky at tiscali dot it>
 *
 * Licensed under the General Shared Source License, Version 1.1 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.lanky.eu/licenses/LICENSE-1.1
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *
 * Consequently, Your use, modification and distribution of this source code is
 * entirely at Your own risk and neither the Licensor, its licensors nor any
 * other person who has contributed to this Source code shall be liable to You
 * for any loss or damage which You may suffer as a result of Your use,
 * modification or distribution of this Source code.
 *
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *)

(*
 *   EMal changelog
 * 
 * @version 0.0.6
 * @status  alpha
 * @author  Alberto Innocenti
 * @changelog
 *   2025-01-31(0.0.6) updates from 0.0.201 to 0.0.234
 *   2024-11-14(0.0.5) updates from 0.0.144 to 0.0.201
 *   2024-09-24(0.0.4) updates from 0.0.112 to 0.0.144
 *   2024-05-24(0.0.3) updates from 0.0.83 to 0.0.112
 *   2023-07-23(0.0.2) improved the layout
 *   2023-07-21(0.0.1) first documented version
 * @notes
 *   t values:
 *   'B' binary
 *   'S' source
 *   'X' binary+source
 *   ' ' internal
 *)

[_Changelog]
!release             _|t|comment                                                         |
!--------------------_|-|----------------------------------------------------------------|
!2025-01-31(0.0.234) _|X|writing the manual and rechecking and stabilizing the code      |
!                    _| |fixed a regression in Set                                       |
!                    _| |even the map has been documented                                |
!                    _| |some review in Set. Of was buggy, Keys is unneeded.             |
!                    _| |another fix in Record... (this is still buggy)...               |
!                    _| |still reviewing the Record, used BlessedMultiKeyValuePair       |
!                    _| |Record has data inheritance again.                              |
!                    _| |no more list.insertFirst/list.insertLast                        |
!                    _| |now we have list.insertStart/list.insertEnd                     |
!                    _| |Pair has been checked and documented, go on with Lists now      |
!                    _| |error messages have been improved. The tokenizer improved.      |
!                    _| |tokenizer gone to 0.2.0 no more if, we have switches now.       |
!                    _| |reviewd the terminal screen API.                                |
!                    _| |It looks there is still a bug in the "paint" primitive.         |
!                    _| |we support unary slash operator                                 |
!                    _| |improved Pair, some minor changes in EMal library               |
!                    _| |lexemes splitted in inner static classes                        |
!                    _| |removed sqr and cbr because we have specific operators now.     |
!                    _| |No more Event.Unique.                                           |
!                    _| |removed kind and address from Event, they are not useful.       |
!                    _| |bugfix in devices function                                      |
!                    _| |Added Runtime.FATAL_ERROR and Runtime.COMMAND_ERROR             |
!                    _| |bugfix in Preprocessor.ArrayShrink, no more Linq dependency     |
!                    _| |created new lexemes and used in Devices.                        |
!                    _| |recap changes from 20141217 till 20250117                       |
!                    _| |- dot net v4.8.1                                                |
!                    _| |- tested an alternative MultiKeyDictionary using tuples         |
!                    _| |- fixed a nasty bug in Messaging.Event.Pack and added tests     |
!                    _| |- NodeQueue added checks when accessing a null front we explode |
!                    _| |- Maps are no more stretachabe, removed tests                   |
!                    _| |- added copyright 2025                                          |
!                    _| |- added the MissingNode error and its translation               |
!                    _| |- italian greeting is Ciao and not Caro                         |
!                    _| |- Emal.devices uses the API name-alias                          |
!                    _| |- Scope.TryReadInstanceField adds a proper try-catch block      |
!                    _| |- hex digits can be lowercase or uppercase                      |
!                    _| |- added the LineNumber concept                                  |
!                    _| |- improved italian lexemes                                      |
!                    _| |- pervasive use of ← in compound assignments                    |
!                    _| |- preprocessor changed for line numbers, and some code refactor |
!                    _| |- we can access Set items by the indexers, delete returns that  |
!                    _| |  actually something got deleted or not,                        |
!                    _| |  bugfix in set for storing texts and blobs.                    |
!                    _| |- added DynamicRecord and MultiKeyValuePair new classes         |
!                    _| |- MultiKeyDictionary bugfix when setting to not existent key    |
!                    _| |  improved Remove, now implements IEnumerator, that's good.     |
!                    _| |- bugfix to support the whole int64 range from min to max       |
!                    _| |- bugfix in real, when converting and comparing to int.         |
!                    _| |- text can parse negative numbers,bugfix of -9223372036854775808|
!                    _| |- logical shallow copy NOT reusese True/False constants         |
!                    _| |- Record is being recoded tu sopport name-alias pairs           |
!                    _| |- Command support the EMALLANG environment variable, includes   |
!                    _| |- add lexemes for ports (english/italian)                       |
!                    _| |- record and avoid creating new properties by accessing them    |
!                    _| |we use dot net 4.8.1 still reviewing MultiKeyDictionary.        |
!                    _| |Now we have MultiKeyValuePair, still to be reviewed. Btw Records|
!                    _| |now can have aliases.                                           |
!                    _| |MultiKeyDictionary Rewritten                                    |
!                    _| |Added DynamicRecord class                                       |
!                    _| |we enforce to write line numbers es. 1. at the beginning        |
!                    _| |of the line.                                                    |
!                    _| |updated the source to include the 2025 copyright.               |
!                    _| |Improved the quick parser in the preprocessor to better         |
!                    _| |manage line numbers reusing the code as much as possible.       |
!                    _| |Bugfix release in remedy (Event.Pack)                           |
!                    _| |few changes in italian lexemes for Runtime errors               |
!                    _| |bugfix release for using line numbers even with                 |
!                    _| |in, load, type, @author                                         |
!                    _| |now we can use line numbers directly in the code:               |
!                    _| |1. writeLine("ciao")                                            |
!                    _| |2. if true                                                      |
!                    _| |3.   writeLine("hello")                                         |
!                    _| |4. end                                                          |
!                    _| |in for each the iterable is hidden now                          |
!                    _| |minor changes in the lexemes about enumeration                  |
!                    _| |bugfixes in the type system.                                    |
!                    _| |ShallowCopy for logical didn't create a new object, was wrong   |
!                    _| |Conversion from text to text did a DeepCopy diverging from the  |
!                    _| |common behaviour                                                |
!                    _| |getting the text from functions was broken, fixed.              |
!                    _| |explicit conversion from real to int now truncates.             |
!                    _| |Dear translated from Caro to Ciao in italian                    |
!                    _| |now we can finally parse -9223372036854775808                   |
!                    _| |we accept "A".."F" in 0Uxxx or 0uxxx literals                   |
!                    _| |when using -l, show if we use the primary language as default   |
!                    _| |minor improvements in the help, bugfix in SystemIncludeUnix.    |
!                    _| |added the -l switch to show the included library paths.         |
!                    _| |Reshaped the code in Emal.cs and Command.cs to refactor the     |
!                    _| |inclusion code.                                                 |
!                    _| |← consistently used for all the assignments                     |
!                    _| |changes is Map and Set, Map has no more stretchable             |
!                    _| |this affects even the enums;                                    |
!                    _| |bugfix in Set to use tryToMakeReadonly keys                     |
!                    _| |we can use the EMALLANG environment variable                    |
!                    _| |Reviewed italian lexemes.                                       |
!2024-11-22(0.0.208) _|B|we use only one code for ellipse even for circles.              |
!                    _| |printAt supports variable type id                               |
!                    _| |ellipse can be inscribed inside rectangles, the code use floats |
!                    _| |and she shape is different from circle, btw it's an improvement.|
!                    _| |color and background always return the previous color           |
!                    _| |added constants for Sysexits.h into Runtime                     |
!                    _| |fixed the circle and filled circle to respect the diameter      |
!                    _| |detected a problem in circle and filled circle, still inspecting|
!                    _| |the diameter different radius * 2, how can I solve it           |
!                    _| |updated the Shannon-Fano standard library to use Pair           |
!2024-11-14(0.0.201) _|X|Nullables added to the Standard library,                        |
!                    _| |libEmalStandard renamed to libEmalBuiltins,                     |
!                    _| |changes in EventObject for the KeyCancel property.              |
!                    _| |This marks a milestone, for a while only bugfixes will happen   |
!                    _| |I should improve the standard library when possible.            |
!                    _| |We must retest caefully everything.                             |
!2024-11-13(0.0.200) _| |lexeme Registro renamed to Struttura                            |
!2024-11-12(0.0.199) _| |RISKY removed HeapValue in the TypeSystem                       |
!2024-11-12(0.0.198) _| |bugfix in EventoObject                                          |
!2024-11-12(0.0.197) _| |RISKY the code has been cleaned up after libMessage revision    |
!                    _| |we must carefully re-test the unit test and the various sample  |
!                    _| |programs. The Event has few properties now, maybe it can be     |
!                    _| |further improved,in particular the packing/unpacking of the id. |
!2024-11-11(0.0.196) _| |reviewed the whole events mechanism.  RISKY                     |
!2024-11-09(0.0.195) _| |reviewed the classes affected by the Port removal               |
!2024-11-09(0.0.194) _| |RISKY remove the whole Port Object                              |
!2024-11-09(0.0.193) _| |going on reviewing events and messaging                         |
!2024-11-08(0.0.192) _| |no more ScreenAddress                                           |
!2024-11-07(0.0.191) _| |wip, no more TimerAddress, added PauseTimer, RestartTimer       |
!2024-11-07(0.0.190) _| |wip, KeyboatdPoer has no more KeyboardAddress,                  |
!                    _| |removed the dispatcher in the port. still work in progress.     |
!2024-11-06(0.0.189) _| |wip, LogPort has no more LogAddress, removed dispatcher in port |
!                    _| |still to review all other ports and carefully retest the code.  |
!2024-11-06(0.0.188) _| |added Write(blob) some works in the method Emal.write()         |
!2024-11-05(0.0.187) _| |now we have the control \v for vertical tab,                    |
!                    _| |removed unused comments                                         |
!                    _| |about Pascal style loops.No way to make it work better than now |
!2024-11-05(0.0.186) _| |removed the Pascal style loops, no more To keyword.             |
!                    _| |Improved the parser code.                                       |
!2024-11-05(0.0.185) _| |first version that supports Pascal style loops                  |
!2024-10-31(0.0.184) _| |checked port addresses in order to minimize their usage         |
!2024-10-31(0.0.183) _| |still a bugdix in Paint                                         |
!2024-10-31(0.0.182) _| |fixed a bug in Paint                                            |
!2024-10-31(0.0.181) _| |added Event.isCancelLock()                                      |
!2024-10-31(0.0.180) _| |now ctrl+c works.                                               |
!2024-10-30(0.0.179) _| |added Event.loop()                                              |
!2024-10-30(0.0.178) _| |clear(RESET) resets all the screen parameters                   |
!2024-10-30(0.0.177) _| |review till pixel                                               |
!2024-10-30(0.0.176) _| |reviewing the code for text mode console.                       |
!                    _| |BREAKING CHANGE  a lot of new api for better interaction        |
!                    _| |the unit test must be retested carefully.                       |
!2024-10-29(0.0.175) _| |bugfix in the color method                                      |
!2024-10-28(0.0.174) _| |added first stub of Symlink in the storage kit                  |
!2024-10-27(0.0.173) _| |BREAKING CHANGE  removed hint keyword                           |
!2024-10-26(0.0.172) _| |removed zstrings from the tokenizer. BREAKING CHANGE            | 
!                    _| |Software that used them will no longer work                     |
!2024-10-26(0.0.171) _| |recoded Pair with only two variables pairKey and pairValue.     |
!                    _| |unit test works again, we'll stay with this version.            |
!2024-10-25(0.0.170) _| |tested a change in Pair for using array of 2, rolled back.      |
!2024-10-25(0.0.169) _| |Statable extends Emal allows File                               |
!2024-10-25(0.0.168) _| |Wrapper renamed to Extender and ExtensionMethod                 |
!2024-10-24(0.0.167) _| |reviewed Compression:ShannonFano,                               |
!                    _| |tried to get rid of WrapperMethod but the code was worse.       |
!                    _| |Rolled back.                                                    |
!2024-10-23(0.0.165) _| |the external libray is more clean,                              |
!                    _| |first storage kit implemenation, no more Io:File.               |
!                    _| |API CHANGE  no more NativeObject.                               |
!2024-10-21(0.0.164) _| |minor review in the core, the work is going to the              |
!                    _| |external library File, we wanna remove the NativeObject.        |
!2024-10-17(0.0.163) _| |Map, Emal, Set, Port, List, Pair avoid the 4 parmeters Assing.  |
!                    _| |That method was confusing and has been removed                  |
!2024-10-17(0.0.162) _| |added validation in list.first and list.last,                   |
!                    _| |used lambda in Pair and List, still few tests missing in List,  |
!                    _| |but already gone beta.                                          |
!                    _| |Written more RosettaCode samples, reached 115 tasks.            |
!                    _| |RestClient doesn't use Native anymore,                          |
!                    _| |I want to always use the Library.                               |
!                    _| |Recoding the File API, now we have Entry taken                  |
!                    _| |directly from the BeBook.                                       |
!                    _| |The Goal is to remove the old File and go with the new one.     |
!                    _| |File must be working, on Unix Stat works, it's great.           |
!2024-10-13(0.0.161) _| |added more tests for lists,                                     |
!                    _| |ListExtension is beta now,                                      |
!                    _| |minor fixes for TextObject and BlobObject                       |
!                    _| |in case the engine is called multiple times.                    |
!2024-10-11(0.0.160) _| |list gone beta                                                  |
!2024-10-09(0.0.159) _| |list unit test till sortable                                    |
!2024-10-09(0.0.158) _| |tried to include xor, but was a bad road, rolled back           |
!                    _| |tried to use reals, but was a bad road, rolled back             |
!                    _| |added an icon for emaltest                                      |
!2024-10-08(0.0.157) _| |completed the unit test for list.container                      |
!                    _| |list.insert and list.append are variadic now.                   |
!2024-10-07(0.0.156) _| |going on adding tests for ListObject                            |
!2024-10-04(0.0.155) _| |improving unit test fot ListObject                              |
!2024-10-04(0.0.154) _| |added filter method to Set,Map,Text,Blob,                       |
!                    _| |improved DynamicString and DynamicByteArray.                    |
!2024-10-03(0.0.153) _| |documented GenericObject, changed Variable()                    |
!                    _| |BEHAVIOUR CHANGE                                                |
!                    _| |now we have                                                     |
!                    _| |var("symbolName")                                               |
!                    _| |var("typeName", "symbolName")                                   |
!2024-10-02(0.0.152) _| |GenericObject has been reviewed, it's quite RISKY.              |
!                    _| |Removed the feature var("me.something") because not needed      |
!                    _| |we can access the property with me of "something"               |
!2024-10-02(0.0.151) _| |still improving the unit test for collections                   |
!2024-10-01(0.0.150) _| |reviewing Record and collections                                |
!2024-09-30(0.0.149) _| |RISKY changed GenericObject, for ReferenceConversion.           |
!                    _| |This change went under till the type system.                    |
!2024-09-28(0.0.148) _| |RISKY AsReference deafults to explode on null values,           |
!                    _| |still coding the Record class                                   |
!2024-09-24(0.0.147) _| |BREAKING CHANGE  now locate(x,y) before locate(y,x)             |
!2024-09-24(0.0.146) _| |removed PSOD, bugfix in Emal.ask with only one argument         |
!2024-09-24(0.0.145) _| |bugfix in fold where the accumulator can have a different type  |
!                    _| |from the list                                                   |
!2024-09-24(0.0.144) _|B|ready for a new binary-only release                             |
!                    _| |API CHANGE removed average()                                    |
!                    _| |not a math function, it won't be used in that way.              |
!                    _| |It's a grouping function and should be called avg.              |
!                    _| |But we are happy without it.                                    |
!                    _| |◇ synonym for <>                                                |
!                    _| |API CHANGE finally added List.fold                              |
!                    _| |fixed comparison between integers and reals.                    |
!                    _| |removed a PSOD, comparing (<, <=, >, >=, <>) sent an            |
!                    _| |unreported exception when data types are different.             |
!                    _| |Now at least we have managed the exception.                     |
!                    _| |This can still be a problem.                                    |
!                    _| |API CHANGE added average()                                      |
!                    _| |API CHANGE added writeParts.                                    |
!                    _| |now writeParts, write, writeLine accept multiple values.        |
!                    _| |The EmalObject basic IO has been reviewed.                      |
!                    _| |managed alias ⇒ for =>                                          |
!                    _| |evaluating if this symbol ⇒ could be used as an alias for =>    |
!                    _| |fixed a PSOD because of a NPE with exit()                       |
!                    _| |no more Record.typed, we use instantiation for this.            |
!                    _| |Record can be instantiated:                                     |
!                    _| |Record auth = ...                                               |
!                    _| |var pippo = auth(1, "pippo", "secret0")                         |
!                    _| |managed a PSOD while reading NativeCode                         |
!                    _| |symbolic references are not oly for functions,                  |
!                    _| |BREAKING CHANGE                                                 |
!                    _| |now var("name") returns the symbolic reference                  |
!                    _| |of the variable named "name"                                    |
!                    _| |improved named functions for accepting me. and Klass.           |
!                    _| |added the new feature to have named functions                   |
!                    _| |added hex method hex(65, 4) = "0x0041"                          |
!                    _| |added the method changeTimer, improved few errors               |
!                    _| |fun num = int by block do return 12 end                         |
!                    _| |int a = num()++                                                 |
!                    _| |This code must throw an error, but was too much generic.        |
!                    _| |Set is again in the standard collection library                 |
!                    _| |swap is a collection method implemented in                      |
!                    _| |Blob, Text, List, Map; before it was only present in List.      |
!                    _| |Reviewing the Timer interface                                   |
!                    _| |libMessaging review still in progress.                          |
!                    _| |going on improving Posix,                                       |
!                    _| |changes in the TypeSystem in order to get IntegerValues as uint |
!                    _| |check the libMessaging project, added unit tests and first      |
!                    _| |classes marked as beta.                                         |
!                    _| |first stub of Posix                                             |
!                    _| |Locate() returns a pair named y,x the current cursor position   |
!                    _| |BREAKING CHANGE locate(x,y) now is locate(y,x)                  |
!                    _| |code review againts the 2024-05-20 version,                     |
!                    _| |bugfix logarithm operator was wrong                             |
!                    _| |BREAKING CHANGE                                                 |
!                    _| |watch(3 ** 2) # "what is 3 squared?":   32 = 9                  |
!                    _| |watch(2 // 9) # "what is the square root of 9?":   √9 = 3       |
!                    _| |watch(3 %% 9) # "what is log base 3 of 9?":   log3(9) = 2       |
!                    _| |watch(3²)                                                       |
!                    _| |watch(3³)                                                       |
!                    _| |watch(√9)                                                       |
!                    _| |watch(∛27)                                                      |
!                    _| |IScreenPort and ITimerPort have been used.                      |
!                    _| |first code with IScreenPort, still work in progress...          |
!                    _| |the timer has been backported from ConsoleHardware              |
!                    _| |added hasKeys, flushKeys                                        |
!2024-05-24(0.0.112) _|X|ready for a new alpha release                                   |
!                    _| |bugfix in multiline comments not properly resetting the state   |
!                    _| |after double arrow we can insert a new line                     |
!                    _| |API breaking changes for methods that use keyboard and log      |
!                    _| |no more read that now is press                                  |
!                    _| |no more keyboard that now is startKeyDown                       |
!                    _| |added copyright 2024, no code changes.                          |
!                    _| |Emal.color now has an overload with 0 parameters, to restore    |
!                    _| |the background and foreground colors. It uses proper checks now |
!                    _| |ExitException moved under reporting with name SystemExit        |
!                    _| |Emal class changed the way is constructed. It will allow to     |
!                    _| |dinamically set visitors different from Evaluator               |
!                    _| |we can interact with environment variables                      |
!                    _| |renamed Text.empty to Text.EMPTY, removed PSOD in Map           |
!                    _| |added the following single glyph ← ≠ æ ≥ ≤                      |
!                    _| |Pair and List should have trapped all the exceptions            |
!                    _| |removed a lot of PSOD in the List class                         |
!                    _| |bugfix in the tokenzier, while handling new lines               |
!                    _| |removed many possible PSOD in TextObject                        |
!                    _| |all libEmalDataStructer is stable,                              |
!                    _| |make the NameAliasPair enum readonly                            |
!                    _| |All the collection supports the list(delegate) overload         |
!                    _| |bugfix release in multikeydictionary renamekey there was a bug  |
!                    _| |bugfix release, parser had a bug with lambda some keyword       |
!                    _| |bugfix release multiline and zformat were not unset             |
!                    _| |big change strings are now multiline                            |
!                    _| |we have also added a zformat mode introduced by \z              |
!                    _| |changed the tokenizer to support perl escape sequences          |
!                    _| |we have an overloaded list now, no more every or forEach        |
!                    _| |added the title method                                          |
!                    _| |changed to general shared source license 1.2, few bugixes       |
!                    _| |UnitTest was in error, now is fixed                             |
!                    _| |logo updated to 0.0.8, tried to replace decimal with doubles    |
!2023-07-21(0.0.83)  _|X|no code changes, improved the logo                              |
!2023-07-14(0.0.82)  _| |added list.zip, Generic.check                                   |
!2023-07-13(0.0.81)  _| |added list.filer(predicate)                                     |
!2023-07-13(0.0.80)  _| |enumerations asText and list, added Generic.name                |
!2023-07-13(0.0.79)  _| |list expansion is one shot, after passing the list is toggled   |
!                    _| |back to unexpanded.                                             |
!2023-07-13(0.0.78)  _| |no more Extend in Reference, some code refactor                 |
!2023-07-12(0.0.77)  _| |big change  RISKY  added HasProperty, so that we can            |
!                    _| |be more introspective, this can be already seen by              |
!                    _| |Generic.has/Generic.property for querying static properties     |
!                    _| |Value.Function now accepts only:                                |
!                    _| |StaticMethod, InstanceMethod, WrapperMethod as it should,       |
!                    _| |Reference has removed some stuff that has been propery moved in |
!                    _| |the Wrapper class                                               |
!2023-07-10(0.0.76)  _| |now we have Generic.property, we still need Generic.has         |
!2023-07-07(0.0.75)  _| |removed a PSOD in map.insert, now we have typed Record          |
!                    _| |this is a new feature                                           |
!2023-07-04(0.0.74)  _| |no more dll load, we always need an emal file, it's clean.      |
!                    _| |removed another PSOD in the evauator,while loading external dll |
!2023-07-03(0.0.73)  _| |a change in the unix include fallback dir that now points to    |
!                    _| |/opt/emal/lib/emal, fixed a Purple Screen Of Death (PSOD)       |
!2023-06-28(0.0.72)  _| |reviewed the include hiearchy to be cross-platform              |
!2023-06-25(0.0.71)  _| |MakeText/MakeBlob have been recoded, internal changes in        |
!                    _| |the libEmalBuiltins                                             |
!2023-06-23(0.0.70)  _| |the with method has been added to the containers                |
!                    _| |(texts, blobs, lists, maps)                                     |
!                    _| |one less purple screen of death, minor change to the EMal guy   |
!2023-06-23(0.0.69)  _| |added "with" method on maps, added error(int, text),            |
!                    _| |fixed a bug in the tokenizer                                    |

[end]
(*§*)
(*
 * @(#) status.eg                                     0.0.31   30/01/2025
 *
 * Copyright 2020,2021,2022,2023,2024 Alberto Innocenti <lanky at tiscali dot it>
 *
 * Licensed under the General Shared Source License, Version 1.2 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.lanky.eu/licenses/LICENSE-1.2
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *
 * Consequently, Your use, modification and distribution of this source code is
 * entirely at Your own risk and neither the Licensor, its licensors nor any
 * other person who has contributed to this Source code shall be liable to You
 * for any loss or damage which You may suffer as a result of Your use,
 * modification or distribution of this Source code.
 *
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *)

(*
 *   EMal project status
 * 
 * @version 0.0.31
 * @status  alpha
 * @author  Alberto Innocenti
 * @changelog
 *   2025-01-30(0.0.31) added BlessedMultiKeyValuePair
 *   2025-01-17(0.0.30) added new data structures
 *   2024-11-14(0.0.29) renamed libEmalStandard to libEmalBuiltins,
 *                      added Fun:Emal:Type:Nullables to the standard library
 *   2024-11-12(0.0.28) managed changes in libMessage
 *   2024-11-08(0.0.27) no more screen address
 *   2024-11-07(0.0.26) removed TimerAddress
 *   2024-11-07(0.0.25) removed LogAddress KeyboardAddress, added Symlink, was missing
 *   2024-10-23(0.0.24) no more NativeObject class finally
 *   2024-10-13(0.0.23) ListExtension has been tested and it's beta now
 *   2024-10-11(0.0.22) List gone beta
 *   2024-07-29(0.0.21) Set added again to the project.
 *   2024-07-28(0.0.20) working on libEmalMessaging, added the external libraries
 *   2024-06-10(0.0.19) added Rooting
 *   2024-05-28(0.0.18) added IScreenPort
 *   2024-05-27(0.0.17) added ITimerPort
 *   2024-05-22(0.0.16) starting backport from ConsoleHardware, refined Log and Keyboard
 *                      drivers, used the shortcut for consuming less resources.
 *   2023-11-13(0.0.15) ExitException + SysExit = SystemExit
 *   2023-10-14(0.0.14) working in the Standard library to make it safer
 *   2023-10-09(0.0.13) libEmalDataStructure is stable
 *   2023-09-05(0.0.12) changed to license 1.2, added Tap.cs
 *   2023-07-13(0.0.11) added Wrapper and WrapperMethod
 *   2023-07-04(0.0.10) removed NullPort, added TypeSignature, resync with sources
 *   2023-06-26(0.0.9) adapted to changes in libEmalBuiltins
 *   2023-06-22(0.0.8) removed Set, now lives in the external library
 *   2023-05-16(0.0.7) no more libEmalCore in order to better test the modules
 *   2023-05-03(0.0.6) no more emscii
 *   2023-03-27(0.0.5) re-checkd after libEmalSymbols split
 *   2023-03-08(0.0.4) updated to reflect the actual status
 *   2023-02-04(0.0.3) house-keeping for base, typesystem, status they must be the Emal fortress
 *   2022-12-22(0.0.2) changed BoxValut to VariableValue
 *   2022-12-09(0.0.1) first documented version
 * @notes
 *   emal linkyzer.emal ..\..\..\documents\status.eg > ..\..\..\documents\status.html
 *)

[_libEmalDataStructure] 
(* *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!DataStructure/NameAliasPair.cs                  _|====|====|==..|
!DataStructure/AppendDictionary.cs               _|====|====|=...|
!DataStructure/MultiKeyValuePair.cs              _|====|====|=...|
!DataStructure/BlessedMultiKeyValuePair.cs       _|====|====|==..|
!DataStructure/MultiKeyDictionary.cs             _|====|====|==..|
!DataStructure/DynamicString.cs                  _|====|====|===.|
!DataStructure/DynamicByteArray.cs               _|====|====|===.|
!DataStructure/DynamicRecord.cs                  _|=...|....|....|

[_libEmalReporting] 
(* libEmalDataStructure *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Reporting/Component.cs                          _|====|====|=...|
!Reporting/IWatchable.cs                         _|====|====|=...|
!Reporting/Severity.cs                           _|====|====|=...|
!Reporting/SystemExit.cs                         _|====|====|=...|
!Reporting/WatchPoint.cs                         _|====|====|=...|
!Reporting/Kind.cs                               _|====|=...|....|
!Reporting/Problem.cs                            _|====|====|=...|
!Reporting/PreprocessorProblem.cs                _|====|====|=...|
!Reporting/LexingProblem.cs                      _|====|====|=...|
!Reporting/ParsingProblem.cs                     _|====|====|=...|
!Reporting/ExecutionProblem.cs                   _|====|=...|....|
!Reporting/TypeSystemProblem.cs                  _|====|=...|....|
!Reporting/BindingProblem.cs                     _|====|=...|....|

[_libEmalLexing] 
(* libEmalDataStructure, libEmalReporting *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexing/Lexeme.cs                                _|====|====|....|
!Lexing/Translate.cs                             _|====|==..|....|

[_libEmalTypeSystem] 
(* libEmalDataStructure, libEmalReporting, libEmalLexing *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!TypeSystem/Reference.cs                         _|====|=...|....|
!TypeSystem/Extender.cs                          _|====|=...|....|
!TypeSystem/Value.cs                             _|====|=...|....|
!TypeSystem/HeapValue.cs                         _|====|=...|....|
!TypeSystem/GenericValue.cs                      _|====|=...|....|
!TypeSystem/VoidValue.cs                         _|====|=...|....|
!TypeSystem/LogicalValue.cs                      _|====|=...|....|
!TypeSystem/IntegerValue.cs                      _|====|....|....|
!TypeSystem/RealValue.cs                         _|====|....|....|
!TypeSystem/TextValue.cs                         _|===.|....|....|
!TypeSystem/BlobValue.cs                         _|===.|....|....|
!TypeSystem/VariableValue.cs                     _|====|==..|....|
!TypeSystem/FunctionValue.cs                     _|====|=...|....|
!TypeSystem/ReferenceValue.cs                    _|===.|....|....|

[_libEmalSymbols] 
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Symbols/Frame.cs                                _|====|====|....|
!Symbols/Scope.cs                                _|====|===.|....|

[_libEmalStatus]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Status/Host.cs                                  _|====|====|=...|
!Status/TypeSignature.cs                         _|===.|....|....|
!Status/TypeInfo.cs                              _|====|=...|....|
!Status/TypeCatalog.cs                           _|====|....|....|
!Status/Module.cs                                _|====|==..|....|
!Status/LoadChain.cs                             _|====|====|....|
!Status/Registry.cs                              _|====|=...|....|
!Ast/Addition.cs                                 _|====|===.|....|
!Ast/Assignment.cs                               _|====|===.|....|
!Ast/BinaryOperator.cs                           _|====|===.|....|
!Ast/BitwiseAnd.cs                               _|====|===.|....|
!Ast/BitwiseNot.cs                               _|====|===.|....|
!Ast/BitwiseOr.cs                                _|====|===.|....|
!Ast/BitwiseXor.cs                               _|====|===.|....|
!Ast/Block.cs                                    _|====|===.|....|
!Ast/Compare.cs                                  _|====|===.|....|
!Ast/Conditional.cs                              _|====|=...|....|
!Ast/Container.cs                                _|====|===.|....|
!Ast/DataType.cs                                 _|====|===.|....|
!Ast/Declaration.cs                              _|====|===.|....|
!Ast/Division.cs                                 _|====|===.|....|
!Ast/EndOfCode.cs                                _|====|===.|....|
!Ast/Ephemeral.cs                                _|====|===.|....|
!Ast/Equality.cs                                 _|====|===.|....|
!Ast/Exit.cs                                     _|====|===.|....|
!Ast/Exponentation.cs                            _|====|===.|....|
!Ast/Expression.cs                               _|====|===.|....|
!Ast/Function.cs                                 _|====|===.|....|
!Ast/Greater.cs                                  _|====|===.|....|
!Ast/GreaterEqual.cs                             _|====|===.|....|
!Ast/IContextProvider.cs                         _|====|=...|....|
!Ast/Identifier.cs                               _|====|===.|....|
!Ast/Indexer.cs                                  _|====|==..|....|
!Ast/Inequality.cs                               _|====|===.|....|
!Ast/InstanceProperty.cs                         _|====|==..|....|
!Ast/Instantiation.cs                            _|====|===.|....|
!Ast/Invocation.cs                               _|====|====|....|
!Ast/Iteration.cs                                _|====|===.|....|
!Ast/IVisitor.cs                                 _|====|==..|....|
!Ast/Jump.cs                                     _|====|===.|....|
!Ast/Klass.cs                                    _|====|===.|....|
!Ast/KlassProperty.cs                            _|====|===.|....|
!Ast/Konvert.cs                                  _|====|===.|....|
!Ast/LeftShift.cs                                _|====|===.|....|
!Ast/Less.cs                                     _|====|===.|....|
!Ast/LessEqual.cs                                _|====|===.|....|
!Ast/Literal.cs                                  _|====|===.|....|
!Ast/Logarithmization.cs                         _|==..|....|....|
!Ast/Multiplication.cs                           _|====|===.|....|
!Ast/NativeCode.cs                               _|====|===.|....|
!Ast/Node.cs                                     _|====|===.|....|
!Ast/Operator.cs                                 _|====|===.|....|
!Ast/PostDecrement.cs                            _|====|===.|....|
!Ast/PostIncrement.cs                            _|====|===.|....|
!Ast/PreDecrement.cs                             _|====|===.|....|
!Ast/PreIncrement.cs                             _|====|===.|....|
!Ast/Remainder.cs                                _|====|===.|....|
!Ast/Return.cs                                   _|====|===.|....|
!Ast/RightShift.cs                               _|====|===.|....|
!Ast/Rooting.cs                                  _|==..|....|....|
!Ast/Selection.cs                                _|====|====|....|
!Ast/Statement.cs                                _|====|===.|....|
!Ast/Subtraction.cs                              _|====|===.|....|
!Ast/TraversableType.cs                          _|====|===.|....|
!Ast/TryRemedy.cs                                _|====|===.|....|
!Ast/UnaryMinus.cs                               _|====|===.|....|
!Ast/UnaryOperator.cs                            _|====|===.|....|
!Ast/UnaryPlus.cs                                _|====|===.|....|

[_libEmalFrontend]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Frontend/BlockComment.cs                        _|====|==..|....|
!Frontend/NodeQueue.cs                           _|====|==..|....|
!Frontend/Preprocessor.cs                        _|====|=...|....|
!Frontend/Tokenizer.cs                           _|====|=...|....|
!Frontend/Parser.cs                              _|====|....|....|

[_libEmalMessaging]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Messaging/PortCategory.cs                       _|====|=...|....|
!Messaging/Callback.cs                           _|==..|....|....|
!Messaging/Event.cs                              _|====|=...|....|
!Messaging/LogEvent.cs                           _|==..|....|....|
!Messaging/KeyboardEvent.cs                      _|==..|....|....|
!Messaging/TimerEvent.cs                         _|==..|....|....|
!Messaging/IPort.cs                              _|====|=...|....|
!Messaging/ILogPort.cs                           _|====|=...|....|
!Messaging/IKeyboardPort.cs                      _|====|=...|....|
!Messaging/ITimerPort.cs                         _|====|=...|....|
!Messaging/IScreenPort.cs                        _|====|=...|....|
!Messaging/Port.cs                               _|====|=...|....|
!Messaging/Bus.cs                                _|====|....|....|
!Messaging/Logger.cs                             _|==..|....|....|

[_libEmalBuiltins]
(* libEmalDataStrucute, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Builtins/EventObject.cs                         _|==..|....|....|
!Builtins/RuntimeObject.cs                       _|====|=...|....|
!Builtins/EmalObject.cs                          _|==..|....|....|
!Library/LibraryObject.cs                        _|====|====|=...|
!Library/InstanceMethod.cs                       _|====|=...|....|
!Library/StaticMethod.cs                         _|====|=...|....|
!Library/ExtensionMethod.cs                      _|====|=...|....|
!Collection/PairObject.cs                        _|====|=...|....|
!Collection/ListObject.cs                        _|====|=...|....|
!Collection/RecordObject.cs                      _|==..|....|....|
!Collection/SetObject.cs                         _|=...|....|....|
!Collection/MapObject.cs                         _|==..|....|....|
!Collection/TextObject.cs                        _|===.|....|....|
!Collection/BlobObject.cs                        _|=...|....|....|

[_libEmalInterpreter]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging, libEmalBuiltins *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Interpreter/BreakException.cs                   _|====|====|=...|
!Interpreter/ContinueException.cs                _|====|====|=...|
!Interpreter/ReturnException.cs                  _|====|====|=...|
!Interpreter/ListExtension.cs                    _|====|=...|....|
!Interpreter/InternalMethod.cs                   _|==..|....|....|
!Interpreter/GenericObject.cs                    _|==..|....|....|
!Interpreter/Evaluator.cs                        _|==..|....|....|

[_libEmal]
(* libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalMessaging, libEmalFrontend, libEmalInterpreter *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Emal.cs                                         _|==..|....|....|

[_emaltest]
(* libEmalDataStructure, libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging, libEmalFrontend, libEmalBuiltins, libEmalInterpreter, libEmal *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!emal/Tap.cs                                     _|=...|....|....|
!emal/UnitTest.cs                                _|=...|....|....|
!emal/Program.cs                                 _|===.|....|....|

[_emal]
(* libEmalReporting, libEmalLexing, libEmalTypeSystem, libEmalStatus, libEmalSymbols, libEmalMessaging, libEmalFrontend, libEmalBuiltins, libEmalInterpreter, libEmal *)
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!emal/Ports/LogPort.cs                           _|==..|....|....|
!emal/Ports/KeyProducer.cs                       _|==..|....|....|
!emal/Ports/KeyboardPort.cs                      _|==..|....|....|
!emal/Ports/TimeProducer.cs                      _|=...|....|....|
!emal/Ports/TimerPort.cs                         _|=...|....|....|
!emal/Ports/UnixScreenPort.cs                    _|=...|....|....|
!emal/Ports/ScreenPort.cs                        _|=...|....|....|
!emal/Command.cs                                 _|=...|....|....|
!emal/Program.cs                                 _|====|====|==..|

[_funEmalKitStorageAccess]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Access.cs                                _|==..|....|....|
!OpenAccess.cs                                   _|==..|....|....|
!Access.cs                                       _|==..|....|....|
!Access.emal                                     _|==..|....|....|

[_funEmalKitStorageStatable]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Statable.cs                              _|==..|....|....|
!EntryKind.cs                                    _|==..|....|....|
!EntryStatus.cs                                  _|==..|....|....|
!Entry.cs                                        _|==..|....|....|
!EntryWindows.cs                                 _|==..|....|....|
!EntryUnix.cs                                    _|==..|....|....|
!Statable.cs                                     _|==..|....|....|
!Statable.emal                                   _|==..|....|....|

[_funEmalKitStoragePath]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Path.cs                                  _|=...|....|....|
!Info.cs                                         _|=...|....|....|
!InfoWindows.cs                                  _|=...|....|....|
!InfoUnix.cs                                     _|=...|....|....|
!Path.cs                                         _|=...|....|....|
!Path.emal                                       _|=...|....|....|

[_funEmalKitStorageDirectory]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Directory.cs                             _|=...|....|....|
!DirectoryBo.cs                                  _|=...|....|....|
!DirectoryBoWindows.cs                           _|=...|....|....|
!DirectoryBoUnix.cs                              _|=...|....|....|
!Directory.cs                                    _|=...|....|....|
!Directory.emal                                  _|=...|....|....|

[_funEmalIoFile]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/File.cs                                  _|=...|....|....|
!FileBo.cs                                       _|=...|....|....|
!OpenMode.cs                                     _|=...|....|....|
!File.cs                                         _|=...|....|....|
!File.emal                                       _|=...|....|....|

[_funEmalIoSymlink]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Lexeme/Symlink.cs                               _|=...|....|....|
!SymlinkBo.cs                                    _|=...|....|....|
!Symlink.cs                                      _|=...|....|....|
!Symlink.emal                                    _|=...|....|....|

[_funEmalTypeNullables]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!Nullables.emal                                  _|==..|....|....|

[_funEmalCompressionShannonFano]
!source                                          _|alfa|beta|stab|
!------------------------------------------------_|----|----|----|
!ShannonFano/Node.emal                           _|====|=...|....|
!ShannonFano/Algorithm.emal                      _|====|=...|....|
!ShannonFano.emal                                _|====|=...|....|

[end]
(*§*)
Source: README.txt, updated 2025-01-31