Noteboard
This is where I'll post miscellaneous notes on Sitix stuff. If you're using Sitix (or just interested in the project), you should check back here periodically for information on new releases, design considerations, known bugs, etc. You can think of it as a miniblog.
2024-4-3: Reworked the project fully over the last few weeks. It's now a LOT better. The lookup and childSearchUp functions are the main bad things left (also a lot of crappy string manipulation, but that's less of a "problem" and more of an "optimization goal").
Markdown can do links now and they're not bad. Still gotta implement some stuff, though.
Relative files are now supported! The old way of doing files will not be deprecated for the forseeable future, but now you can explicitly specify that you want to check the project root with /, and if the file ISN'T absolute, it'll be looked-up in the directory of the file containing the object running the lookup. This may eventually produce odd behavior with lookups in different parts of a project, but for now it should be fine; I'm not keeping the current lookup function for long.
This means that I'm now moving forward with one of my major goals: downloadable templates! It hasn't been listed in todo (I'm lazy) but it's been on the list in my head for a while.
One of the few things I liked about Jekyll was the builtin development server that watched the project tree for changes, and rebuilt them on the fly - so sitix now does this too! Activate the -w flag to use Sitix in Watchdog mode. It's pretty robust and sane, so (aside from a few annoying seggies I'm working on fixing) it should be usable as a daemon on servers using Sitix. This is very useful for situations like a blog that needs to update from a web interface (another daemon attached to an endpoint handles auth and creates/updates Sitix files).
My main goal for Sitix since I started was to fully replace Jekyll. In my not-so-humble opinion, it's already better, but it doesn't cover all the features; I need a Github action for building Sitix, for one (the GH Pages integration on Jekyll is phenomenal).
Finally, a little note about usage: Sitix is meant to be scriptable. Sitix alone only does static build; it's useful and recommended to write a Bash script that invokes a sitix build and then does other things with it. For this reason, I at the moment have no plans to officially support fancy stuff like moving Sitix outputs to another Git branch.
2024-3-23: Added Evals. It's a simple evaluated stack-based language designed specifically for Sitix. At the moment, all it does is compare things, but it's a damn sight better than how if statements used to work. Eventually I'll add vscript to inline object (
In other news, the program is a LOT cleaner now. Much of the processing effort has been moved into constructors and a lot of things have been simplified and abstracted. Memory maps are now automatically unmapped and have a very pleasant buffer-like interface, and all the mapping code has been moved to a single function.
The project is now ready for MarkDown!
Slightly later in the day: Added markdown! It's not quite ready for production yet, but works promisingly well already.
2024-3-11: Model updates, and now this site can actually be built by the latest sitix updates :D.
As of today, Sitix now leaks no memory when building this site! It took a lot of effort to trim down but it was worth it. We shall see if the luck persists.
2024-3-10: Now the project-object model is a LOT better. When a lookup fails for something that is also a valid filename, that file is loaded as an object (so subsequent lookups will find it). This means it's possible to replicate the behavior of [#file] with [^file], although because of child-access you need to escape the filename (like
Memory management is a pain. The reasons are complex, but it's mostly because of what I call the "crap-copy"; if you're interested, look for that phrase in the code comments. I added some frees and deletes but Valgrind tells me it's still leaking quite a bit, especially when for loops are used.
2024-3-9: The stupid "Something has gone terribly wrong" warning is NOT important; you can safely ignore it. It's just debugging information pour moi.
Markdown can do links now and they're not bad. Still gotta implement some stuff, though.
Relative files are now supported! The old way of doing files will not be deprecated for the forseeable future, but now you can explicitly specify that you want to check the project root with /, and if the file ISN'T absolute, it'll be looked-up in the directory of the file containing the object running the lookup. This may eventually produce odd behavior with lookups in different parts of a project, but for now it should be fine; I'm not keeping the current lookup function for long.
This means that I'm now moving forward with one of my major goals: downloadable templates! It hasn't been listed in todo (I'm lazy) but it's been on the list in my head for a while.
One of the few things I liked about Jekyll was the builtin development server that watched the project tree for changes, and rebuilt them on the fly - so sitix now does this too! Activate the -w flag to use Sitix in Watchdog mode. It's pretty robust and sane, so (aside from a few annoying seggies I'm working on fixing) it should be usable as a daemon on servers using Sitix. This is very useful for situations like a blog that needs to update from a web interface (another daemon attached to an endpoint handles auth and creates/updates Sitix files).
My main goal for Sitix since I started was to fully replace Jekyll. In my not-so-humble opinion, it's already better, but it doesn't cover all the features; I need a Github action for building Sitix, for one (the GH Pages integration on Jekyll is phenomenal).
Finally, a little note about usage: Sitix is meant to be scriptable. Sitix alone only does static build; it's useful and recommended to write a Bash script that invokes a sitix build and then does other things with it. For this reason, I at the moment have no plans to officially support fancy stuff like moving Sitix outputs to another Git branch.
2024-3-23: Added Evals. It's a simple evaluated stack-based language designed specifically for Sitix. At the moment, all it does is compare things, but it's a damn sight better than how if statements used to work. Eventually I'll add vscript to inline object (
[=name content]
) directives; for now, it's present in if statements and the [v]
directive.In other news, the program is a LOT cleaner now. Much of the processing effort has been moved into constructors and a lot of things have been simplified and abstracted. Memory maps are now automatically unmapped and have a very pleasant buffer-like interface, and all the mapping code has been moved to a single function.
The project is now ready for MarkDown!
Slightly later in the day: Added markdown! It's not quite ready for production yet, but works promisingly well already.
2024-3-11: Model updates, and now this site can actually be built by the latest sitix updates :D.
As of today, Sitix now leaks no memory when building this site! It took a lot of effort to trim down but it was worth it. We shall see if the luck persists.
2024-3-10: Now the project-object model is a LOT better. When a lookup fails for something that is also a valid filename, that file is loaded as an object (so subsequent lookups will find it). This means it's possible to replicate the behavior of [#file] with [^file], although because of child-access you need to escape the filename (like
[^directory/file\.html]
). The latter also allows accessing objects inside a file without rendering that file. The old include syntax now just sets up a dereference and escapes the name for you.Memory management is a pain. The reasons are complex, but it's mostly because of what I call the "crap-copy"; if you're interested, look for that phrase in the code comments. I added some frees and deletes but Valgrind tells me it's still leaking quite a bit, especially when for loops are used.
2024-3-9: The stupid "Something has gone terribly wrong" warning is NOT important; you can safely ignore it. It's just debugging information pour moi.