PortaLinux Runtime - Release Archive
The PortaLinux Runtime is a runtime library created for PortaLinux applications written in the C and C++ programming languages. It strictly abides by the C99/C11 and POSIX-2008 standards and thus can be ran on more platforms than just Linux.
It started off as a heavily modified fork of pl32lib release 1.06-ng, and the merger of it with libplml. Much of what the current runtime has originated within pl32lib, with the Rust-like strings coming from the "ng" codebase refresh.
Here are the releases of this project repo:
- pl32lib/pl32lib-ng releases (2021/9/22 - 2023/7/15) (INCOMPLETE)
- v0.01: Initial release
- v0.02: Error Handling, Proper Types, and Memory Tracker Update
- v0.03: plrt-string implemented
- v0.04: Achieved pl32lib-ng parity
- v0.05: Surpassed libplml features, Minor
plstring_t
bugfix - v0.06: Various bugfixes,
plRTStrcmp
added - v0.06.1: Minor bug fix
- v0.07: PLML Array support added, Fixed tokenizer bugs
- v1.00-rc1: Ready for stable API release
- v1.00: First stable release
- v1.01: File caching
- v1.02: PLML Token String Generator, Official Deprecration Notice of C++ Header
- v1.02.1: Small patch for PLML Token Generator
- v1.02.2: Minor changes
- v1.02.3: Actually finished implementing
plRTStrdup
, Added Tokenizer Handling of Tabs - v1.03: Added
plRTStrDecompress
, Added Meson Build Support, OptionalsignalHandler
- v1.03.1: Fixed ABI Breakage
- v1.03.2: Updated API Documentation
- v1.04:
plRTGetDirents
returns actual directory entry list, Documentation updated - v1.04.1: Improved build system
- v1.04.1-hotfix: Typo strikes again!
- v1.04.2:
plRTGetDirents
Behavior Change - v1.04.3: PLML bugfix
- v1.04.4: Parser bugfix
- v1.05:
plFInsert
andplFRemove
,plFGets
refactor, Memory files rework - v1.06:
plFPutPLChar
andplFGetPLChar
, Parser and PLML Bugfixes
v0.01: Initial release
Released on 2023/7/16 by CinnamonWolfy
First release. Here are the features:
- Forked from pl32lib-ng (unmaintained)
- Slightly modified Memory Tracker API to make it cleaner
v0.02: Error Handling, Proper Types, and Memory Tracker Update
Released on 2023/7/29 by CinnamonWolfy
Second release. Here are the features:
- plrt-types.h added
- This header contains all of the common types used within the runtime, which includes typedefs, structs, enums and all of the stuff within stdint.h and stddef.h
- This header currently also contains the function prototypes used by the error handler. This will most likely be moved into its own header
- plrt-error module added
- This module has an strerror-style error string creator function, and an enhanced
plPanic
that uses it. I might add a perror-style error printing function in the future - While the function definitions are currently in plrt-types.h, it will most likely be moved into its own header in the next release
- Memory tracker updated to use the new error handler functions
I'm most likely not gonna be posting a new release for a while. My current life situation is not the best, and I really need to get some form of income, which means that I won't be updating this repo for a while. I hope y'all understand
Sophie (pocketlinux32/CinnamonWolfy)
v0.03: plrt-string implemented
Released on 2023/8/5 by CinnamonWolfy
Third release. Here are the new changes
- plrt-string has been fully implemented
- It uses the new error handling system
- It also uses the new fat pointers and string structs
I got this out a lot sooner than I thought. Then again, I haven't started yet at my new day job. I will start soon, however, which means this might be the last release for a while (actually this time). I hope y'all understand
Sophie
v0.04: Achieved pl32lib-ng parity
Released on 2023/9/11 by CinnamonWolfy
Fourth release. Here are the features:
- plrt-token has been fully implemented
- Parity with pl32lib-ng has been fully implemented
Known Bugs
- Compiling with -O2 or -Os is broken on GCC (Optimized compilation on Clang is completely functional, however)
v0.05: Surpassed libplml features, Minor plstring_t
bugfix
Released on 2023/10/28 by CinnamonWolfy
Fifth release. Here are the features:
- PLML parser added
- This is a complete reimplementation of the libplml API. Apart from the API, there is no libplml code in pl-rt, as pl-rt's parser is fairly different from pl32lib-ng's
- Floating-point support has been added to the parser after rewriting it
- Array support has been implemented in the token type (enum and union), but has yet to be properly implemented in the parser
- Fixed
plRTMemMatch
bug that would return a null pointer if both of the memory blocks were the same size (basically used as a fancy strcmp) - An actual
plRTStrcmp
will be implemented in the next release, alongside all of the other PLML stuff - Tweaked plrt-string functions to make plstrings more compatible with Standard C Library functions
v0.06: Various bugfixes, plRTStrcmp
added
Released on 2023/10/29 by CinnamonWolfy
Sixth release. Here are the features:
- PLML Parser bugfixes
- The parser is now capable of parsing weird ways of declaring a token
- Tokenizer bugfixes
plRTTokenize
does not swallow quote character if used as an ending positionplRTTokenize
doesn't allow for one-char whitespace strings to be parsedplRTParser
does not add a null pointer to the returned string array- Added plRTStrcmp
v0.06.1: Minor bug fix
Released on 2023/11/10 by CinnamonWolfy
Seventh release. Here are the new features:
- Fixed a minor bug in plrt-types
- Added some more error handling enums and strings
v0.07: PLML Array support added, Fixed tokenizer bugs
Released on 2023/12/1 by CinnamonWolfy
Eighth release. Here are the new features:
- The PLML parser now supports one-dimensional arrays
- Unintentional side effect: It supports multiple types in one array. That is not permitted in TOML and thus PLML. I plan on fixing this in the next release
- Fixed parser bug
- It can now properly handle spaces at the beginning of a string
Future Features:
- Adding a simple logging system to pl-rt
- Fix PLML parser side effect
v1.00-rc1: Ready for stable API release
Released on 2023/12/18 by CinnamonWolfy
Ninth release. Here are the new features:
- plrt-posix module added
- Imported
plRTSpawn
from pl-srv - Imported
plRTGetDirents
from pl-srv - Created new logging system
- Due to the new pl-rt logger and imports from pl-srv, pl-rt is now dependent on the POSIX API, which means it is no longer fully portable
- PLML parser is now standards-compliant
- Arrays only accept one type of token now
Future goals:
- Create comprehensible and straightforward documentation
Developer Notes:
pl-rt is almost ready for a full stable release. all that is needed right now are the docs, and i will release. but as of now, the portalinux api is now fully stable ^w^
v1.00: First stable release
Released on 2024/1/18 by CinnamonWolfy
Tenth release. Here are the new features:
- Tokenizers return raw tokens
- Strings now look like "string"/'string' rather than just string. Same applies to arrays.
- This might break some compatibility with pre-rc releases, but it helped fix some very nasty bugs within the plml parser.
- PLML parser now parses boolean arrays correctly.
- This was a real nasty one. Fixed by new tokenizer behavior described above.
- Documentation has been written
- These docs are a brief overview. I will release some more in-depth docs on my website.
This took quite a while but it was worth it. PortaLinux finally has a stable base API.
v1.01: File caching
Released on 2024/2/17 by CinnamonWolfy
Eleventh release. Here are the new features:
- Added
plFLoad
andplFUnload
to plrt-file - These functions cache or "load" a filesystem file into memory and write back all of the changes or "unload" the file from memory
Developer Notes:
i had made these for pl-srv, but it turns out i won't need them in there. oh well x3
this can be quite useful for a text editor or high-perf apps, so i'm leaving it in
there will be a 1.02 after pl-srv 1.00-rc1
v1.02: PLML Token String Generator, Official Deprecration Notice of C++ Header
Released on 2024/3/17 by CinnamonWolfy
Twelfth release. Here are the changes:
- pl-rt can now generate TOML-compatible PLML token strings that can be written to files
- Added for pl-srv 1.00-rc1
- Removed unfinished/broken C++ header
- May be readded in 1.02.1 (Not guaranteed)
v1.02.1: Small patch for PLML Token Generator
Released on 2024/4/9 by CinnamonWolfy
Thirteenth Release. Here are the changes:
plMLGenerateTokenStr
created a bug within pl-srv where it would not parse a string if there was no newline in it, and crash- This is primarily a bug within the PLML parser itself, but I would like to just get something out now
v1.02.2: Minor changes
Released on 2024/5/9 by CinnamonWolfy
Fourteenth Release. Here are the new changes:
plFGets
andplFPuts
return values changed to match the original Standard C library calls- This will break some compatibility, but it's a necessary change. besides, it's a small enough change done very early into pl-rt's lifecycle
(Re-released, as I missed updating the header version)
v1.02.3: Actually finished implementing plRTStrdup
, Added Tokenizer Handling of Tabs
Released on 2024/5/18 by CinnamonWolfy
Fifteenth release. Here are the changes:
plRTStrdup
has been fully implemented- Yeah, I don't know how this got past v1.00, but oh well, it's fixed now lol
plRTTokenize
is now able to handle tab (\t) characters
v1.03: Added plRTStrDecompress
, Added Meson Build Support, Optional signalHandler
Released on 2024/7/5 by CinnamonWolfy
Sixteenth release. Here are the changes:
- Added
plRTStrDecompress
- You can now convert C strings and pl-rt strings between each other
- Added Meson Build System
plRTSetSignal
must be specifically enabled- This is so that you don't have to add an empty signalHandler to your program to make the linker not error out
v1.03.1: Fixed ABI Breakage
Released on 2024/7/12 by CinnamonWolfy
Seventeenth release. Here are the changes:
- Fixed minor ABI breakage caused by release 1.02.2
v1.03.2: Updated API Documentation
Released on 2024/7/22 by CinnamonWolfy
Eighteenth release. Here are the changes:
- Updated the documentation of plrt-string
v1.04: plRTGetDirents
returns actual directory entry list, Documentation updated
Released on 2024/8/5 by CinnamonWolfy
Nineteenth release. Here are the changes
plRTGetDirents
now returns an array of directory entries (struct dirent) instead of plstring_t.- The list is unsorted by default. To sort the list, use
plRTSortDirents
. - To get the old behavior back, set preprocessor variable
PLRT_COMPAT_FEATURELVL
to 4. - Updated documentation.
v1.04.1: Improved build system
Released on 2024/8/16 by CinnamonWolfy
Twentieth release. Here are the changes:
- Improved build system
configure
now replaces~
with the home directory of the logged-in usercompile
now creates install directories before installing
v1.04.1-hotfix: Typo strikes again!
Released on 2024/11/29 by CinnamonWolfy
Twenty-first release, Here are the changes:
- Fixed a typo in the build system that makes directory creation during installation fail
- I might've forgotten to test it, sorry (not really)
v1.04.2: plRTGetDirents
Behavior Change
Released on 2024/12/2 by CinnamonWolfy
Twenty-second release. Here are the changes:
plRTGetDirents
now returns . and .. in directory listing
v1.04.3: PLML bugfix
Released on 2024/12/17 by CinnamonWolfy
Twenty-third release. Here are the changes:
- Fixed a bug within the PLML parser
- Commented out lines would crash the entire program due to missing checks
v1.04.4: Parser bugfix
Released on 2024/12/29 by CinnamonWolfy
Twenty-fourth release. Here are the changes:
- Fixed broken behavior within
plRTTokenize
- A check was not clearing a variable, which ended up breaking PLML parsing
v1.05: plFInsert
and plFRemove
, plFGets
refactor, Memory files rework
Released on 2025/6/6 by CinnamonWolfy
Twenty-fifth release. Here are the changes:
plFInsert
andplFRemove
added- Basically an upstreaming of pltermlib's buffer editor functions
plFGets
refactoredplFGets
now uses plrt-string functions instead of rhe libc string functions- Memory files reworked
- Memory files are now a lot more memory-efficient, since they no longer allocate 64kb by default (remnant quirk from pl32lib)
- All of plrt-file now fully uses plrt-string functions instead of libc string functions
v1.06: plFPutPLChar
and plFGetPLChar
, Parser and PLML Bugfixes
Released on 2025/7/5 by CinnamonWolfy
Twenty-sixth release. Here are the changes:
plFPutPLChar
andplFGetPLChar
added- A version of the
plFGetC
/plFPutC
routines that usesplchar_t
instead of assuming ASCII - Parser/PLML Bugfix
- Fixed a bug in both the string tokenizer and PLML parser that would make the PLML parser panic if the file given has an empty line after