Jump to content

Draft:Cuis Smalltalk

From Wikipedia, the free encyclopedia

Cuis Smalltalk
Cuis Smalltalk IDE
ParadigmObject-oriented, Class-based, reflective
DeveloperCuis Community, project lead: Juan Vuletich
First appeared2004; 20 years ago (2004)
Stable release
7.0 / May 31, 2024; 5 months ago (2024-05-31)
Preview release
Typing disciplineDuck, dynamic, strong typing
Implementation languageSmalltalk
PlatformMultiplatform
OSWindows, Linux, MacOS, others
LicenseMIT license
Websitecuis.st
Influenced by
Smalltalk (Squeak Pharo)
Influenced
Squeak Pharo "Haver".

Cuis is an open source, multiplatform, Smalltalk-80 system.

Introduction

[edit]

Cuis Smalltalk implements a full IDE with many tools for live, reflective Metaprogramming, code refactoring, unit testing, test-driven development, and performance profiling, with syntax highlighting and command-line completion.

Cuis adheres closely to Dan Ingalls' Design Principles Behind Smalltalk.[1]. For example, Personal Mastery states that “If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual”. Thus, Cuis began as a project to reduce the size of the Squeak 3.7 development image, by removing non-essential dependencies, simplifying its design, and improving the Morphic Direct manipulation interface[2].

Notable Features

[edit]

The Cuis learning strategy is to have a small kernel of code for a user to master and then to be able to learn and understand each added feature by using tools to look at the code differences each feature implements. Maintaining a small core is aided by a composition strategy of packaged features which specify their requirements. These requirements are checked transitively when packages are loaded and any missing but required packages are automatically loaded in the proper order [3][4].

Cuis graphic rendering is unusual in that it does not rely on external libraries like Cairo or FreeType but instead implements its own antialiased rendering engine written in Smalltalk which uses a sampling algorithm based on Digital Signal Processing [5]

The Morphic graphical user interface has been reengineered to render antialiased scalable vector graphics [6] with zoomable graphic elements [7].

TrueType fonts are supported, also implemented and rendered in Smalltalk.

Unicode is used for all text strings and symbols [8], again without reliance on external libraries.

The continual pruning of any unneeded code in the base development image, even as new features were added, has led over time to a significant divergence from siblings Squeak and Pharo, a measure of which is the number of classes in the base development image. A comparison of Smalltalk implementations sharing the OpenSmalltalk virtual machine[9]: Cuis 7.0 (675 Classes), Squeak 6.0 (2832 Classes), Pharo 11.0 (9986 Classes) .

Usage

[edit]
  • Computer Algebra [11]
  • Music composition, processing, performance, and analysis [12]
  • Rich Text Editing with Styles [13]
  • Arithmetic with measures and units [15]

Education

[edit]

Extensions

[edit]
  • Haver On Cuis: A Cuis based Smalltalk with Namespaces and Modules [21]

History

[edit]
Version Release date Major features
Cuis 0 September, 2004 Etoys code removed from Morphic UI
Cuis 1.0 April 26, 2007 High Quality Fonts (later adapted by Squeak & Pharo)
Cuis 2.0 Jan 4, 2010 BlockClosures
Cuis 3.0 January 14, 2011 Modern Themes; Simplified UI Layout Algorithm
Cuis 4.0 April 21, 2012 Name Completion; Syntax Highlighting; Named Features as Code Packages autoload with requirements checking
Cuis 5.0 November 11, 2016 Support original and new 32 bit and 64 bit object image formats
Cuis 6.0 December 31, 2021 TrueType Fonts, Zoomeable Morphic UI, SVG Morphs, VectorGraphics Engine, All text now Unicode (UTF-8)
Cuis 7.0 May 31, 2024 New release process. Stable Releases. Dynamic Compiled Libraries, Bootstrap of minimal images. Immediate Unicode Characters

See also

[edit]
[edit]

References

[edit]
  1. ^ Ingalls, Dan (August 1981). "Design Principles Behind Smalltalk".
  2. ^ Vuletich, Juan. "A Short History of Cuis". GitHub.
  3. ^ Fernandes, Hilaire; Dickey, Ken; Vuletich, Juan (February 16, 2023). "The Cuis Book".
  4. ^ "The Cuis Book" (PDF). GitHub.
  5. ^ Vuletich, Juan. "Prefiltering Antialiasing for General Vector Graphics".
  6. ^ Vuletich, Juan. "Vector Graphics In Cuis Smalltalk" (PDF). GitHub.
  7. ^ Vuletich, Juan. "The Smalltalk With Zoomable Vector Graphics" (PDF). GitHub.
  8. ^ Vuletich, Juan. "Unicode support in Cuis Smalltalk".
  9. ^ Miranda, Eliot; Béra, Clément; Gonzalez Boix, Elisa; Ingalls, Dan (2018). "Two decades of smalltalk VM development: live VM development through simulation tools". Proceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages (PDF). ACM Digital Library. pp. 57–66. doi:10.1145/3281287.3281295. ISBN 9781450360715. S2CID 53116661. Archived (PDF) from the original on October 9, 2022. Retrieved November 9, 2020.
  10. ^ Fernandes, Hilaire. "Workshop: Develop end user GUI application with Cuis".
  11. ^ Notarfrancesco, Luciano. "Arrows: a Computer Algebra System in Smalltalk".
  12. ^ Pope, Stephen. "Siren music framework". GitHub.
  13. ^ Pieber, Bernhard. "StyledTextEditor - Rich Text Editing with Style". GitHub.
  14. ^ Notarfrancesco, Luciano. "Ray Tracer". GitHub.
  15. ^ Wilkinson, Hernán; Prieto, Máximo; Rome, Luciano (2005). "Arithmetic with measurements on dynamically-typed object-oriented languages". Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications. pp. 292–300. doi:10.1145/1094855.1094964. ISBN 1-59593-193-7. S2CID 5999157.
  16. ^ "Cuis University". GitHub.
  17. ^ Garbezza (2020), Nahuel. "Mejorando el ambiente de programación Cuis Smalltalk con refactorings esenciales" (PDF).{{cite web}}: CS1 maint: numeric names: authors list (link)
  18. ^ Balboa, Fernando. "Implementación de refactorings automáticos en lenguajes con LiveTyping" (PDF).
  19. ^ Wilkinson, Hernan (April 2019). VM support for live typing: automatic type annotation for dynamically typed languages. pp. 1–3. doi:10.1145/3328433.3328443. ISBN 978-1-4503-6257-3. S2CID 201666445.
  20. ^ Fuentes, Gerardo. "Análisis de la evolución del aprendizaje y uso de TDD" (PDF).
  21. ^ "Haver: Cuis with namespaces and modules".