While the implementation is mostly transparent, there are some 
important and subtle differences that must be taken into consideration:
- TIPC broadcast now requires an initialization step in order to 
launch the broadcast listener daemon. See tipc_initialize/0.
- Prolog's broadcast_request/1 is 
nondet. It sends the request, then evaluates the replies synchronously, 
backtracking as needed until a satisfactory reply is received. The 
remaining potential replies are not evaluated. This is not so when TIPC 
is involved.
- A TIPC broadcast/1 is completely 
asynchronous.
- A TIPC broadcast_request/1 is 
partially synchronous. A
broadcast_request/1 is sent, then the 
sender balks for a period of time (default: 250 ms) while the replies 
are collected. Any reply that is received after this period is silently 
discarded. An optional second argument is provided so that a sender may 
specify more (or less) time for replies.
- Replies are no longer collected using findall/3. 
Replies are presented to the user as a choice point on arrival, until 
the broadcast request timer finally expires. This change allows traffic 
to propagate through the system faster and provides the requestor with 
the opportunity to terminate a broadcast request early if desired, by 
simply cutting choice points.
- Please beware that broadcast request transactions will now remain 
active and resources consumed until broadcast_request finally fails on 
backtracking, an uncaught exception occurs, or until choice points are 
cut. Failure to properly manage this will likely result in chronic 
exhaustion of TIPC sockets.
- If a listener is connected to a generator that always succeeds (e.g. 
a random number generator), then the broadcast request will never 
terminate and trouble is bound to ensue.
- broadcast_request/1 with TIPC scope is not 
reentrant (at least, not now anyway). If a listener performs a broadcast_request/1 
with TIPC scope recursively, then disaster looms certain. This caveat 
does not apply to a TIPC scoped broadcast/1, 
which can safely be performed from a listener context.
- TIPC's capacity is not infinite. While TIPC can tolerate substantial 
bursts of activity, it is designed for short bursts of small messages. 
It can tolerate several thousand replies in response to a broadcast_request/1 
without trouble, but it will begin to encounter congestion beyond that. 
And in congested conditions, things will start to become unreliable as 
TIPC begins prioritizing and/or discarding traffic.
- A TIPC broadcast_request/1 term that 
is grounded is considered to be a broadcast only. No replies are 
collected unless the there is at least one unbound variable to unify.
- A TIPC broadcast/1 always succeeds, 
even if there are no listeners.
- A TIPC broadcast_request/1 that 
receives no replies will fail.
- Replies may be coming from many different places in the network (or 
none at all). No ordering of replies is implied.
- Prolog terms are sent to others after first converting them to atoms 
using term_to_atom/2. Passing real numbers 
this way may result in a substantial truncation of precision. See prolog 
flag option,’float_format’, of current_prolog_flag/2.
- [nondet]tipc_host_to_address(?Service, 
?Address)
- locates a TIPC service by name. Service is an atom or 
grounded term representing the common name of the service. Address 
is a TIPC address structure. A server may advertise its services by name 
by including the fact, tipc:host_to_address(+Service, +Address), 
somewhere in its source. This predicate can also be used to perform 
reverse searches. That is it will also resolve an Address to 
a
Service name. The search is zone-wide. Locating a service 
however, does not imply that the service is actually reachable from any 
particular node within the zone.
- [semidet]tipc_initialize
- See tipc:tipc_initialize/0