Pony (programming language): Difference between revisions

Content deleted Content added
Restoring what I think is probably the best previous version on which to base this new attempt.
Removed references to Rust and Go. Other minor changes/updates.
Line 7:
{{Infobox programming language
| name = Pony
| paradigm = [[Actor model]], [[Imperative programming|Imperative]]
| designer = Sylvan Clebsch
| influenced by = [[E (programming language)|E]], [[Rust (programming language)|Rust]]
| influenced = {{URL|https://www.gitbook.com/book/stw/the-encore-programming-language/details|Encore}}, [[Project Verona]]<ref>{{cite web |title=Verona FAQ |url=https://github.com/microsoft/verona/blob/master/docs/faq.md |website=Github}}</ref>, [https://github.com/savi-lang/savi Savi], [https://inko-lang.org/ Inko]
| latest_release_version = 0.1558.05
| latest_release_date = {{start date and age|20172024|0806|0701}}
| typing = [[strong typing|strong]], [[static typing|static]], [[type inference|inferred]], [[structural typing|structural]]
| website = {{URL|http://www.ponylang.org}}
Line 20:
}}
 
'''Pony''' (often referred to as '''ponylangPonylang''') is a [[Free software|free]] and [[open-source|open source]], object-oriented, [[actor_model|actor model]], [[Capability-based_security|capabilities-secure]], high performance programming language. Pony blends together the [[Race condition|race-free]] guarantees of the [[Rust (programming language)|Rust]] programming language, static typing, generics, traits, and the structural typing so well used by the [[Go (programming language)|Go]] programming language. Its reference capabilities<ref>{{cite web | url=http://dl.acm.org/citation.cfm?id=2824816 |title=Deny capabilities for safe, fast actors |authors=Sylvan Clebsch, Sophia Drossopoulou, Sebastian Blessing, Andy McNeil |date=2015-10-26}}</ref> system allows developers to be explicit about how data is shared among components and actors, visually indicating what can and cannot be read from or written to.
 
This allows Pony to reside somewhere between the strict rules of [[Rust (programming language)|Rust]]'s borrow checker and [[Go (programming language)|Go]]'s flexible structural typing while still being able to make race-free and data sharing guarantees.
 
==History==
In 2011, Sylvan Clebsch created a C-based actor library in order to solve some real problems for software he was creating. Ultimately this library became the first implementation of Pony in 2012.
 
==Language design==
Line 31 ⟶ 26:
 
* Type Safe - Pony is a ''very'' type safe language. For more details on why, check out the mathematical proof<ref>https://www.ponylang.org/media/papers/fast-cheap.pdf</ref>
* Memory Safe - There are no dangling pointers and no buffer overruns. LikeThere Rust,is Ponyno doesnull notbut evenoptional allowtypes thecan conceptbe ofrepresented nullusing unions with the None type.
* Exception-Safe -There are no runtime exceptions. All exceptions have defined semantics, and they are always caught.
* Data-race Free - Pony does not have locks or atomic operations. Instead, the type system ensures at compile time that your concurrent program can never have data races. This allows developers to write highly concurrent code with less change of problems occurring in the use of concurrency primitives.
Line 52 ⟶ 47:
 
There are no global variables in Pony, everything must be contained within an instance of a class or an actor. As such, even the environment that allows for printing to '''stdout''' is passed as a parameter.
 
==History==
In 2011, Sylvan Clebsch created a C-based actor library in order to solve some real problems for software he was creating. Ultimately this library became the first implementation of Pony in 2012.
 
==References==