Evolane is pleased to announce first public release of eTcl for Windows
Mobile, our Tcl/Tk port to Windows Mobile (2003 or better) ARM devices.
Binaries can be found at:
http://www.evolane.com/software/etcl/index.html
WHAT IS IT
==========
eTcl is a "batteries-included", thread enabled Tcl/Tk runtime, available
as a single standalone executable for Linux, Win32 (x86 and ARM) and now
Windows Mobile 2003 (or better) (tested on both standard and phone edition).
Distributions for all architecture include a common set of core components:
- Tcl/Tk 8.4.12 (thread enabled)
- Pixane: script your image transformation, support for reading and
writing several popular image formats (PNG, JPEG), support for TrueType
fonts, several truetype builtin fonts (serif, sansserif and monotype)
- Sqlite: A SQL server in your hand.
- Zlib: native deflate/inflate support
- Zipfs: easily Mount your ZIP files into Tcl Virtual Filesystem
- TclThread: run multi-threaded applications
ETcl for Windows Mobile is available for download as a Cabinet file
(which also contains few demos), a Win32 automatic installer (same
content as cabinet, requires activesync), a ZIP archive, and executable
only (ready to run, only need to be copied to device).
Executable is pretty large (3M), but includes lot of optionnal features,
including a large (approx. 900kB) set of builtins TrueType fonts for
Pixane engine. A stripped down version may be made available in a near
future.
Documentation (especially for wce package, i.e. windows mobile specific
native extensions) is not yet complete, but will be published soon on
our site. Please send all comments and bug reports to <support at
evolane.com>.
FEATURES
========
Generic eTcl features (all platforms):
- Unobstrusive executable. No registry to set, no external dependencies.
- Standalone executable. Tcl and Tk scripts packed into executable
(using ZIP based VFS). No installation required, only need to copy
executable wherever you want on device.
- Based on latest (8.4.12) Tcl/Tk version.
- Thread-enabled
Windows Mobile specific features:
- Optimized startup time.
- Optimized for XScale devices
- Faster Arc/Chord/Pie emulation, improved for ARM architecture (based
on an integer only algorithm, since ARM has no FPU)
- Efficient WSAAsyncSelect() emulation. Sockets, and fileevents on
sockets, should be fully functionnal (in both client and server modes)
- Support for native menu
- Improved native look and feel.
- Windows Mobile specific extension: manage SIP, change (X) button
action (closing vs. minimizing),...
- Correct handling of mouse (actually touchscreen) events
- Support for intercepting hotkeys (calendar, notes, etc...)
- Embedded console, supports for automatically setting file associations.
Eric Hassold
Evolane - http://www.evolane.com/
Your web page has a did link for the license.
Is it being released under a BSD license or something else?
Link fixed, license added.
Since this is a binary only release, and until we make some (or all) of
our own codes available (still need some documentation, and clean up of
the build process to make them standalone open source components), we
had no real concern about applying any kind of restriction to it.
Our intention was only (in plain english) to:
- make this executable available to the community
- not promise that this software works, but of course do our best to
make it useful and usable ;-)
- let others use it for whatever they want, except pretending that
they wrote it, or distributing it to others without let us know.
So we ended-up adding a license similar to the ActiveTcl one. If anyone
has any concern about it, please let us know, we are definately opened
to most kind of modification.
>From [info commands] I see there is [evoboot], but it has no visible
effects.
I have copied the ppc exe onto my HTM magician PDA/phone, and it shows
no evident problems. Well, one: the console window is full-screen, so
when the virtual keyboard is up, I can't see what goes on in the lower
third of the screen.
Actually (and unfortunatly), there is much more missing on Evolane site!
As mentionned in previous post, we still need to write much of the
documentation, to package and make available our own sources, and site
need to be deeply updated. But we decided to make this binary
(pre)release available anyway, since community comments is a good way to
make this solution live.
>>From [info commands] I see there is [evoboot], but it has no visible
> effects.
It is the core of our VFS support, to "ROMify" Tcl/Tk scripts into
executable. It is used at startup to mount a VFS containing tcl_library
and tk_library images. To test how it works, you may try:
1% evoboot /afakedir
2% glob /afakedir/*
/afakedir/tcl8.4 /afakedir/tk8.4
> I have copied the ppc exe onto my HTM magician PDA/phone, and it shows
> no evident problems. Well, one: the console window is full-screen, so
> when the virtual keyboard is up, I can't see what goes on in the lower
> third of the screen.
There is a wce module (package require wce) which allow to perform some
native functions, specific to PocketPC OS. Among others, there is a "wce
sipinfo" subcommand, which gives information about current SIP state,
and can be used to get notified of any visibility change. But code for
console embedded in this distribution shares code with others (Linux and
Win32) versions, and doesn't yet take benefit of it.
More generally, code still need some fixes, and yes, you are right (and
I already mentionned it), documentation is really missing. However, we
are planning for next release soon, which hopefully will include missing
part. Making an intiial release available as soon as possible was, I
believe, a good way to let others submit as many suggestions, comments
and bugs as possible (anyone testing our socket implementation would be
strongly appreciated).
Eric
Is there some special step required for that? Right now, I can source
my PPC-enabled scripts, but as they all use a Tk window, I can't see
them :^)
Should have mentionned it, Toplevel is iconified at startup, so
wm deiconify .
is required.
Deciding to default to a toplevel window in minimized state may be
subject to questions, and may change. This was mainly done to:
- let the user have access to console until it decides explicitely to
let toplevel window (partially or totally) hide it.
- allow writing non-graphical applications, with no visible window, like
e.g. a httpd daemon (like we did), while using only a single executable
(hence the name "eTcl", not "eTk").
Maybe should I set a different behaviour if eTcl is run in console
moden, or to run a user application.
Another useful fonction available is "::etc::autofit ." (or any other
toplevel window instead of .), which will make this toplevel looks like
a usual Windows Mobile window (fullscreen, (X) at top right, true native
system menu is any attached to toplevel, etc...) It is actually a small
helper based on wce module (code below). Here again, it prooves that
documentation must be written ASAP ;-)
BTW, if you installed from CAB or Windows Installer, there is a couple
of small tests applications installed, which may be useful for now to
understand some of the available extensions, and how to use them to have
applications run with a full native look and feel.
Eric Hassold
Evolane - http://www.evolane.com/
=====
proc ::etcl::autofit {w} {
package present Tk
package require wce
set toplevel [winfo toplevel $w]
set screenw [winfo screenwidth $w]
set screenh [winfo screenheight $w]
# Get window position when zoomed (give information on top menu)
$toplevel configure -borderwidth 0 -highlightthickness 0
set oldstate [wm state $toplevel]
wm state $toplevel zoomed
update
set left [winfo x $toplevel]
set top [winfo y $toplevel]
# Restore initial state
wm state $toplevel $oldstate
update
# Take SIP/menubar size into account
set width [expr {$screenw-2*$left}]
set height [expr {$screenh-$top}]
incr height [expr {-[wce menuheight]-1}]
wm geometry $toplevel "${width}x${height}+${left}+${top}"
return
}
This is the first working socket I see on a PocketPC. Now, I expect
interesting experiments will follow, as I can be wireless online via
wsp :-)
My impression on the first day of using eTcl is that it's the best Tcl
port on Pocket PC I've seen so far.
Best regards, Richard Suchenwirth
I've used eTcl on My iPAQ hx2490(Windows Mobile 5.0).
I could run my some favorite scripts.
eTcl is Cool!
but I installed eTcl by .cab file,
Who know how to relate of .tcl extension to eTcl.
Do I need a registry editor? :-)
---
Satoshi Imai from japan.
When will the sources be available? I would like to contribute.
Since Richard is not the only wishing having several Tcl installations
in parallel (maybe several eTcl versions in the future ;-) ), we decided
to make the installation process (cab and win32 installer) fully
unobstrusive, not enforcing any update in the registries without letting
the user decide it.
So, as mentionned previously, Menu Options->Associate is the way to go
for those who decide that eTcl is their favorite Tcl engine, to
associate to their .tcl/.tk scripts. Same philosophy applies to eTcl for
Win32, which may then live side by side with other Tcl distrib, e.g.
ActiveTcl, without interfering.
Quick answer:
Hopefully soon, together with some documentation, for next release. And
contributors will be welcome, thanks!
Details:
Actually, eTcl can be split into several components, and some sources
may need some more work before public release. Namely:
- Tcl/Tk core: since eTcl port to Windows Mobile is heavily based on
emulations layers, patch to Tcl/Tk core is very very small (10k for Tcl,
40k for Tk), and mainly consists in some #ifdef UNDER_CE here and there.
Ready for being made available. Ideally, they would end up in official
sources.
- Emulation layer: a library emulating Win32 functionalities missing in
Windows Mobile (Arc drawing, sockets, some string ops, etc...). This is
an internal component of our up to now commercial products, so need some
clean up and documentation for public release.
- WCE package: nothing special in it, here to expose some WinCE C API to
Tcl. Sources ready to be released.
- Evolane custom extensions (Pixane, EvoBoot) : already exist as
independant projects, they are common to all architecture. We are
currently working on web site, which was frozen for the last 3 years.
Once, done, they will have their own pages, bugs tracking, SVN
repositories browser, etc...
- Build process (including compiling 3rd party extensions): we believe
this is actually one of the most important part of our effort (eTcl is
first of all a binary release of Tcl/Tk, credits for sources goes to
Tcl/Tk team first of all). it is derived from a much larger framework,
called evocomp, allowing us to generate and maintain automatic
cross-compiling envs or a large set of architecture (linux-uclibc (x86,
x86_64, arm, mips), mingw, windows mobile, ...). Up to now, this has
been a closed component, for which we were offering commercial support.
We need to investigate more to see if it is feasable to isolate a
subset of it and release it open source.
So, to sum up, we will make most of sources (patches to Tcl/Tk core,
libraries) available very soon, once a public developers corner may be
up and ready, but some more work need to be done for some part, and
since we are a small company, time is sometimes missing.
I am trying to put eTcl on Microsoft Pocket PC HP IPAQ 3850 with
processor ARM SA1110. Is this platform supported to run eTcl ..
Also when i try to run iboce-0.3-setup.exe it says "is not a valid
Pocket PC application"
The OS version is Microsoft Pocket PC Version 3.0.11171 (Build 11178)
Thanks in advance
Andy
Sorry, but as mentionned in post title, this eTcl port is for Windows
Mobile 2003 or better, that is OS version >= 4.20 (while I find the
message "not a valid Pocket PC executable pretty strange).
We used to maintain binaries for older PocketPC devices (we still have
some iPaq 36xx series around here for testing), but there are many major
differences between pre-4.2 and post-4.2:
- poor network stack, until Winsock2 support was introduced in WM2003
- poor Posix function support, which used to make us spend more time on
the emulation layer than on Tcl itself
- last but not least, Microsoft support implies using a different
toochain for those envs, making the build process an hassle.
Because of all those major differences, we had to take the decision to
no more support older OS and focus on 4.2+ about one year ago.
Theoretically, it should be possible to just re-compile our port for
those architecture, using evc3 instead of evc4 or better, and everything
but sockets (Windows Mobile 2003 introduced Winsock2 support, which has
much better support for proper async handling of sockets) or maybe
native menus should work fine. But this would represent a non-marginal,
time consuming job, which would (and used to) slow down our work on the
WM2003+ port. So, unfortunatly, sorry, but there is no plan to support
back those targets in a near future.
About iBoce, please take care, this is a old, unmaintained, and
***pretty dangerous*** tool, which used to be useful for us to have
dual-os support on old ipaq. If you don't have a strong knowledge on
Linux on PDA, do not try to run it (it will erase all of your iBoce data
in RAM, and may under bad circunstances or usage turn your PDA into a
brick). You may consider using CYACE instead, which should be documented
on http://www.handhelds.org/. Tcl is much less dangerous! ;)
Best regards.
Eric