Mem - MrKaszeba19/PapajLang GitHub Wiki
Mem (v.0.5.3) is the latest stable version of RPN Calculator (now Papaj), which was released on April 8, 2023. It is named after the thirteenth letter of Hebrew alphabet – mem (מ). Its main improvement is the optimization of PS Environment – the code execution speed improved by about 60%. Mem is the first version since the generations have been abolished on August 31, 2022.
On April 11, 2023 the first update was released. That update fixed some bugs related to parsing empty strings.
Details and features
- Name: Mem
- Version Code: 0.5.3
- Version Type: stable version
- Release Date: April 8, 2023
- Stable precedessor: Lamed (v.0.5.2)
- Stable successor: Nun (v.0.5.4)
- Language: FreePascal
- Lines of code: 15,870
- Number of functions: 576 + user-defined ones
- Maximum number of instructions: de facto no limit (depends how many you can put in AnsiString, which has limit of either 2,147,483,647 (32 bit) or 9,223,372,036,854,775,807 chars (64 bit))
- Number of entity types: 9 (10 with quasitypes)
- Number of packages: 7
- Tested on:
- systems: Windows (Win2000, Win7, Win8.1, Win10), Linux (Ubuntu 18-20, Debian 11, Mint 21, Manjaro)
- architectures: i386/x86 (32 bit), amd64/x64 (64 bit)
Code and binaries
List of confirmed changes
Initial release
- all changes included in the updates of 0.5.2
- brand new optimized PS Environment (improved by about 60-75%)
- fix the bug about odd roots of negative numbers
- fix GUI output decimal comma bug – from now all decimal output contains dot
- optimized computation of integer powers
- allowed
for ( i : $T $f map )
- removed features
Math.!
- old
cond ? if: else :
expression
- Number package with functions:
toUSNumber
,toUSNumber2
,toUSNumber3
toEUNumber
,toEUNumber2
,toEUNumber3
,toEUNumber4
- Math package functions moved to Number package
cub
,inv
,sqr
,cbrt
round
,floor
,ceiling
isPrime
,isEven
,isOdd
,isInteger
,isNatural
abs
log10
,log2
,log16
lbin
,lhex
,ldec
log
sign
,sgn
factorial
- Console package functions:
isUnix
,isLinux
,isWindows
OSDistFull
,OSDistributionFull
getShell
,setShell
CPUNames
,CPUThreads
,CPUBaseFreqs
CPUUptime
(Linux only)CPUMaxFreqs
,CPUMinFreqs
,CPUCurrentFreqs
,CPUUsages
,CPUAllUsage
(Linux only)RAMTotal
,RAMUsage
,RAMFree
,RAMAvailable
(Linux only)SwapTotal
,SwapUsage
,SwapFree
(Linux only)ScreenResolution
,ScreenWidth
,ScreenHeight
(Linux only)
- Date package functions:
YMDtoDateTime
,MDYtoDateTime
,DMYtoDateTime
- Math package functions:
skewness
,kurtosis
,kurtosis3
,excessKurtosis
- Arcsine distribution functions:
funcArcsine
,distArcsine
,randomArcsine
,genArcsine
- String package functions:
splitByExpression
- add flags that set up RPN REPL and RPN GUI App to Applications Menu (Linux only)
Update #1
- fix access violation bug casued by putting a function at the end of code
- allow
function ()
(with empty parentheses) - fix parsing empty string bug
- remove some stray outputs
Update #2 of 2023-11-26
- check bugs of REPL (fix memory leaks)
- add freebsd 64 bit support
- fix break and continue
- fix while loop condition access violation bug
- fix console/date libraries bug