Today, after more than a month, we are releasing the latest build of Nimi Places 20261103, which focuses on improving application stability and performance.
The first major change is in how "delayed tasks" are handled. Previously, each task executed in its own thread; now, they use a single shared thread that utilizes multiplexing. One of the reasons for this change was to address a reported timeout issue. Most importantly, this should reduce general resource usage while further improving application performance during burst activity.
The second major change is the improved resilience of shell file operations against abrupt application termination. Nimi Places will now attempt to wait for these operations to finish upon closing, especially when the application is closing due to an error. In addition, these operations have been optimized to use a thread pool instead of newly created threads.
The final change is a revision of the conditional logic. While this revision is ongoing, conditionals for processing larger sets of extensions have been updated to reduce the number of comparisons and allow for hardware jump table and binary tree execution, bringing their execution time closer to constant time. To verify these architectural choices, the logic was validated using low-level compilation analysis alongside synthetic tests designed to reproduce edge-case, real-world scenarios to accurately measure algorithmic performance. A lot of other conditionals, such as path syntax validation, have already been revised as well.
Finally, multimedia support has been fixed and improved. More audio and video containers are now recognized, and preview playback properly manages media switching by disallowing simultaneous playback. Nonetheless, please keep in mind that multimedia support requires the appropriate system codecs to be present to handle all recognized formats.
- Added rendered text eviction for off-screen items in idle Place type containers.
- Changed to recognize more audio and video containers.
- Optimized shell file operations to use thread pool instead of managed threads.
- Revised network availability change detection function to be branchless.
- Fixed an issue where two-letter extensions were not validated as resources due to an unreachable logic path, due to length based optimization.
- Fixed clearing last hovered off-screen item, when scrolling Place type container.
- Fixed hashing algorithm for extensions lists possible collisions, when using non-ASCII characters.
- Fixed multimedia preview allowing multiple simultaneous previews.
- Fixed request format for opening legacy video playback formats.
- Fixed thread synchronization functions to ensure state update.
- Removed custom managed functions for concatenating characters to strings.
- Improved file write operations resilience against abrupt application termination.
- Improved shell file operations resilience against abrupt application termination.
- Optimized conditionals for extensions list to reduce number of comparisons and allow hardware jump table based execution.
- Optimized file linking.
- Optimized logic for verifying if given character is previous character modifier.
- Optimized path syntax validation.
- Optimized string interning for extensions to provide constant-time lockless lookup.
- Revised delayed tasks to use single shared thread and multiplexing.
- Revised to use asynchronous close request for handling updates.
- Other changes, updates and fixes.
- Simplified update version comparison logic.
- Unused code clean-up.
