Crystal (programming language)
Page Module:Infobox/styles.css has no content.
| Crystal | |
|---|---|
| Lua error in package.lua at line 80: module 'Module:InfoboxImage/data' not found. | |
| Paradigm | Multi-paradigm: object-oriented, concurrent |
| Designed by | Ary Borenszweig, Juan Wajnerman, Brian Cardiff |
| Developer | Manas Technology Solutions |
| First appeared | June 19, 2014[1] |
| Template:Infobox software/simple | |
| Typing discipline | static, inferred, nominal, duck |
| Implementation language | Ruby (2011- 2013), Crystal (2013 - present) |
| Platform | IA-32 (i386), x86-64, AArch64[2] |
| OS | Linux, macOS, FreeBSD, OpenBSD, Windows[2] |
| License | Apache License 2.0 |
| Filename extensions | .cr |
| Website | Template:Official url |
| Influenced by | |
| Ruby, Go[3] | |
Crystal is a high-level general-purpose, object-oriented programming language, designed and developed by Ary Borenszweig, Juan Wajnerman, Brian Cardiff and more than 530 contributors.[4] With syntax inspired by the language Ruby,[5] it is a compiled language with static type-checking, but specifying the types of variables or method arguments is generally unneeded. Types are resolved by an advanced global type inference algorithm.[6][7] Crystal is currently in active development. It is released as free and open-source software under the Apache License version 2.0.
History
Work on the language began in June 2011,[8] with the aim of merging the elegance and productivity of Ruby with the speed, efficiency, and type safety of a compiled language.[9][8] Initially named Joy, it was quickly renamed to Crystal.[8]
The Crystal compiler was first written in Ruby, but later rewritten in Crystal, thus becoming self-hosting, as of November 2013[update].[10] The first official version was released in June 2014.[11] In July 2016, Crystal joined the TIOBE index.
Description
Although resembling the Ruby language in syntax, Crystal compiles to much more efficient native code using an LLVM backend, at the cost of precluding the dynamic aspects of Ruby. The advanced global type inference used by the Crystal compiler, combined with union types, gives it more the feel of a higher-level scripting language than many other comparable programming languages. It has automated garbage collection and offers a Boehm collector. Crystal possesses a macro system and supports generics as well as method and operator overloading. Its concurrency model is inspired by communicating sequential processes (CSP) and implements lightweight fibers and channels (for interfiber communication), inspired by Go.[3]
Adoption
In 2020, it was reported that the infotainment units in vehicles produced by Nikola Corporation were written in Crystal.[12] Much of the backend of the Kagi search engine is written with Crystal.[13]
Further reading
Page Template:Refbegin/styles.css has no content.
- Page Module:Citation/CS1/styles.css has no content.St. Laurent, Simon; Balbaert, Ivo (February 1, 2019), Programming Crystal (P1.0 ed.), Pragmatic Bookshelf, ISBN 978-1-68050-286-2
- Page Module:Citation/CS1/styles.css has no content.Dietrich, George; Bernal, Guilherme (May 27, 2022), Crystal Programming, Packt Publishing, ISBN 978-1801818674
- Page Module:Citation/CS1/styles.css has no content.Wartala, Ramon (March 2016), "Die Ruby-artige Programmiersprache Crystal" [The Ruby-like programming language Crystal], Linux Magazin (in Deutsch), no. 3/2016, ISSN 1432-640X
References
Page Template:Reflist/styles.css has no content.
- ^ Page Module:Citation/CS1/styles.css has no content."Crystal 0.1.0 released!". crystal-lang. 19 June 2014.
- ^ a b Page Module:Citation/CS1/styles.css has no content."Crystal Platform Support". crystal-lang.org.
- ^ a b Page Module:Citation/CS1/styles.css has no content."Crystal multithreading support". 23 February 2024.
- ^ Page Module:Citation/CS1/styles.css has no content."Contributors". Retrieved July 25, 2019 – via GitHub.
- ^ Page Module:Citation/CS1/styles.css has no content.Borenszweig, Ary (June 16, 2016). "Crystal 0.18.0 released!". crystal-lang.org.
- ^ Page Module:Citation/CS1/styles.css has no content.Brian J., Cardiff (September 9, 2013). "Type inference part 1". crystal-lang.org.
- ^ Page Module:Citation/CS1/styles.css has no content."Programming with Crystal: 'A language for humans and computers'". devm.io. July 3, 2023.
- ^ a b c Page Module:Citation/CS1/styles.css has no content.David, María Inti (April 1, 2016). "The story behind #CrystalLang". manas.tech.
- ^ Page Module:Citation/CS1/styles.css has no content.Hsieh, Adler (September 20, 2015). "Why Crystal programming language?". adlerhsieh.com.
- ^ Page Module:Citation/CS1/styles.css has no content.Borenszweig, Ary (November 14, 2013). "Good bye Ruby Thursday". crystal-lang.org.
- ^ Page Module:Citation/CS1/styles.css has no content.Borenszweig, Ary (June 19, 2014). "Crystal 0.1.0 released!". crystal-lang.org.
- ^ Page Module:Citation/CS1/styles.css has no content.Pettinati, Martin (11 February 2020). "Nikola Motor Company: Crystal powered dashboards on the trucks of the future | Manas.Tech". Manas Technology Solutions.
- ^ Page Module:Citation/CS1/styles.css has no content."Zac Nowicki – Tales from Kagi | CrystalConf 2023". 13 November 2023.