TIP 317: Extend binary Ensemble with Binary Encodings

Author:         Pat Thoyts <[email protected]>
State:          Final
Type:           Project
Vote:           Done
Created:        03-May-2008
Keywords:       base64,uuencode,hex,transfer encoding
Tcl-Version:    8.6
Tcl-Ticket:     1956530


This TIP extends the binary command with implementations in C of commonly used binary encodings. In particular the base64 encoding is implemented but the Tcl ensemble scheme [112] can be used to provide simple extension of the implemented formats.


The binary command ensemble will be extended to include two new subcommands, encode and decode. Each subcommand will accept two arguments. The first is the name of an encoding format and the second is the data to be operated upon.

binary encode format ?-option value ...? data

binary decode format ?-option value ...? data

In keeping with the nature of the binary command, the data argument is treated as a byte array. This means that users should ensure their data is already in a suitable character encoding before applying a binary encoding. This is already a requirement for other implementations of this functionality (e.g. the tcllib and Trf packages).

The initial set of binary encodings consists of base64, uuencode and hex. The implementation of the encode and decode subcommands will make use of the Tcl ensemble command mechanism ([112]) and will therefore be extensible via the ensemble mechanism.

Reference Implementation

A patch against the Tcl HEAD (8.6) is located at http://sf.net/tracker/?func=detail&aid=1956530&group\_id=10894&atid=310894


This document has been placed in the public domain.