본문으로 바로가기

XOTcl 1.6.8

category Tcl & Tk/확장 패키지 (Extension Package) 2025. 9. 5. 21:26

홈페이지: https://media.wu.ac.at/index.html

 

XOTcl(XOTcl, 발음은 이그조틱클)은 MIT의 OTcl을 기반으로 한 객체 지향 스크립트 언어로, 여러 가지 새로운 개념을 추가했습니다. 원래 XOTcl은 디자인 패턴의 구현을 지원하는 언어를 개발하기 위해 만들어졌으며, 디자인 패턴을 런타임에 추가하거나 제거할 수 있습니다. 이러한 새로운 언어는 다양한 응용 분야에 매우 유연하게 활용될 수 있었으며, 모듈식으로 독립적인 개념들을 조합하거나 동적으로 변경이 필요한 경우에 특히 유용합니다.

 

XOTcl (XOTcl, pronounced exotickle) is an object-oriented scripting language based on MIT's OTcl and adds several novel concepts. Originally, XOTcl was intended to develop language support for the implementation of design patterns, were design patterns can be added or removed at runtime. These new language proved to be highly flexible for w wide range of applications, where a moduluar composition of orthogonal concepts and/or dynamic changes are desired.

XOTcl의 동기

Tcl과 같은 스크립트 언어는 컴포넌트들을 연결(glueing)하는 데 적합하도록 설계되었으며, 동적 확장성(dynamic extensibility), 동적 타입(dynamic typing) 및 자동 변환(automatic conversion)과 같은 기능을 제공하여 빠른 애플리케이션 개발에 매우 적합합니다.

 

Scripting languages, like Tcl, are designed for glueing components together, provide features like dynamic extensibility and dynamic typing with automatic conversion, that make them well suited for rapid application development.

XOTcl의 기본 객체 시스템은 OTcl에서 채택되었습니다. 이 객체 시스템을 통해 객체, 클래스, 메타클래스를 정의할 수 있습니다. 클래스는 다른 객체를 관리하는 특수한 객체입니다. “관리한다”는 것은 클래스가 자신의 인스턴스 생성과 소멸을 제어하고, 인스턴스들이 접근할 수 있는 메서드 저장소(repository)를 포함한다는 의미입니다. 모든 객체는 객체별로 고유한 메서드로 확장될 수 있습니다. XOTcl은 단일 상속(single inheritance)과 다중 상속(multiple inheritance)을 지원합니다. 클래스 및 슈퍼클래스 관계를 포함한 XOTcl의 모든 관계는 완전히 동적이며, 분석(introspection)이 가능합니다. 명시적으로 호출할 메서드 이름을 지정하지 않고 메서드 체이닝(method chaining)을 통해, 메서드 이름 결정의 모호함이 방지됩니다. 이 방식으로 가려진(shadowed) 메서드도 현재 메서드 실행에 “혼합(mixed into)”될 수 있습니다.

 

The basic object system of XOTcl is adopted from OTcl. The object system enables us to define objects, classes, and meta-classes. Classes are special objects with the purpose of managing other objects. ``Managing'' means that a class controls the creation and destruction of its instances and that it contains a repository of methods accessible for the instances. Every object may be enhanced with object-specific methods. XOTcl supports single and multiple inheritance. All relationships in XOTcl, including class and superclass relationships, are completely dynamic and can be introspected. Through method chaining without explicit naming of the intended method, ambiguities in name resolution of methods are avoided. This way a shadowed method can be ``mixed into'' the execution of the current method.

Example

 Object counter

 counter set count 0

 counter proc add { val } {
  my set count [expr [my set count]  + $val] 
 } 

 counter proc decr { val } {
  my set count [expr [my set count] - $val]
 }

 counter add 3
 counter decr 1

Change Log

2014-04-29 <Gustaf.Neumann@wu-wien.ac.at>
* Release of XOTcl 1.6.8

2014-04-29 <Gustaf.Neumann@wu-wien.ac.at>
* some more cleanup of autoconf (more quoting, remove obsolete file, use recent install-sh)
* try to stick closer to current tcl conventions

