HomePhorge
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.

Other work

Windows native builds

Echo is currently being used for a project on Windows naively. A few updates to build configurations were required and a few renames have occurred as I partially yield to Microsoft's Macro Madness. This is the first time in a long time native Windows builds have been maintained and it has been great seeing how edepbuild and Echo continue to help make cross platform development easier.

I'm in the process of determining if the Windows build changes can be submitted as contributions.

Container review

A couple of months ago I decided to do a review of the container types used in the code base. There had been requests for some implementations to use containers that are more efficient for look-ups and iteration. In the past the decision to used ordered maps for some systems was based on the assumption that sorting would be desired when iterating. This was never really the case and since I hadn't run into performance issues it was never reviewed.

The branch T990-container-replace replaces most usages of std::map with std::unordered_map. It hasn't been merged yet since I also want to review places that vector could be used for faster iteration.

Merging this isn't a priority but is something that I would like to finish up soon.

Written by 0xseantasker on Thu, Nov 28, 12:41 PM.
User
Projects
None
Subscribers
None

Event Timeline