aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LICENSE4
-rw-r--r--README167
-rwxr-xr-xconfigure.ac2
3 files changed, 78 insertions, 95 deletions
diff --git a/LICENSE b/LICENSE
index 5dfe8c4..d5b9ecb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -10,6 +10,10 @@ under following license:
* Copyright 2008 Andrew Lunn <andrew@lunn.ch>
* Copyright 2008 Duane Ellis <openocd@duaneellis.com>
* Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>
+ * Copyright 2008 Steve Bennett <steveb@workware.net.au>
+ * Copyright 2009 Nico Coesel <ncoesel@dealogic.nl>
+ * Copyright 2009 Zachary T Welch zw@superlucidity.net
+ * Copyright 2009 David Brownell
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
diff --git a/README b/README
index 0b4979a..8acacc4 100644
--- a/README
+++ b/README
@@ -1,4 +1,5 @@
The Jim Interpreter
+
A small-footprint implementation of the Tcl programming language.
--------------------------------------------------------------------------------
@@ -6,14 +7,14 @@ WHAT IS JIM?
--------------------------------------------------------------------------------
Jim is a small footprint implementation of the Tcl programming language
-written from scratch. Currently it's a work in progress, but already
-capable to run non-trivial scripts (see the benchmark.tcl file for
-an example). There are many Tcl core commands not implemented, but the
-language itself offers already interesting features like {expand} and
-[dict], that are features that will appear on Tcl8.5, [lambda] with
-garbage collection, and a general GC/references system to build linked
-data structure with automatic memory management. Arrays in Jim are
-not collection of variables, but instead syntax sugar for [dict]tionaries.
+written from scratch. Currently Jim Tcl is very feature complete with
+an extensive test suite (see the tests directory).
+There are some Tcl commands and features which are not implemented
+(and likely never will be), including namespaces, traces and Tk. However
+Jim Tcl offers a number of both Tcl8.5 and Tcl8.6 features ({*}, dict, lassign,
+tailcall and optional UTF-8 support) and some unique features.
+These unique features include [lambda] with garbage collection, a general GC/references
+system, arrays as syntax sugar for [dict]tionaries, object-based I/O and more.
Other common features of the Tcl programming language are present, like
the "everything is a string" behaviour, implemented internally as
@@ -26,7 +27,7 @@ WHEN JIM CAN BE USEFUL?
1) If you are writing an application, and want to make it scriptable, with
Jim you have a way to do it that does not require to link your application
-with a big system. You can just put jim.c and jim.h files in your project
+with a big system. You can include the Jim source directly in your project
and use the Jim API to write the glue code that makes your application
scriptable in Jim, with the following advantages:
@@ -35,8 +36,8 @@ scriptable in Jim, with the following advantages:
the availability of documentation, books, web resources, ...
(for example check my online Tcl book at http://www.invece.org/tclwise)
-- Jim is simple, 10k lines of code. If you want to adapt it you can hack
- the source code to feet the needs of your application. It makes you
+- Jim is simple, 14k lines of core code. If you want to adapt it you can hack
+ the source code to meet the needs of your application. It makes you
able to have scripting for default, and avoid external dependences.
Having scripting support *inside*, and in a way that a given version
@@ -68,11 +69,10 @@ scriptable in Jim, with the following advantages:
- Because of the Tcl semantic (pass by value, everything is a command
since there are no reserved words), there is a nice API to glue
- your application with Jim. See under the 'docs' directory to find
- examples and documentation about it.
+ your application with Jim. See under the Jim Tcl manual for more detail.
-- Jim is supported. If you need commercial software, contact the author
- writing an email to 'antirez@gmail.com'.
+- Jim is supported. If you need commercial software, contact the original author
+ at 'antirez@gmail.com' or the current maintainer at 'steveb@workware.net.au'.
2) The other "field" where Jim can be useful is obviously embedded systems.
@@ -87,21 +87,15 @@ scriptable in Jim, with the following advantages:
HOW BIG IS IT?
--------------------------------------------------------------------------------
-Jim compiled with -Os is 85k currently. Still it lacks core commands
-that will make it a little bigger, but not too much... only what's
-strictly required will end inside the core, the rest will be implemented
-as extensions.
-
-Note that the actual Jim core is much smaller, if you strip away commands.
-If you can do without [expr] (that's big about code size), and some
-other command you may probably end with a 40k executable.
+Jim with the default extensions configured and compiled with -Os is about 130k.
+Without any extensions, it is about 85k.
--------------------------------------------------------------------------------
HOW FAST IS IT?
--------------------------------------------------------------------------------
Jim is in most code faster than Tcl7.6p2 (latest 7.x version),
-and slower than Tcl 8.4.x. You can expect pretty decent performances
+and slower than Tcl 8.4.x. You can expect pretty decent performance
for such a little interpreter.
If you want a more precise measure, there is 'bench.tcl' inside this
@@ -112,7 +106,7 @@ it with both the interpreters and see what you get :)
HOW TO COMPILE
--------------------------------------------------------------------------------
-Jim was tested under Linux, FreeBSD, MacosX, Windows XP (mingw, MVC).
+Jim was tested under Linux, FreeBSD, MacosX, eCos, QNX, Windows XP (mingw, MVC).
To compile jim itself try:
@@ -123,87 +117,72 @@ To compile jim itself try:
EXTENSIONS
--------------------------------------------------------------------------------
-POSIX
-=====
-
-This is the start of a library that should export to Jim useful bits of the
-POSIX API. For now there are just a few utility functions, but it's
-an example on how to write a simple library for Jim.
-
-WIN32
-=====
-
-This is the start of a library that should export to Jim useful bits of the
-WIN32 API. Currently there is just one function that is used to call windows
-applications. For example run jim and try the extension with:
-
- package require win32
- win32.shellexecute open notepad
-
-You should see a notepad application running.
-
-ANSI-I/O, SQLITE
-================
-
-There is documentation under the "doc" directory about the "ANSI I/O"
-and "SQLITE" extensions.
+Many optional extensions are included. Some are C extensions and others are pure Tcl.
+Form more information, try:
-SDL
-===
+ ./configure --help
-The SDL extension is currently undocumented (work in progress), but
-there is enough to start to play. That's an example script:
-
- package require sdl
-
- set xres 800
- set yres 800
- set s [sdl.screen $xres $yres]
+--------------------------------------------------------------------------------
+HOW TO EMBED JIM INTO APPLICATIONS
+--------------------------------------------------------------------------------
- set i 0
- while 1 {
- set x1 [rand $xres]
- set y1 [rand $yres]
- set x2 [rand $xres]
- set y2 [rand $yres]
- set rad [rand 40]
- set r [rand 256]
- set g [rand 256]
- set b [rand 256]
- $s fcircle $x1 $y1 $rad $r $g $b 200
- incr i
- if {$i > 2000} {$s flip}
- if {$i == 3000} exit
- }
+See the "examples.api" directory
--------------------------------------------------------------------------------
-HOW TO EMBED JIM INTO APPLICATIONS / HOW TO WRITE EXTENSIONS FOR JIM
+HOW TO WRITE EXTENSIONS FOR JIM
--------------------------------------------------------------------------------
-See the documentation under the "doc" directory (work in progress).
+See the extensions shipped with Jim, jim-readline.c, jim-clock.c, glob.tcl and oo.tcl
--------------------------------------------------------------------------------
COPYRIGHT and LICENSE
--------------------------------------------------------------------------------
-Copyright (C) 2005 Salvatore Sanfilippo
-All Rights Reserved
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- A copy of the license is also included in the source distribution
- of Jim, as a TXT file name called LICENSE.
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
+Unless explicitly stated, all files within Jim repository are released
+under following license:
+
+/* Jim - A small embeddable Tcl interpreter
+ *
+ * Copyright 2005 Salvatore Sanfilippo <antirez@invece.org>
+ * Copyright 2005 Clemens Hintze <c.hintze@gmx.net>
+ * Copyright 2005 patthoyts - Pat Thoyts <patthoyts@users.sf.net>
+ * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com
+ * Copyright 2008 Andrew Lunn <andrew@lunn.ch>
+ * Copyright 2008 Duane Ellis <openocd@duaneellis.com>
+ * Copyright 2008 Uwe Klein <uklein@klein-messgeraete.de>
+ * Copyright 2008 Steve Bennett <steveb@workware.net.au>
+ * Copyright 2009 Nico Coesel <ncoesel@dealogic.nl>
+ * Copyright 2009 Zachary T Welch zw@superlucidity.net
+ * Copyright 2009 David Brownell
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE JIM TCL PROJECT ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * JIM TCL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation
+ * are those of the authors and should not be interpreted as representing
+ * official policies, either expressed or implied, of the Jim Tcl Project.
+ */
--------------------------------------------------------------------------------
HISTORY
--------------------------------------------------------------------------------
diff --git a/configure.ac b/configure.ac
index 0948caf..79a1731 100755
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
-AC_INIT([jim], [0.64], [steveb@workware.net.au])
+AC_INIT([jim], [0.71], [steveb@workware.net.au])
AC_CONFIG_HEADER(jimautoconf.h)
# Checks for programs.