message system
description of the messaging
messages:
messages are usually passed from objects via connections in a top to bottom order. objects with several message outlets should serve the outlets from right to left. most of the time, messages are executed in the realtime thread of the pnpd interpreter. in this case, messages are guaranteed to be executed at the same logical time. from the beginning to the end, unless they are rescheduled or detached to a low-priority thread.
message-types & atoms:
there are the following message types:
- bang
- trigger message, passing no information. it's atom representation is
#None - float
- 64 bit floating point number. big enough to represent integer number up to about 1e+15 exactly.
- int
- exact integer of arbitraty precision, slow but no size limitation
- symbol
- hashed series of characters to represent a word. this should be used for message selectors, because passing symbols is as fast as passing pointers. textural representation:
`symbol - string
- utf8 encoded string. slower than symbols, but unlike symbols, they are allowed to contain white spaces. textural representation:
"this is a string" - list
- lists contain a nonnegative number of atoms. nested and empty lists are allowed. textural representation:
[1 2 [3 4 5]] - pointer
- pointer are can be used to add custom data types to the interpreter
