%|||% &|Areas | ''Tcl Objects, functional programming'' |& &|Good if student knows | ''C'' |& &|Priority | ''Low'' |& &|Difficulty | ''Hard''|& &|Benefits to the student | ''Learn about fundamental concepts like functional programming, data types and memory management'' |& &|Benefits to Tcl | ''Significant leverage of existing Tcl Object design features'' |& &|Mentor | ''?'' |& **Project Description** [Feather] is an old package of Tcl extensions whose ambition was to enhance the the ways Tcl Objects could be used and extended: ====== One of the major complaints raised against Tcl by advocates of other scripting languages such as Python, Lisp and Perl is that it has very few data structures. Feather is the remedy. Feather is a set of extensions which not only pro- vides lots of new data types, it also provides frame- works into which new data types can be easily in- serted. ====== The author intended to offer it for incorporation into the core, but it was never finished: ====== here is a selection of the things which need doing to it and with it. • Work with Scriptics to integrate some of the Feather stuff into the Tcl core. • Finish off the existing container types, and cre- ate new ones such as matrices. • Define new interfaces such as a numeric one for use by [expr]. • Serialisation of objects in both binary and ascii format. • Create yet more object oriented systems using the Feather concepts. • Try and define a mechanism to allow one object to be wrapped around another. • Garbage collector to clean up reference loops created by mutable objects. • Create some new types to provide efficient com- munication between threaded interpreters. ====== The goals of this project would be to: * examine the existing Feather code base. * determine which extensions if any are still usable with modern versions of Tcl. * make fixes and enhancements as suggested above and as deemed appropriate. * Evaluate which if any code may be worth incorporating into the Tcl core. * Make a new release of extensions brought into fully usable condition. **References** <> **Comments & Discussion** <> <>GSoC