Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
E (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Computational model== In E, all values are [[Object-oriented programming|objects]] and computation is performed by sending messages to objects. Each object belongs to a ''vat'' (analogous to a [[process (computing)|process]]). Each vat has a single thread of execution, a stack frame, and an event queue. [[Distributed programming]] is just a matter of sending messages to remote objects (objects in other vats). All communication with remote parties is [[encryption|encrypted]] by the E runtime. Arriving messages are placed into the vat's event queue; the vat's event loop processes the incoming messages one by one in order of arrival. E has two ways to send messages: an ''immediate call'' and an ''eventual send''. An immediate call is just like a typical function or method call in a non-concurrent language: a sender waits until a receiver finishes and returns a value. An eventual send sends a message while producing a placeholder for a result called a [[Promise (programming)|promise]]. A sender proceeds immediately with the promise. Later, when a receiver finishes and yields a result, the promise resolves to a result. Since only eventual sends are allowed when communicating with remote objects, [[Deadlock (computer science)|deadlock]]s cannot happen. In distributed systems, the promise mechanism also minimizes delays caused by network latency.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)