2014-04-29 <stefan.sobernig@wu-wien.ac.at>
* unix/tclAppInit.c: Fix one more compiler warning: undeclared Xotcl_Init()
* Removing configure artifact, otherwise lintian complains
* Makefile.in: LDFLAGS must be referenced differently under TEA
* fixed "make install" problem, fix build problem for xowish

2014-04-28 <stefan.sobernig@wu-wien.ac.at>
* library/xml/TclExpat-1.1/xmltok_impl.c: fix for CVE-2009-3720

2014-04-25 <Gustaf.Neumann@wu-wien.ac.at>
* follow modern autoconf conventions
* configure.a: use TEA 3.9
* use new tcl.m4
* Makefile.in: remove hard-coded "-rdynamic" from build of xotclsh
and xowish
* generic/xotclTrace.c: remove obsolete test

2014-04-24 <stefan.sobernig@wu-wien.ac.at>
* Makefile.in: Make sure that xotclsh + xowish are explicitly linked
against libtclstub*.so, rather than libtcl*.so. Otherwise, building
with --with-xotclsh + --with-xowish fails starting with 8.6 (which
effectively hides the various stub structures in libtcl*.so).
* AppInit.c: Use the stubbed variant of Tcl_Init().
* Tested under 8.6 (fossil trunk as of commit date) and 8.5 (fossil
core-8-5-branch as of commit date).
Thanks to Sergei Golovan (Debian Tcl/Tk Package Maintainers) for
reporting the issue and an initial patch (see Debian bug #724816).

2013-07-16 <Gustaf.Neumann@wu-wien.ac.at>
* library/actiweb/HttpPlace.xotcl: add URL query variables as
arguments

2013-06-23 <Gustaf.Neumann@wu-wien.ac.at>
* make version management simpler and freeze XOTcl 1.* versions In
order to avoid bad interactions between XOTcl 1.0 and XOTcl 2.0
the version dependency in 1.0 where changed to "package require
-exact ... 1.0" where possible, and the provides where upgraded to
1.0 in most cases
* make sure that packages from XOTcl 1 require XOTcl 1
* generic/xotcl.c: code cleanup

2013-03-26 <Gustaf.Neumann@wu-wien.ac.at>
* doc/langRef.xotcl: update documentation

2012-10-13 <Gustaf.Neumann@wu-wien.ac.at>
* Make sure to NS_EXPORT Ns_ModuleVersion for people using still
the old-style aolserver module.

2012-01-16 <Gustaf.Neumann@wu-wien.ac.at>
* xotcl.c Extend backport of handling of dashes in XOTcl's
configure method to perform a more eager search for command
begins. Extended regression test

2012-01-14 <Gustaf.Neumann@wu-wien.ac.at>
* xotcl.c Don't overwrite error messages from __unknown handler in
several situations (superclass, parameter class, mixin class)

2012-01-12 <Gustaf.Neumann@wu-wien.ac.at>
* xotcl.c Backport from nsf: when processing arguments with
leading dashes in "configure", accept only method names without
spaces. This solves a problem with Tcl8.4 + ns_eval where the
output of the serializer could not be processed by eval (a [list
..] was lost).

2011-12-22 <Gustaf.Neumann@wu-wien.ac.at>
* Httpd: force GMT dates as required by RFC

2011-11-12 <Gustaf.Neumann@wu-wien.ac.at>
* Removed obsolete CVS-$Ids
* Updated dates of Copyrights
* Removed unneeded c++ hints for Emacs

xotcl-1.6.8.tar.gz
1.47MB
tutorial.pdf
0.26MB
langRef-xotcl.pdf
0.26MB

'Tcl & Tk > 확장 패키지 (Extension Package)' 카테고리의 다른 글

TclOO 1.0.4  (0) 2025.09.05
tDOM 0.9.6  (0) 2025.09.02
Tclcsv 2.4.3  (0) 2025.09.02
Tablelist 7.7  (0) 2025.09.02
tksvg 0.14  (0) 2025.09.02