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.