← 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:
plStrtokfixed, Contributions notice, Slight build system changes - v1.03-ng: pl32-file bugfixes and updated build system
- v1.04-ng:
plPanic,plchar_tandplstring_tadded - v1.05-ng: C++ bindings,
plstring_thelper functions,plMTFreeArraybehavior 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
View Commit Download ZIP Download TAR.GZ
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
View Commit Download ZIP Download TAR.GZ
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
View Commit Download ZIP Download TAR.GZ
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
View Commit Download ZIP Download TAR.GZ
v1.01
Released on 2022/4/3 by CinnamonWolfy
Seventh release. Here are the changes:
- pl32-shell: added
show-memusgcommand 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
showHelpAtStartflag to plShell. This flag enables or disables the execution of thehelpandshow-memusgcommands during the startup of plShellInteractive.
View Commit Download ZIP Download TAR.GZ
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.
View Commit Download ZIP Download TAR.GZ
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:
plShellInteractivenow has to take one extra parameter, which changes whether it executes thehelpcommand or not. - pl32-file: Added functions
plFCat,plFTellandplFPToFile. The wiki will be updated to reflect these changes.
View Commit Download ZIP Download TAR.GZ
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
View Commit Download ZIP Download TAR.GZ
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
View Commit Download ZIP Download TAR.GZ
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
View Commit Download ZIP Download TAR.GZ
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)
View Commit Download ZIP Download TAR.GZ
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
plStrtokbug where it would eat the next token if the token was one character long - Added Contributions section to README.md
- Slightly changed
./compilecommands - Commands now resemble meson commands
View Commit Download ZIP Download TAR.GZ
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
plFGetsbug that would cause a buffer overrun - Added safety checks to all pl32-file functions to prevent segmentation faults
- Updated config system
View Commit Download ZIP Download TAR.GZ
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:
plPanicfunction added. This expands internal functionplMTMemErrorand turns it into a proper fatal error handler.plchar_ttype added. It makes Unicode characters easier to manageplstring_ttype 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
View Commit Download ZIP Download TAR.GZ
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
plStrFromCStrandplStrCompresshelper 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
View Commit Download ZIP Download TAR.GZ