The predicates in this section provide fast binary I/O of arbitrary 
Prolog terms, including cyclic terms and terms holding attributed 
variables. Library library(fastrw) is a SICSTus/Ciao 
compatible library that extends the core primitives described below.
The binary representation the same as used by PL_record_external(). 
The use of these primitives instead of using write_canonical/2 
has advantages and disadvantages. Below are the main considerations:
- Using write_canonical/2 
allows or exchange of terms with other Prolog systems. The format is 
stable and, as it is text based, it can be inspected and corrected.
 
- Using the binary format improves the performance roughly 3 times.
 
- The size of both representations is comparable.
 
- The binary format can deal with cycles, sharing and attributes. 
Special precautions are needed to transfer such terms using write_canonical/2. 
See term_factorized/3 
and copy_term/3.
 
- In the current version, reading the binary format has only 
incomplete consistency checks. This implies a user must be able to trust 
the source as crafted messages may compromise the reading Prolog 
system.
 
- fast_term_serialized(?Term, 
?String)
 - (De-)serialize Term to/from String.
 
- fast_write(+Output, 
+Term)
 - Write Term using the fast serialization format to the
Output stream. Output must be a binary 
stream.
 
- fast_read(+Input, 
-Term)
 - Read Term using the fast serialization format from the
Input stream. Input must be a binary 
stream.bugThe predicate fast_read/2 
may crash on arbitrary input.