← Return to PortaLinux Runtime
CinnamonWolfy's (pocketlinux32) C Helper Library - Release Archive
While this is technically not part of the Codeberg Migration since it's not actually part of the Project, it is part of its history. And, yes, pocketlinux32 and CinnamonWolfy are the same person.
CinnamonWolfy's C Helper Library (originally released under the pocketlinux32 handle), mainly known as pl32lib/pl32lib-ng, was a helper library originally built for creating language interpreters resembling the style and syntax of the Bourne Shell. It implemented a memory tracker, a string tokenizer, a file interface similar to the C Standard Library's that also implemented memory buffers that utilized the same interface as regular files, and a Bourne Shell-like interpreter with custom commands. It would be temporarily shelved in May 2022, after being utilized for a configuration file generator utility for Cisco enterprise network equipment.
In late 2022, pl32lib would be revisited and reworked into the 0.95-ng release, which completely got rid of the interpreter, and tweaked some of the function calls. this refreshed version of pl32lib, pl32lib-ng, would go on to become the first custom C runtime utilized within PortaLinux, with it being introduced in release 0.10.1 of the PortaLinux Build System. It would eventually become the de-facto PortaLinux C runtime, due to its memory tracker as well as string tokenizer, being used to implement early versions of pl-srv, pltermlib and pltk, as well as an early implementation of the PortaLinux Markup Language (libplml)
On July 15th of 2023, pl32lib would be discontinued and forked off into a new project, that project being the PortaLinux Runtime. This was done due to the featureset needed for PortaLinux surpassing what a simple C99 helper library could provide, and thus marks the end of pl32lib.
Here are the releases of this project repo (some releases are missing):
- v0.01 (MISSING) - 2021/9/22
- v0.02
- v0.03
- v0.04
- v0.05 (MISSING) - 2022/3/24
- v1.00
- v1.01
- v1.02: Concatenate files
- v2.00: API broken...
- v3.00: Yes... again.
- v0.95-ng: Refreshed codebase
- v1.00-ng: A stable API at last
- v1.01-ng: Improved build system and hardened pl32-memory
- v1.02-ng:
plStrtok
fixed, Contributions notice, Slight build system changes - v1.03-ng: pl32-file bugfixes and updated build system
- v1.04-ng:
plPanic
,plchar_t
andplstring_t
added - v1.05-ng: C++ bindings,
plstring_t
helper functions,plMTFreeArray
behavior change - v1.06-ng: pl32-ustring finished, Final release of pl32lib-ng (Paraphrased Title, MISSING) - 2023/7/15
v0.02
Released on 2022/3/8 by CinnamonWolfy
Second release. pl32-memory was completely rewritten, pl32-parse was expanded to pl32-shell and pl32-file was added.
Confirmed fully functional: pl32-memory, pl32-shell (string manipulation parts)
Incomplete: pl32-shell, pl32-file
Not implemented yet: pl32-term
v0.03
Released on 2022/3/13 by CinnamonWolfy
Third release. pl32-memory has been rewritten for the second and final time. pl32-shell was slightly modified to use the slightly modified pl32-memory API. Both of these modules are fully complete and fully functional.
Ready for use: pl32-memory, pl32-shell
Incomplete: pl32-file
Not implemented yet: pl32-term
v0.04
Released on 2022/3/19 by CinnamonWolfy
Fourth release. pl32-shell's parsing has been upgraded to mimic that of the POSIX shell (sh). The pl32-shell API also changed:
plShell
now requires you to provide your own command buffer, as does plShellInteractive
. plShellInteractive
also now clears the input buffer after each entry. The testcase for pl32-shell has been updated to use the slightly modified API. A very simple
and barebones build system, compile
, has been added. This system is temporary and will be replaced at some point. README.md has been updated to reflect
these changes.
Ready for production use: pl32-memory, pl32-shell
Incomplete: pl32-file
Not implemented yet: pl32-term
v1.00
Released on 2022/4/1 by CinnamonWolfy
Sixth release. All modules have been completed and are fully functional. This is the first fully stable release of pl32lib. The wiki will be updated to reflect the changes made in this release.
pl32-shell function plShellFreeArray
is no longer an internal function. You can now use this function to free arrays with one function call.
Ready for production use: All
v1.01
Released on 2022/4/3 by CinnamonWolfy
Seventh release. Here are the changes:
- pl32-shell: added
show-memusg
command built-in toplShell
. This command will show the amount of memory that you can still allocate. It will get expanded in the next release. - pl32-shell: added
showHelpAtStart
flag to plShell. This flag enables or disables the execution of thehelp
andshow-memusg
commands during the startup of plShellInteractive.
v1.02: Concatenate files
Released on 2022/4/23 by CinnamonWolfy
Eighth release. Here are the new features:
- pl32-file: Added function
plFBufToFile
. This converts a 'file-in-memory' into a physical file. - pl32-file: Added function
plFCat
. This concatenates two files together.
v2.00: API broken...
Released on 2022/4/26 by CinnamonWolfy
NOTICE: Yup. I had to break the API, and it hasn't even been 3 releases from 1.00... I didn't wanna do this, considering that it is only one function that changed. It didn't change entirely either, it's only one extra parameter that I needed to add. But alas, it had to be done. The other choice would have been a broken package.
Anyways, here are the new features:
- pl32-shell:
plShellInteractive
now has to take one extra parameter, which changes whether it executes thehelp
command or not. - pl32-file: Added functions
plFCat
,plFTell
andplFPToFile
. The wiki will be updated to reflect these changes.
v3.00: Yes... again.
Released on 2022/5/2 by CinnamonWolfy
NOTICE: I, once again, broke API compatibility with the previous release. While I can't promise that the API will remain on 3.x from now on, I will try to keep it there as long as I can. Apart from pl32-shell, nothing has changed. If your projects uses any of the other modules, you will be safe for years to come. It's mainly the pl32-shell API that will remain unstable for a while, plTokenize and plParser being the exception to this.
Anyways... Ninth Tenth release and here's what changed from the last update:
- pl32-shell: Added support for variables. Functionality hasn't been added yet, but variable hooks have been implemented
v0.95-ng: Refreshed codebase
Released on 2022/12/5 by CinnamonWolfy
After all of those API breaks and all of the messy and inefficient pl32-shell code, I've decided I will be doing a rewrite of all of the modules, except pl32-memory and pl32-file, as those have been complete since v1.00 and are easy to read (in the case of pl32-memory, it's been feature-complete, and thus unmodified since v0.03). I've also decided to stop using the LGPL, as it's too restrictive for my taste and I've opted to use MPL v2.0 instead.
First Release of ng. Here are the new changes:
- pl32-shell has been split into pl32-token and pl32-shell. pl32-token contains the tokenizers that were in pl32-shell.
- pl32-shell is now just an interpreter and will be built separately from the main library.
- The new base library consists of pl32-memory, pl32-file and pl32-token
- pl32-term is deprecated and will be fully removed in the next release.
Future Goals:
- Making a stable base API
- pl32-shell will be a feature-complete shell interpreter
- Add more sophisticated modules
v1.00-ng: A stable API at last
Released on 2022/12/8 by CinnamonWolfy
pl32lib finally has a stable base API. This API will, for the most part, stay the same for the rest of this library's lifetime. The only thing that will change is the occasional addition of functions
Second Release of ng. Here are the new changes:
- pl32lib-ng now has a stable API
- pl32-shell has been moved to its own repo (https://github.com/pocketlinux32/plinterpretlib)
- Updated build system
v1.01-ng: Improved build system and hardened pl32-memory
Released on 2023/1/15 by CinnamonWolfy
Third Release of ng. Here are the changes:
- Updated build system
- Build system now resembles something similar to meson
- Improved the reliability of pl32-memory
- Removed useless cruft from pl32-file
- Added documentation (mostly complete)
v1.02-ng: plStrtok
fixed, Contributions notice, Slight build system changes
Released on 2023/1/23 by CinnamonWolfy
Fourth release of ng. Here are the changes:
- Fixed
plStrtok
bug where it would eat the next token if the token was one character long - Added Contributions section to README.md
- Slightly changed
./compile
commands - Commands now resemble meson commands
v1.03-ng: pl32-file bugfixes and updated build system
Released on 2023/3/13 by CinnamonWolfy
Fifth Release of ng. Here are the new changes:
- Fixed
plFGets
bug that would cause a buffer overrun - Added safety checks to all pl32-file functions to prevent segmentation faults
- Updated config system
v1.04-ng: plPanic
, plchar_t
and plstring_t
added
Released on 2023/5/13 by CinnamonWolfy
Sixth Release of ng. Here are the changes:
plPanic
function added. This expands internal functionplMTMemError
and turns it into a proper fatal error handler.plchar_t
type added. It makes Unicode characters easier to manageplstring_t
type added. It makes Unicode strings easier to handle. It also makes determining string size a lot easier and efficient
Future release feature goals:
- New pl32-ustring module, which implements proper Unicode functions that work on top of the C Standard Library and are better than wchar
- New pl32-parse functions which take advantage of the new plstring_t Unicode strings
v1.05-ng: C++ bindings, plstring_t
helper functions, plMTFreeArray
behavior change
Released on 2023/6/16 by CinnamonWolfy
Seventh release of ng. Here are the changes:
- C++ bindings have been created and compile. I don't know if they work as they haven't been tested and pl32lib-ng is primarily used for PortaLinux C development. I also stopped writing projects in C++ years ago x3
plStrFromCStr
andplStrCompress
helper functions added. These will help with converting normal C strings into aplstring_t
Future release feature goals:
- Expand pl32-ustring module into a string.h replacement
- New pl32-parse functions which take advantage of the new plstring_t Unicode strings