@@ -4316,73 +4316,28 @@ fine-grained control is desired over the output format of a Rust crate.
4316
4316
4317
4317
* TODO* .
4318
4318
4319
- # Appendix: Influences and further references
4320
-
4321
- ## Influences
4322
-
4323
- > The essential problem that must be solved in making a fault-tolerant
4324
- > software system is therefore that of fault-isolation. Different programmers
4325
- > will write different modules, some modules will be correct, others will have
4326
- > errors. We do not want the errors in one module to adversely affect the
4327
- > behaviour of a module which does not have any errors.
4328
- >
4329
- > &mdash ; Joe Armstrong
4330
-
4331
- > In our approach, all data is private to some process, and processes can
4332
- > only communicate through communications channels. * Security* , as used
4333
- > in this paper, is the property which guarantees that processes in a system
4334
- > cannot affect each other except by explicit communication.
4335
- >
4336
- > When security is absent, nothing which can be proven about a single module
4337
- > in isolation can be guaranteed to hold when that module is embedded in a
4338
- > system [ ...]
4339
- >
4340
- > &mdash ; Robert Strom and Shaula Yemini
4341
-
4342
- > Concurrent and applicative programming complement each other. The
4343
- > ability to send messages on channels provides I/O without side effects,
4344
- > while the avoidance of shared data helps keep concurrent processes from
4345
- > colliding.
4346
- >
4347
- > &mdash ; Rob Pike
4348
-
4349
- Rust is not a particularly original language. It may however appear unusual by
4350
- contemporary standards, as its design elements are drawn from a number of
4351
- "historical" languages that have, with a few exceptions, fallen out of favour.
4352
- Five prominent lineages contribute the most, though their influences have come
4353
- and gone during the course of Rust's development:
4354
-
4355
- * The NIL (1981) and Hermes (1990) family. These languages were developed by
4356
- Robert Strom, Shaula Yemini, David Bacon and others in their group at IBM
4357
- Watson Research Center (Yorktown Heights, NY, USA).
4358
-
4359
- * The Erlang (1987) language, developed by Joe Armstrong, Robert Virding, Claes
4360
- Wikströ ; m, Mike Williams and others in their group at the Ericsson Computer
4361
- Science Laboratory (Ä ; lvsjö ; , Stockholm, Sweden) .
4362
-
4363
- * The Sather (1990) language, developed by Stephen Omohundro, Chu-Cheow Lim,
4364
- Heinz Schmidt and others in their group at The International Computer
4365
- Science Institute of the University of California, Berkeley (Berkeley, CA,
4366
- USA).
4367
-
4368
- * The Newsqueak (1988), Alef (1995), and Limbo (1996) family. These
4369
- languages were developed by Rob Pike, Phil Winterbottom, Sean Dorward and
4370
- others in their group at Bell Labs Computing Sciences Research Center
4371
- (Murray Hill, NJ, USA).
4372
-
4373
- * The Napier (1985) and Napier88 (1988) family. These languages were
4374
- developed by Malcolm Atkinson, Ron Morrison and others in their group at
4375
- the University of St. Andrews (St. Andrews, Fife, UK).
4376
-
4377
- Additional specific influences can be seen from the following languages:
4378
-
4379
- * The structural algebraic types and compilation manager of SML.
4380
- * The attribute and assembly systems of C#.
4381
- * The references and deterministic destructor system of C++.
4382
- * The memory region systems of the ML Kit and Cyclone.
4383
- * The typeclass system of Haskell.
4384
- * The lexical identifier rule of Python.
4385
- * The block syntax of Ruby.
4319
+ # Appendix: Influences
4320
+
4321
+ Rust is not a particularly original language, with design elements coming from
4322
+ a wide range of sources. Some of these are listed below (including elements
4323
+ that have since been removed):
4324
+
4325
+ * SML, OCaml: algebraic datatypes, pattern matching, type inference,
4326
+ semicolon statement separation
4327
+ * C++: references, RAII, smart pointers, move semantics, monomorphisation,
4328
+ memory model
4329
+ * ML Kit, Cyclone: region based memory management
4330
+ * Haskell (GHC): typeclasses, type families
4331
+ * Newsqueak, Alef, Limbo: channels, concurrency
4332
+ * Erlang: message passing, task failure, ~~ linked task failure~~ ,
4333
+ ~~ lightweight concurrency~~
4334
+ * Swift: optional bindings
4335
+ * Scheme: hygienic macros
4336
+ * C#: attributes
4337
+ * Ruby: ~~ block syntax~~
4338
+ * NIL, Hermes: ~~ typestate~~
4339
+ * [ Unicode Annex #31 ] ( http://www.unicode.org/reports/tr31/ ) : identifier and
4340
+ pattern syntax
4386
4341
4387
4342
[ ffi ] : guide-ffi.html
4388
4343
[ plugin ] : guide-plugin.html
0 commit comments