Skip to content
BETSEE 0.9.0.0 (Lucky Levin) released.

Significant changes include:

* Python >= 3.5 required. In accordance with the looming end-of-life
  (EOL) of Python 3.4, BETSEE now strictly requires at least Python 3.5.
* Simulator phase queueing. Simulator phases (e.g., seed, simulation)
  may now be independently queued and dequeued such that the end user
  clicking the simulator-specific start button now sequentially runs
  each currently queued simulator phase.
* Simulator phase running. Simulator phases (e.g., seed, simulation)
  may now be independently run, paused, resumed, and stopped in a robust
  manner leveraging our newly introduced thread pool API.
* Simulator progress. Feedback metadata is now contextually displayed
  (in quasi-realtime) for the current simulator state:
  * Percentage-based progress.
  * Human-readable terse status.
  * Human-readable verbose substatus.
* Simulator widget synchronization. The internal state of all simulator
  widgets is now explicitly synchronized against the external state of
  both the simulator as a whole and the currently running simulator
  phase if any, substantially improving the User eXperience (UX).
* Placeholder text excised. Placeholder simulation configuration tree
  items (e.g., "Dynamic Channels", "Network") have now been dynamically
  pruned at runtime, dramatically improving usability.
* Font sizes normalized. The BETSEE GUI was initially developed on a
  high-DPI system, which understandably resulted in substantially
  smaller font sizes than desirable on standard DPI systems. Font sizes
  are now normalized to conform to standard aesthetic expectations.
* Stylesheet simplified. The global application stylesheet has now been
  sanitized, simplified, and streamlined: AKA, 3S.
* Thread pool API. The new "betsee.util.thread.pool" subpackage now
  implements a rather efficient, portable, multithreaded framework for
  independently starting, stopping, pausing, and resuming an arbitrary
  number of arbitrary long-running threads. This framework largely
  obsoletes all prevailing low- and high-level Python and Qt
  parallelization APIs, including (but presumably not limited to):
  * "multiprocessing.dummy".
  * "threading".
  * "PySide2.QtConcurrent".
  * "PySide2.QtCore.QFuture".
  * "PySide2.QtCore.QRunnable".
  * "PySide2.QtCore.QThread".
  * "PySide2.QtCore.QThreadPool".
  Note that this framework is effectively unencumbered by the Global
  Interpreter Lock (GIL), assuming worker threads that routinely defer
  to the canonical QBetseeThreadPoolWorker._halt_work_if_requested()
  method to enable user responsiveness. Naturally, all BETSEE-specific
  worker threads satisfy this sensible constraint.
* Installation instructions conda-fied. Installation instructions have
  been significantly streamlined to leverage the newly released Anaconda
  package for BETSEE, kindly hosted by the non-profit conda-forge
  organization. The obsolete Ubuntu-specific installation script has
  been removed.