Echo changelog November 2024
- Configuration bug fixes and updates
- File write output fixed including correct output of subsections. Now writing will produce a re-loadable configuration. Only one level deep was working correctly previously.
- Added option to override the substitution pattern
- Inherited values from parents is handled explicitly now rather than relying on the FunctionBinder. This fixes an issue after copying sections that reference a parent's FunctionBinder, where function binder would attempt to call into the parent for substitution, which isn't valid if the parent is cleaned up.
- Added a Get overload to support splitting and assigning multiple variables from one line easier.
- Parsers
- VariableSubstitutor regular expression can be defined rather than hard coded
- FileSystem
- Added Open() overload to accept a relative file to attempt to open from. This is slightly more convenient than needing to call ResolveFullNameForFileWithParent()
- Added some template methods to make installing sources a little more convenient
- New FileSystemSourceStream
- Designed to read and write from io streams
- This is intended to be a read/write interface to memory and to create in-memory temporary files through the file system interfaces
- Supports opening stream:://name in write mode to output to a stringstream. The file can later be opened for reading.
- Switched to Qt as the default renderer on Linux
- This is due to the GTK implementation still being on 2.4. A task does exist to update GTK for those who wish to avoid Qt.
- Removed old stale echo/Chrono/Timer.h which is a relic from importing components from Echo 2. Using this could result in a memory corruption in the timer class that would cause the start time to be overwritten and report incorrect times. You should use echo/Chrono/CPUTimer.h instead. I'm surprised this didn't cause any noticable problems until recently.
Echo changelog August 2024
Build speeds
Significant build speed improvements from the following:
- Configuration forward declares parsers
- Parsers.h uses impl pattern to avoid including boost spirit in the header
Echo changelog July 2024
Despite my inconsistencies posting, Echo does get regular updates and is in active use.
Echo goes open source!
Tim and I have been discussing releasing Echo under an Open Source license for some time (years in fact). The main blockers were lack of documentation, and a number of tasks that we (mostly me) wanted to get done before release. Things like better platform support, a few known minor bugs, better defined interfaces etc.
Library and system updates
Support for Ubuntu 14.04 LTS ran out this month and as a result I have made the move to 18.04 LTS. I skipped 16 on my main machine, because I ran it on my laptop for a while and had numerous issues, and setting up a ZFS array from scratch is a little more time consuming than just installing from a USB. When I started my current job I found myself working on 16.04 for work, with which we've had ongoing problems as well. I'm hoping 18.04 proves to be much better (so far so good, but it has only has about 72 hours).
Emblem Modules, Java and SSL
If you aren't aware, I publish a NetBeans plug-in module called Emblem Modules. The project can be found in the Echo 3 templates folder. The module includes a single Echo Templates wizard that uses the EchoApplication template (both also found in the same location).
Is your game crashing due to Audio on Android but not PC?
I recently came across a bug in OpenSLESAudio which is sometimes causing a crash. Since this audio implementation is only used on Android right now this only affects Android platforms. The crash appears to occur when MusicBox plays the same sound twice and they happen to end at the same time. {T551} has been created to address the crash but it is is also likely the Android implementation will end up using OpenALAudio as it will be one less implementation to manage.
Changes to the Android build environment
I've been working on the Android toolchain, mainly to try and get C++11 support working and since I was making changes to the toolchains I ended up modifying some things that will mean you need to update your environment.
Easier Bullet physics
Although it hasn't been super obvious as to how they are used unless, perhaps, you're not familiar with the Bullet Physics Engine, but Echo has classes that allow you to use Bullet with SceneEntity objects.
New Echo dependency and build environment changes
I've just pushed some changes that will require a few simple updates.
Android Devices
This page shows the split of different Android system versions out in the field.
A blog for developers to post thoughts or share interesting things.