Mystical is a programming language designed for live coding visuals and music. It prioritizes real-time performance and expressive syntax, leveraging OpenGL for graphics and supporting features like hot code reloading and a built-in REPL. The language draws inspiration from Lisp, emphasizing symbolic expressions and homoiconicity. It also incorporates aspects of functional programming and provides a minimalist core language that can be extended through libraries. Although currently in early stages of development, Mystical aims to provide a powerful and flexible environment for creative coding.
The software project delineated within the documentation titled "Mystical," authored by Duane Maxwell, represents an ambitious undertaking to craft a highly configurable, extensible, and visually captivating window manager for the X Window System. It distinguishes itself through a commitment to dynamic configuration, allowing for extensive customization during runtime without necessitating recompilation or restarts. This dynamism is facilitated by a configuration language based on s-expressions, enabling intricate manipulation of window behavior and appearance.
Central to Mystical's philosophy is the concept of "rules," which are essentially logical expressions that dictate how windows should be managed. These rules encompass a wide range of criteria, from window titles and classes to specific client properties, and they govern aspects such as placement, size, decoration, and even virtual desktop assignment. This rule-based approach empowers users to establish sophisticated window management paradigms tailored to their specific workflows.
The documentation highlights Mystical's focus on extensibility through the use of loadable modules. These modules, written in C, can introduce new functionalities and extend the core feature set of the window manager. This modular design not only allows for community contributions but also enables users to tailor Mystical to their precise needs by developing custom modules.
Furthermore, Mystical emphasizes aesthetic appeal by offering comprehensive theming capabilities. Users can define themes that control the visual presentation of various window elements, such as borders, titles, and buttons, allowing for a highly personalized desktop environment. The documentation mentions support for advanced features like alpha blending and compositing, suggesting an emphasis on creating visually polished and modern window management experiences.
In summary, Mystical aspires to be a flexible and powerful window manager, providing a rich set of features for managing windows within the X Window System. Its emphasis on runtime configuration, rule-based operation, modular extensibility, and sophisticated theming distinguishes it as a window manager designed for power users seeking a high degree of control and customization over their desktop environment. It represents a notable endeavor to blend functional window management with aesthetic refinement.
Summary of Comments ( 19 )
https://news.ycombinator.com/item?id=44016037
HN commenters were largely unimpressed with Mystical, finding its premise of automatically generating spiritual experiences underwhelming and its execution lacking. Several questioned the value and authenticity of such manufactured experiences. One commenter compared it unfavorably to the existing psychedelic scene, arguing that true spiritual exploration required more than just sensory stimulation. Others criticized the project's name as pretentious and misleading. Some found the underlying technology mildly interesting, comparing it to brainwave entrainment, but ultimately dismissed the project as a gimmick. A few commenters offered constructive criticism, suggesting improvements like incorporating biofeedback and personalized content. Overall, the reception was skeptical, with many expressing doubt about the project's ability to deliver on its ambitious claims.
The Hacker News post titled "Mystical" links to a project called Mystical, described on its homepage as a "programming language that blends declarative and imperative paradigms with an emphasis on liveness and interactivity." The comments section contains several interesting discussions about the language and its features.
One commenter expresses excitement about Mystical's approach to reactive programming, pointing out that it seems to offer a more intuitive way to handle dynamic updates compared to traditional methods. They highlight the potential of "behaviors" in Mystical to simplify the development of interactive applications. Another commenter builds upon this, drawing parallels to other reactive programming libraries and frameworks, discussing their respective strengths and weaknesses, and speculating on how Mystical might fit into that landscape. They specifically mention the challenge of managing complexity in large reactive systems and wonder if Mystical offers any novel solutions in that regard.
There's a thread discussing the choice of Python as the target language for Mystical's compilation. Some commenters question the decision, citing performance concerns and arguing for a language with a smaller runtime. A counterpoint is raised that Python's vast ecosystem of libraries and tools makes it a pragmatic choice for a project like this, facilitating rapid prototyping and wider adoption. The original poster (OP) chimes in to clarify that Python was chosen for its ease of use and familiarity to a broader audience, acknowledging potential performance limitations but emphasizing the focus on exploring the language's core concepts. They also hint at the possibility of targeting other languages in the future.
A few comments delve into the specifics of Mystical's syntax and semantics, with one commenter suggesting an improvement to the way behaviors are defined. They propose a more concise notation that would reduce boilerplate code. Another commenter raises a question about the handling of circular dependencies between behaviors, a common challenge in reactive programming. The OP responds by outlining Mystical's approach to detecting and resolving such dependencies, highlighting the use of a dependency graph and a topological sorting algorithm.
Finally, there's a short discussion about the project's maturity and future direction. One commenter inquires about the current state of development and the OP confirms that the project is still in its early stages, encouraging contributions and feedback from the community. They mention planned features, such as improved debugging tools and support for more complex data structures. Another commenter expresses interest in using Mystical for a specific application and asks about the feasibility of integrating it with existing Python code. The OP responds positively, emphasizing the project's design goals of interoperability and extensibility.