This document provides some notes on the open source release of Kermit 95 (called C-Kermit for Windows in the current and previous releases) and some of my plans for it.
The latest release is up on the Kermit Project website, and the
latest source code is available on github. You contact myself (David Goodwin) and Frank da Cruz by emailing ckw@kermitproject.org.
Jump to: New in Beta 6 | Plans for Beta 7 | Progress Updates (dailyish) | Ideas for Future Releases
| kermitproject.org | Github
Last updated: Monday, 09-Sep-2024 15:56:49 NZST
UPDATE
C-Kermit for Windows 10.0 BETA 6 is now available from The Kermit Project Website and Github.
This beta fixes a large number (>1,000) of build warnings which may be visible as improved stability and fewer bugs. Also new are the latet versions of OpenSSL (3.0.14), zlib (1.3.1), C-Kermit (10.0 beta.11)
and the almost newest versions of libssh (0.10.6 - a new version, 0.11.0, came out as this release was being prepared). Proper binaries for NT 3.51/4.0 on Alpha, PowerPC and MIPS are also now provided along with
the usual selection of bug fixes and minor enhancements. For more details see What's New in C-Kermit for Windows Beta 6
This will also be the last release going by the "C-Kermit for Windows" name. The next release will be called Kermit 95 version 3.0 beta 7 or K95 for short.
Kermit 95 is the original name for this program and many websites and users still continue to use the Kermit 95 name. As the reasons for the rebrand back in 2013 no longer apply, the decision has been made to switch back.
It is hoped this will reduce confusion in the future as Kermit 95 will likely be seeing more frequent releases than C-Kermit on other platforms to keep up with evolving security standards and Windows features.
At the moment my goals are: Fix the stuff thats broken or missing since Kermit 95 and generally get it working nicely on modern Windows (I want to use it instead of PuTTY), while also maintaining and even extending
support for vintage windows systems (I want to use it instead of HyperTerm). Releases now contain as many as twelve(!) builds to support different CPU Architectures (x86, x86-64, ARM, ARM64, Itanium, Alpha, MIPS and PowerPC)
on Windows versions going all the way back to NT 3.50 from September 1994.
New in Beta 6
Beta 6, released 11 August 2024, brings a selection of new features, enhancements and bug fixes. See What's New in Beta 6 for a nice tidy
list, or the old unordered list that used to be here.
Plans for beta 7
Subject to change based on available free time and what I feel like working on. Stuff that is done is above the line, stuff to do is below it.
- #96 - Unsupported SSH commands are now hidden
- #175 - The SSH subsystem can now live in a DLL thats loaded at runtime allowing other non-libssh backends to be supported. The appropriate backend
(GSSAPI or no GSSAPI, Windows XP or not Windows XP) is now loaded automatically
- #288 - Fixed fopen crashing in builds for modern systems. This appears to be a result of changes in the C Runtime so may not have impacted all users
- #290 - Fixed hitting backspace in an empty search-in-buffer crashing K95
- #74 - Local and remote port forwarding over SSH
- #73 - X11 forwarding over SSH
- #293 - Fixed trying to run invalid commands in a PTY causing a crash
- #256 - Fixed modem support not being available on NT 3.50
- #247 - Change application name and version to Kermit 95 version 3.0 beta 7
- #286 - Update the K95 User manual for version 3.0
Updates
Progress to the seventh windows beta, in New Zealand time (UTC+13). Updates are a little bit less than daily at the moment due to other commitments.
- 8-SEP-2024 For the past week or so I've been attempting to document all of the control sequences implemented by Kermit 95s ANSI-like
terminal emulations in a similar manner to the XTerm documentation. Turning thousands of lines of C into thousands of lines of HTML has
turned out to be a pretty massive job, but a first draft is almost done.
- 28-AUG-2024
- Fixed #293 - running invalid commands in a PTY causes a crash
- Fixed #256 - you can now dial modems on NT 3.50
- Added the new commands SSH REMOVE { LOCAL, REMOTE } to remove individual port forwards
- Further checking and revising upf the K95 manual
- 27-AUG-2024 Finished of X11 forwarding (except for set ssh xauth-location - K95 2.1.3 never actually ran xauth when
configured to do so, so I won't bother to for now either)
- 26-AUG-2024 Started looking into X11 forwarding.
- 25-AUG-2024 Finished up support for SSH port forwarding!
- 24-AUG-2024 Further work on SSH direct port forwarding - its almost working! I can load webpages through it, but sometimes a
new connection seems to stall/not work.
- 23-AUG-2024
- Continued revising the K95 manual
- ctrl2cap.vxd will now be included in builds targeting Windows 9x again. I found where it originally came from and its souce code and
the license doesn't forbid redistribution
- Started working on SSH direct port forwarding
- 22-AUG-2024 Continued revising the K95 manual
- 21-AUG-2024
- Continued revising the K95 manual
- Re-did the re-branding of the dialer as somehow window sizes got messed up. The usability of the Zinc Designer is not good!
- 20-AUG-2024 Wrote a Kermit script to dates and version numbers in the K95 manual to match the version of K95 thats running the script
so these don't have to be manually updated for each release, and also update last modified dates where they occur to match the date of the
last git commit that modified that file
- 19-AUG-2024
- Confirmed that setmode itself works fine, it just really doesn't like O_SEQUENTIAL for some reason. Kind of smells like a bug
in the C Runtime, or perhaps O_SEQUENTIAL is being removed. Looks like you can set this cache hint when opening the file (mode "S")
which seems to work fine (or at least not crash) so that appears to fix the bug.
- Fixed hitting backspace in an empty search-in-buffer crashing
- 18-AUG-2024 More investigating the fopen crash bug. It appears to be caused by setting the O_SEQUENTIAL mode on the file
(a windows-specific hint to the cache manager). There seems to be some inconsistency about whether O_SEQUENTIAL is defined or not, but
regardless of whether it is, passing it to setmode casues a crash.
- 17-AUG-2024
- Merged in multi-SSH-backend support (#175)
- Finished the work to rename C-Kermit for Windows back to Kermit 95. The changes aren't merged in to the made codebase yet though.
- Spent some time investigating why fopen is crashing in Beta 6
- 16-AUG-2024 Sorted out CI building of multiple SSH backends for platforms where it makes sense
- 12-AUG-2024 Continued documentation updates. I've pulled NEWBUGS.TXT into K95BUGS.HTML and added any bugs that are still open (either due
to never being fixed, or being fixed in code that was never open-sourced) to github. I've also added bugs logged in github that affect K95 2.1.3
(bugs that weren't new to 3.0 due to all the changes) to K95BUGS.HTML
- 11-AUG-2024
- Documentation Updates
- Merged in the final C-Kermit 10.0 Beta.11 code
- Ran final test build with all supported x86 compilers
- Tagged the Beta 6 release and ran the beta6 release builds for all platforms. Beta 6 is done!
- 10-AUG-2024 Documentation updates
- 9-AUG-2024 Documentation updates
- 8-AUG-2024 Fixed paging for "help options all" where argument help contains linebreaks. Also spent some time revising the K95 manual
- 6-AUG-2024 Ran test builds on MIPS (in an emulator) to confirm everything still builds there.
- 5-AUG-2024 Ran test builds on Alpha and PowerPC Windows NT to confirm everything is still building and working there. Checked over
the change log and wrote a draft of the release notes. Goal is for Beta 6 this week.
- 4-AUG-2024
- Finally overcame a tricky bug on Windows XP and Server 2003 which would cause K95 to crash when making an SSH connection when using an
SSH backend DLL.
- K95 now automatically loads the right SSH backend based on available dependencies (eg, Kerberos) and OS (Windows XP). No more renaming
DLL files if you want to use Kerberos or Windows XP.
- Gave the currently loaded SSH backend DLL control over over a few of the "set ssh" keyword tables. These are all for ciphers and other
things that will be specific to a given SSH implementation and will need updating from time to time based on libssh updates.
- Various SSH commands and options are now disabled and hidden unless the currently loaded SSH backend claims it supports those features
- Most of the commands and options affected are ones that the current SSH backend based on libssh does not currently support and
likely never will - instead of outright removing them as originally planned, now they'll just be disabled unless some future
SSH backend comes along wanting to use them
- This means that if a future SSH backend wanted to, for example, support SSH V1 it just needs to report that capability
to K95 and all the various SSH V1 commands and options will be made available again.
- 30-JUL-2024 Continued work on DLLification of the SSH code. set ssh, set network type ssh, skermit and all
ssh commands except for a new ssh load command are disabled unless K95 managed to load an SSH DLL on startup. The new
ssh load command is only available when no SSH DLL is loaded. It allows the user to specify a DLL to try and load to enable SSH
features
- 29-JUL-2024 Continued work on DLLification of the SSH code. Its being done as an additional build option:
- No SSH support at all - this is what Windows NT, 9x, 2000, and OS/2 currently get (SSHBUILTIN not defined)
- LibSSH SSH support - if libssh isn't available/won't load then K95 won't run. Only Windows XP and newer can support this, and Windows XP will
probably become incompatible in the not too distant future (I'm already having to patch libssh to make it work on XP for beta 6). (SSHBUILTIN defined)
- new: Generic SSH DLL support - ssh commands are only available if a compatible ssh DLL can be loaded. The existing libssh integration
bits will be built as a DLL for Windows XP or newer. Users could supply their own non-libssh DLLs to use instead, including on OS/2 or
Windows NT/9x/2000 where libssh won't run. (SSHBUILTIN and SSH_DLL defined)
- 28-JUL-2024 Started work on being able to load the SSH backend at runtime rather than having it compiled into the application. Currently
the user has to choose between two different DLLs (one kerberos-enabled, one not), and in beta 6 there will be a second copy of both of those
DLLs for Windows XP users. Being able to load the DLL at runtime, when complete, should bring the following benefits:
- K95 will be able to automatically try loading a few SSH DLLs one after another until a compatible one is found. This saves the user having to
move around or rename DLLs as they currently do.
- K95 will still be able to start and run even if loading of a SSH dll fails - the various SSH commands will just be disabled
- Alternative SSH backends could be developed, possibly by 3rd parties. Someone might want to try extracting the SSH implementation from PuTTY
and wrapping it up in a DLL to provide Windows 9x/NT builds of K95 with SSH support, or try building a compatible SSH DLL for OS/2
This work won't appear in beta 6 even if its done in time for the release - due to the scale of the change I'd prefer to give it a bit more
testing myself and release it in beta 7 if its working well enough by then
- 26-JUL-2024 Upgraded to zlib 1.3.1
- 25-JUL-2024
- Fixed bug #187 - terminal area will not resize larger than the primary display, attempts to do so (eg, maximising K95G on a display that
is taller than the primary) just introduce white space around the edges
- #186 - increased the maximum number of terminal columns in K95G to 512, enough to fill a 4K display at a 10pt font. This change only
affects K95G on modern windows. The console version (K95.exe) remains limited to 256 columns at this time, and the enhancement has
been excluded from versions of K95G targeting vintage PCs which are more likely to be impacted by the additional 1MB of RAM this
change demands and less likely to have a display large enough to actually display that many columns.
- Further work revising the manual
- 24-JUL-2024 Started revising the manual
- 23-JUL-2024 Further rebranding work on a branch. Should have got everything but some of the documentation so far (changelog, ssh readme,
build instructions, etc)
- 17-JUL-2024 Confirmed that modem support (TAPI and direct/built-in) still works in both the 32bit and 64bit builds of CKW. This hasn't
been tested in any Kermit 95 builds since at least 2.1.3 so its good to confirm it still works. The actual testing was a bit involved as
I haven't had a landline in years and the old copper phone network is starting to be decomissioned nation-wide so soon no one will
have a landline. For testing purposes I've set up a small PBX and was able to dial between a 56k and a 28.8k modem reliably with one end
using a windows TAPI device and the other end controlling an external serial modem connected to another machine via RFC2217 Telnet Com-port-control.
- 15-JUL-2024 Did some initial rebranding work on a branch. No decision at this stage on which release the rebrand will appear in.
- 1-JUL-2024 "fixed" a Windows XP compatibility issue introduced with the new version of libssh. Windows XP users will from
now on have to swap out ssh.dll with a special version modified for windows XP. The SSH Readme included in the doc folder and as part of
the upcoming release has a section down the bottom with the details.
- 30-JUN-2024 and 29-JUN: Added ADDS Regent 25 emulation. Seems to be working,
but could do with more testing before it appears in a normal release.
Some test binaries are available here - choose the "regent25" terminal type. Please report any bugs encountered.
- 29-JUN-2024 Imported latest C-Kermit 10 code from Frank
- 26-JUN-2024 Added a DECRQCRA implementation
- 25-JUN-2024 Fixed some issues with Github CI
- 6-JUN-2024 Updated to OpenSSL 3.0.14
- 3-MAR-2024
- Fixed the 'show network' command claiming SSH isn't available
- Fixed the 'show network' command mentioning SSH V1 (which is no longer supported)
- Added the C-Kermit beta number and the Windows beta number to the About dialog (Help>>About)
- Bumped the windows beta to 6
- Fixed some CI build issues
- Started investigating the status of libssh on Windows XP: libssh 0.10.6, a security update, has introduced a dependency on Windows Vista.
I may look at building a patch to reverse this for a special Windows XP build of CKW
- 16-FEB-2024
- A selection of changes to the makefile and github actions CI workflow to handle the situation where we're cross-compiling
for an incompatbile target architecture (x86/x86-64 to arm/arm64/ia64/alpha64) where the version of wart generated won't run on
the host systems processor. This situation is now detected and building of wart skipped. In this situation you can either supply
a version of wart compatible with the host processor which will then be used in the build process (which is what Github Actions CI
does now - produces an x86 build of wart and uses it for the ARM/ARM64/IA64 builds), or just run wart yourself when necessary.
- Merged in the 2024-02-06 C-Kermit 10.0 Pre-beta.11 code
- 15-FEB-2024 wWork on merging in the latest C-Kermit pre-beta.11 code in a branch.
Cross-compiling for Itanium and ARM is currently failing due to the reintroduction of WART which is currently being built for the
target CPU architecture rather than that of the build host.
- 14-FEB-2024 Update changelog
- 13-FEB-2024 Upgrade to OpenSSL 3.0.13
- 8-JAN-2024 Upgrade to OpenSSL 3.0.12 and libssh 0.10.6
- 30-SEP-2023 Upgrade to OpenSSL 3.0.11
- 25-SEP-2023 Update compiler support documentation
- 21-SEP-2023 Corrections to the SSH readme
- 18-SEP-2023 Update changelog
- 17-SEP-2023 Merge in latest code from FdC
- 15-SEP-2023 Fixed another 64 warnings. K95.EXE, K95G.EXE and related bits now build with OpenWatcom generating only a small handful of
warnings - all of them are of either the "variable/label not referenced" or "unreachable code" kind. These are things that would either be
too messy to fix, or I'm not sure if they really are safe to fix. When built with older versions of Visual C++ there are still around 900
warnings such as "integral size mismatch in argument; conversion supplied" but I'll deal with them another day.
- 14-SEP-2023 Fixed another 44 warnings - just about done with K95G.EXE built with OpenWatcom. Also setup OpenVMS x86 for building C-Kermit
so I can be sure none of this warnings-fixing work is causing problems there. Linux is already checked automatically for build failures by
Github
- 13-SEP-2023
- Fixed an issue related to available SSH auth methods changing during authentication. In this case, keyboard-interactive
wasn't available until after a password was entered at which point it became required. This is now fixed
- SSH authentication methods are now attempted in the order specified by "set ssh v2 authentication" just as in Kermit 95 (previously
in CKW this list was simply treated as the available options with the order being fixed)
- 12-SEP-2023 Fixed another 23 warnings - only 57 to go
- 11-SEP-2023
- Fixed #227 - the SSH, SSL and Kerberos settings weren't visible in
the dialer when using 64bit C-Kermit due to the DLLs also being 64bit. The dialer tries to load the DLLs which failes in
this scenario due to the dialer still being 32bit. The SSH, SSL and Kerberos options are now permanently on whether support
is available or not - easier than trying to be smart and detect if the DLLs are there, especially given the OpenSSL DLLs
name tends to change with version now.
- Added a message to the end of the default k95custom.ini which will display when the console version (k95.exe) is run to direct
new users towards the GUI version (k95g.exe) instead
- Fixed another 29 compile warnings - only about 83 to go for k95g.exe!
- 9-SEP-2023
- Fixed the help text for "set gui window position" - this command actually is implemented and it works fine
- 4-SEP-2023
- The default k95custom.ini now checks for ssh support and the GUI before running those commands.
This should put an end to startup errors when using the console version or running a version
without SSH support
- Fixed C-Kermit not being able to find the dialer window if it wasn't launched by the dialer.
Turns out C-Kermit looks for it by window title so the re-branding broke it.
- 30-AUG-2023
- Fixed another 30 compile warnings. Still quite a few to go
Setup github to do automatically perform a linux build of the latest version of C-Kermit using the shared modules from C-Kermit for Windows.
This is just to check that any changes I make to files matching ck[on]*.* don't break anything on Linux.
- 29-AUG-2023 Another 86 warnings fixed in k95g.exe. The total so far is over 814.
- 28-AUG-2023 More compile warnings in k95g.exe fixed: 143
- 27-AUG-2023
- Setup IKSD on ftp2.zx.net.nz - now you can download Kermit via Kermit!
At the C-Kermit prompt, iksd /user:anonymous ftp2.zx.net.nz
- Added the iksdnt and kui build configs to CI. This is only to ensure affected code isn't accidentally
broken - there are no plans to ship these binaries at this time.
- 23-AUG-2023 Fixed another 53 compile warnings in k95g.exe
- 22-AUG-2023 Fixed another 185 compile warnings in k95g.exe - still lots more
- 21-AUG-2023 Fixed over 350 compile warnings in k95g.exe - many more remain
- 20-AUG-2023 Fixed some more makefile issues with OpenZinc and did a full build with Visual C++ 4.0 on the AlphaStation
- 19-AUG-2023 I have permission from Microsoft to use Visual C++ 4.0 RISC Edition and Visual C++ 6.0 Alpha Platform Edition!
- Setup the PowerPC machine, installed Visual C++ 4.0 and did a full build including OpenZinc and the dialer
- Setup a MIPS emulator, installed Visual C++ 4.0 and did a full build including OpenZinc and the dialer
- Setup the AlphaStation, installed Visual C++ 4.0 and 6.0, fixed some OpenZinc makefile issues and did a full build including OpenZinc and the dialer using Visual C++ 6.0
- 12-AUG-2023
- Added some scripts to make building OpenSSL and LibSSH a bit easier
- Upgraded to OpenSSL 3.0.10
- 11-AUG-2023 Upgraded to OpenSSL 1.1.1v
- 6-AUG-2023 Spent a few days fixing up my IBM RS/6000 43P-7248 and getting Windows NT installed on it (only ever ran AIX on it before).
Fixed issues building for PowerPC NT and added support for building the dialer (really OpenZinc) for PowerPC NT)
- 13-JUL-2023 Fixed bug #221 on Windows NT 3.51 and newer: directory listings now correctly
report sizes (and dates) for large files. The bug remains on NT 3.1/3.50.
- 5-JUL-2023 Updated this page: beta 5 is out now! Now working towards beta 6
- 4-JUL-2023 Produced release builds for CKW Beta 5, did some testing and then sent out the release
- 3-JUL-2023 Fixed some build issues on AXP and AXP64 with the NT 3.50 and January 2000 SDKs (plus oldnames.lib from Visual C++ 4.0)
- 2-JUL-2023
- Fixed the "show versions" command crashing in 64bit builds (it was a missing function prototype)
- Set unm_mch properly for systems running 64bit or ARM windows so that "Machine:" in the show features output doesn't come back as "unknown"
- Fixed the OS version string shown in the "show versions" command
- Set the most recent change date and set the version number to 10.0 for all Win32 modules that have been changed since Kermit 95 2.2 so the
"show versions" command doesn't claim these modules are old
- 1-JUL-2023
- Switched automated builds on github actions to use jom instead of nmake. Jom is an nmake clone that knows how to schedule jobs
across multiple CPUs (the equivalent of the -j option in GNU Make) significantly reducing build times on windows
- Updated the build documentation to cover jom
- Updated the screenshot on github to a recent build running on Windows 11
- Checked the changelog and created the "What's New in Beta 5" page
- Finalised the downloads readme page listing all the builds that will be available in beta 5, which versions of Windows and CPU architectures
they're for, and which features they lack
- 30-JUN-2023
- Merged in the latest C-Kermit Beta.10 development snapshot
- Created some Virtual Machines to test the upcoming release in
- 25-JUN-2023
- Upgraded to OpenSSL 1.1.1u as it works on all supported architectures (3.0.9 and 3.1.1 do too, but libssh gives a link error on x86-64 that requires further investigation)
- Documented ctl3d32.dll installation process for the dialer
- Documented the set browser command in k95custom.ini better to explain where the default browser setting comes from and why
- 24-JUN-2023
- Merged in the latest C-Kermit for UNIX changes - now tracking Beta.10
- Did some testing with new versions of OpenSSL (1.1.1u, 3.0.9, 3.1.1) and it looks like the build issues on ARM and IA64 have been fixed.
- Spent a little time trying out jom instead of nmake for running the automated CI builds
- 23-JUN-2023 Took a short break from new PC setup, and...
- Fixed building of cryptdll with Visual C++ 2002 (not sure how this ever worked if it did)
- All components can now be built with all versions of Visual C++ using jom
instead of nmake resulting in much reduced build times on multiprocessor
machines
- Made some improvements to the status line to prioritise showing the hostname
over the exittext (showing "Command: Alt-X" by default):
- If the maximum width for the exittext field has been increased from
20 columns to 30 to handle some longer key names properly. This
may reduce the width of the hostname field when \Kexit is mapped
to a sequence with a longer name.
- If the hostname is too long to fit in the available space, the exittext
field will be hidden and its space given to the hostname.
- The width of the hostname field now increases (or decreases) with the
width of the terminal
- Added a little extra padding between the exit text and hostname fields
when sufficient space is available
- 22-JUN-2023 I've taken a little break to sort out a new PC. Until now I was using either a late 2009 desktop (Core i7 860 "Lynnfield" quad core, 16GB RAM),
or a 2018 Thinkpad T470 laptop (Core i5 7200U "Kaby Lake-U" dual core mobile, 16GB RAM). The CPU in the laptop is a low-end low power part as I did not
buy it with software development in mind (it was bought to control a telescope so battery life was more important) so while a lot newer than the desktop it was
only very marginally faster. I assembled the new desktop (AMD Ryzen 7700X octa-core, 32GB RAM) yesterday and is now up and running Windows 11. I don't have most of my software
setup yet so that will be the job for the next few days. Build times are noitcably faster. A full build of CKW on my laptop took 2 minutes 32 seconds. On the desktop
with no other changes its down to 46 seconds. Switching the make tool from nmake to jom brings the full build time down to 9 seconds!
Development on CKW will probably resume properly next week once I've finished setting up the new PC.
- 14-JUN-2023 Added ctl3dins.exe back to the distribution, adjusted a table in the changelog so it converts to HTML properly, started work on the download
readme/index page: I think a new release of CKW is well overdue
- 13-JUN-2023 k95custom.ini is now distributed as k95custom.sample. This should prevent upgrading users from accidentally overwriting their customised k95custom.ini.
k95.ini will now automatically rename k95custom.sample to k95custom.ini if it can't find k95custom.ini in any of the usual places.
- 2-JUN-2023 Fixed incorrect colour and logfile defaults in the DEFAULT template the dialer automatically creates on first run. This bug was resulting in users
who use the dialer getting a green terminal background when they should have got blue (along with other messed up colours). This bug affected the dialer in Kermit 95
too though users would have only encountered it if they deleted C:\ProgramData\Kermit 95\dialinf.dat
- 30-MAY-2023
- Updated libssh to 0.10.5
- Updated the changelog to reflect whats coming in beta 5
- The "show features" command now shows if DECnet, SuperLAT and PTY are available or not as not all builds include these features
- 29-MAY-2023
- Enabled kerberos (GSSAPI) authentication for SSH. Seems to work well though the deployment side of things is a bit annoying. The kerberos-enabled
ssh.dll won't work unless MIT Kerberos for Windows is installed so we're probably going to have to distribute two ssh DLLs - one with kerberos and one without as
most users won't have or need Kerberos.
- Spent some time trying to find a telnet or ftp server to test CKWs built-in kerberos support against but I can't find anything. I will just have to assume
the built-in kerberos support still works
- 28-MAY-2023 Spent some time chasing down a crash when running 32bit CKW with kerberos. The crash is coming from inside the error_message function in comerr32.dll
from MIT Kerberos for Windows. This only seems to affect running 32bit CKW with 64bit KFW - using 32bit KFW appears to be fine. Maybe its a bug in the 32bit libs
packaged with 64bit KFW, or some issue with the way CKW is initialising kerberos (race condition perhaps).
- 27-MAY-2023
- Finally fixed build error in ck_crp.c when building k95crypt.dll with kerberos enabled
- Configured CI to build kerberiszed CKW for modern windows
- Started setting up a Kerberos test environment so I can confirm kerberos support in CKW actually works still
- 26-MAY-2023 Support for building with internal DES/CAST implementation instead of k95crypt.dll
- 21-MAY-2023 Fixed building of FTP GSSAPI support on Windows
- 20-MAY-2023 Further Kerberos work: It now builds with the latest version of Kerberos for WIndows (4.1) which is Kerberos V only. KFW 3.2.2 also builds fine
(that one supports Kerberos IV and V). Further work is still required to sort out a build error with the DES/CAST crypto DLL when Kerberos is enabled,
as well as figuring out how to build libssh with GSSAPI support, and setting up kerberos-enabled automatic CI builds. Plus I'm going to have to actually
setup a Kerberos environemnt to test all of this against!
- 19-MAY-2023 Spent some time getting Kerberos support building again. This is still using an ancient (though slightly less ancient) version of MIT Kerberos
for Windows. Goal right now is to get whats there building and working, then maybe upgrade to a current version of K4W. Kerberos support won't
appear in standard beta releases until a newer version is working.
- 18-MAY-2023 Tidied up and committed the AXP64 changes
- 17-MAY-2023 Got CKW building with the Alpha compiler in the January 2000 Platform SDK. This compiler is probably both the newest publicly released Windows
compiler for the DEC Alpha and the oldest publicly released 64bit compiler for Windows. So now CKW builds for 64bit Windows on the DEC Alpha, a version
of windows never publicly released by Microsoft (all public versions of NT for the Alpha were 32bit). So I've got 64bit Alpha CKW binaries that will
run on nothing at all! But it does at least confirm CKWs portability.
- 15-MAY-2023 Spent a bunch of time investigating IKSD on Windows and confirming it still works
- 14-MAY-2023 Merged in the final C-Kermit 10.0 Beta.09 code. Given how long its been since the last beta (almost 6 months!) its tempting to do another beta
release sooner rather than delaying until the terminal emulator enhancements I'm working on are ready. Perhaps I'll give it another week or two
and if the terminal emulator enhacements aren't close to ready then they can be delayed until beta 6.
- 13-MAY-2023 Finally got around to installing the new x86 version of OpenVMS so now I've got access to more than just Linux/UNIX systems to point CKW at
- 12-MAY-2023 Implemented a few more XTWINOPTS
- 11-MAY-2023 Investigated the remaining issue with DECERA: We're missing the DECSLRM and DECLRMM escape sequences which were new to the VT420. Looks
like there is no way to avoid implementing these too as a lot of software today makes use of it (when available) to significantly improve performance.
Due to the high difficulty of adding these I'll leave them until all the other "easy" tests are dealt with. Like XTWINOPS: One more of these has been
implemented.
- 10-MAY-2023
- DECRQCRA escape sequence isn't implemented correctly (yet) but it seems good enough to satisfy the tests for now. Still need to add a setting
to turn this escape on/off (for security)
- Reduced the risk of an out-of-bounds array access on SGR colour lookup
- Fixed some bugs in the VT420 DECERA escape (Erase Rectangle)
- Fixed DECERA being ignored when no parameters were supplied (should erase the entire screen)
- Fixed DECERA acting when given an invalid rec (should *probably* do nothing like xterm, need to get out the VT520 and confirm
this isn't xterm-specific behaviour)
- CKW now passes 225/552 tests (41%) - twice as many as before, and almost as many as iTerm2
- 9-MAY-2023: Worked on implementing enoguh of the DECRQCRA escape sequence to satisfy the automated tests which use it to peek at whats on screen
- 8-MAY-2023:
- Managed to get an "xterm" terminal type to appear in the UI (there are quite a few places that need updating). Compared to the "linux" terminal
type this passes an additional 8 tests, and fails two new ones. CKW is also responding to a lot more
escape sequences, though these are still failing (gone from "no response" to "incorrect response").
- 7-MAY-2023:
- Fixed receiving of CSI > Pm t - this xterm-specific escape sequence is now ignored rather than minimising the window
- Implemented xterm escape sequence CSI 1 8 ; Ps ; Ps t (get text area size in characters)
- Tested the CKW terminal emulator with esctest2. Initial results (using the "linux" terminal type): 113/552 (22%).
Supposedly xterm scores 93% and iTerm2 55%
- Started looking into whether it would be possible to provide an "xterm" emulation option. This may be worthwhile as a way of making more of CKWs
terminal emulation features (those that go beyond the VT220) available to modern linux hosts which don't know anything about CKW or its abilities.
At the moment telling CKW to emulate the Linux Console Terminal ("Linux") gives you at least colour and mouse interaction, but there are
still other features CKW supports that the Linux Console doesn't, along with extensions the Linux Console supports that CKW doesn't currently
implement or doesn't implement correctly (like the palette escape sequences). Of the terminals terminfo commonly knows about, CKW is probably
closer to (though still a fair distance from) xterm than anything else, and this aligns more with features likely to be added in the future
(eg, 256 colours). And today xterm tends to be what most newer software expects - few people are connecting to modern linux hosts with a VT220
or anything that specifically emulates one. Most people are connecting with xterm or something pretending to be xterm (PuTTY, iTerm2, the many
emulators that wrap VTE, etc).
- 6-MAY-2023: Fixed intro text (SSH v1 is not supported anymore)
- 5-MAY-2023: Merged in latest code from Frank
- 4-MAY-2023: Fixed OpenWatcom build issue
- 3-MAY-2023: Fix issues encountered when cross-compiling CKW from Linux and updated build documentation. CKW can now be (mostly) built with MinGW
- 2-MAY-2023: The X/Y/Z-MODEM library (p95.dll) can now be built with GCC too. That just leaves SSL and SSH.
- 1-MAY-2023: Futher porting to GCC: The GUI version now builds and runs! screenshot
- 30-APR-2023: Further porting to GCC. The CKW code uses cast-as-lvalue quite a bit (>400 of them), which GCC hasn't supported since 4.0.
They're all used for getting function pointers out of libraries (DLLs) loaded at runtime. I've written typedefs for a bunch of them
and switche dhtem to regular rvalue casts so it now builds fine without Kerberos, SRP or SSLDLL support which I think is fine. SSLDLL
support hasn't worked since OpenSSL 0.9.8 and there is little reason to fix it, and the Kerberos and SRP dependencies are still too old
to ship so builds don't normally include them anyway.
- 29-APR-2023: Initial porting to GCC. The console version (k95.exe) now builds though a few things need tidying up
- 28-APR-2023: Started looking at building with GCC. There is no intention to switch release builds away from Visual C++, this is just to make it
easier for potential contributors. GCC (MinGW) is relatively common on Windows these days, and its also the easiest option for cross-compiling
Windows applications from Linux. Adding GCC support makes it more likely potential contributors already have CKW-compatible compiler installed.
- 27-APR-2023: Adjusted the automatic builds that Github does to produce a build with SRP enabled. This is not a revival of SRP support
in CKW, its just an automated check to ensure the ancient SRP support that is already there doesn't get accidentally broken making it harder
to resurrect in the future should someone choose to. As this build is done with the ancient libsrp and an equally ancient version of OpenSSL
its not going to be included in releases. If you really needed it for some reason though, the "ckwin-vc7.1-x86-insecure" artifact on Github Actions
is the one you want.
- 26-APR-2023: Put together a quick table of what the various source files are to make finding things easier. Found a few likely unused things
that can be deleted at some point in the process.
- 25-APR-2023: Checked the hostmode script still works, adjusted distribution to include hostmode and other sample scripts. Spent a bit of time
playing around with kermit scripting to see if it might be possible to build a markdown-to-html converter but I suspect its wildcards
arent quite enough to pull it off easily
- 24-APR-2023: Added TLS SNI support to the HTTPS and secure telnet clients
- 23-APR-2023: Sorted out SSL/TLS support for C-Kermit for Windows on Intel Itanium. Unfortunately SSH isn't possbile due to the age of the compiler
- 22-APR-2023: C-Kermit for Windows also now builds for: ARM32, ARM64 and IA-64 (Itanium). Of those only ARM64 has SSH support currently, and Itanium doesn't
have SSL/TLS support yet. I don't have any Windows-compatible ARM or Itanium machines to test on so at this stage its only known to build
for those platforms - I have no idea if the binaries will actually run.
- 21-APR-2023: k95g now builds for 64bit windows! Also fixed the SSH bug (there were two actually, one of which must have surely been causing problems
in 32bit builds too) so SSH now works from 64bit C-Kermit for Windows! I even wrote this update with a 64bit build!
- 20-APR-2023: Further work on porting CKW to x86-64, now looking at the GUI-mode terminal (k95g.exe)
- 19-APR-2023: Some final CKW-on-Alpha work: Copying all the object files to a PC and linking with the Visual C++ 4.0 (x86) linker produces a working
Alpha NT binary. The resulting map file suggests 'end' is coming from the C Runtime - not sure what can be done about that. Building with the same compiler
and linker flags as the sample apps in the NT 3.50 SDK (which all build fine on Alpha) didn't fix anything. For now I'm all out of ideas and further progress
will probably depend on buying a copy of Visual C++ RISC Edition from somewhere. Based on the results so far though I expect it should build ok for Alpha
using Visual C++ RISC Edition version 4.0 or newer.
- 17-APR-2023: C-Kermit is so close to building for Alpha NT but I suspect the Windows NT 3.50 SDK is just not quite enough. Its currently
failing at the link step complaining that the 'end' symbol is reserved. It builds fine with the x86 version of the NT 3.50 SDK so this issue seems
to be specific to the Alpha. Its starting to look like this won't be possbile without buying a copy of Visual C++ RISC Edition which is basically
impossible in 2023
- 16-APR-2023: Got distracted from the 64bit porting because it turns out my AlphaStation works! Spent a bunch of time trying to build C-Kermit for
Alpha NT using the only compiler I have - the one in the Windows NT 3.50 SDK
- 15-APR-2023: Further regression fixing.
- 14-APR-2023: Mostly fixing regressions in 32bit compiler support. At this stage everything but the GUI (k95g) and dialer builds fine for 64bit Windows,
though most of it is completely untested and likely broken - SSH connections at least just crash. Building the dialer for 64bit windows likely isn't possible
due to OpenZinc - yet another reason to rewrite it.
- 12-APR-2023: Further 64bit porting work. Also provided some assistance getting it building for PowerPC Windows NT
(screenshot,
test build from tenox)
- 11-APR-2023: Further work on porting to 64bit Windows. Most 64bit related warnings in the console version (k95.exe) have been fixed and it
can now start and make telnet connections. SSL, SSH, X/Y/Z MODEM and antique telnet encryption haven't been ported yet along with the GUI version.
Things are looking fairly promising though.
- 10-APR-2023: Initial work on C-Kermit for 64bit Windows - it now builds without errors but its a long way from actually working.
Lots of warnings about truncated pointers and other nasty things will need to be fixed before it has any chance of doing more than crashing on
startup
- 21-MAR-2023: CKW should now build fine for MIPS Windows NT for anyone with the necessary hardware and compiler.
TAPI support is disabled on MIPS due to a compiler issue. The status of the dialer is unknown but likely works.
- 17-MAR-2023:
- Fixed received files not having their modified dates set on builds for modern versions of Windows
- Fixed entering plane-1 unicode values with Alt+n
- 16-MAR-2023:
- Fixed "show terminal" not showing autodownload=ask
- Fixed receiving files when autodownload=ask and the specified filename includes a path using UNIX path seperators (eg: send test.txt C:/temp/test.txt)
- Adjusted the default k95custom.ini to set autodownload=on (instead of ask), and switch into the users home directory rather than leaving the current
directory as, most likely, the directory where CKW lives
- Fixed Visual C++ 2017 build failure (and also likely 2015, 2013)
- 18-FEB-2023: No code changes, just some planning. Going to try and get in at least 30 minutes of work a day to fix bugs, maybe more time on weekends to
tackle missing features like SSH Agent support
- 12-FEB-2023: Fixed some build errors with vintage Visual C++ and merged a fix from Jeffrey Johnson to prevent CKW crashing when run under WINE
- 11-FEB-2023: Investigated changes in Visual C++ 2.2 and whether it can build the same feature set as Visual C++ 4.0. Looks likely, further testing
and makefile changes required
- 7-FEB-2023: Tidied up initial NT 3.1 support and merged into main. The NT 3.50 build now includes by default very limited NT 3.1 support
- 6-FEB-2023: Fixed a bug in the GetShortPathName implementation for Windows NT 3.10
- 4-FEB-2023: Limited time today so fixed some CI issues and some OS/2 binaries that weren't being build when they should be
- 3-FEB-2023: Further investigation into why the dialer doesn't start on OS/2. Conclusion: no idea. Time I moved on to more important things
- 2-FEB-2023: Spent some time getting the dialer to build for OS/2 with OpenWatcom. It builds now, but it doesn't run. Not sure why yet.
- 1-FEB-2023: Finished off SRP work. CKW can be built with SRP support but it requires an ancient version of OpenSSL (prior to version 1.1) so we won't
be able to include SRP support in standard builds unless the original Stanford SRP implementation is replaced with one that's still maintained
(perhaps the one from OpenSSL?). Until then, the old SRP support is there and buildable if anyone needs it.
- 31-JAN-2023: Spent some time getting SRP support going again - this was mostly just fixing up some things in the makefiles and build environment setup script.
- 27-JAN-2023: Window sizing has been tamed on NT 3.1 and now the status bar works too! And manual window resizing which I broke earlier is also now fixed.
- 26-JAN-2023: Finally figured out the cause of the K95G window sizing on NT 3.1 when built with Visual C++ 2.0 - will attempt a fix tomorrow or the day after.
Cause was microsoft changing the status bar window class name between NT 3.10 and 3.50 which prevents the status bar from beging created on one or the other
depending on the version of the Win32 SDK being used. CKW doesn't notice creation of the status bar failed and tries to get its dimensions which come back
as garbage. Fix is to detect windows version (NT 3.10 or 3.50) and use the appropriate window class name.
Once fixed I'll probably just merge the NT 3.1 branch - networking is still broken, as is the console version when built with Visual C++ 1.0, but
those can be fixed later.
- 25-JAN-2023:
- Spent a few hours trying to figure out why the K95G windows size goes nuts on NT 3.1 only when built with Visual C++ 2.0 (1.0 is fine on NT 3.1,
2.0 is fine on NT 3.50)
- Merged a fix from Jeffrey Johnson (trn) to fix SSH none auth (connection attempts to SSH servers supporting anonymous logins would just hang)
- Cause of crash when running under WINE has been identified by trn - problem with WINEs TAPI implementation, the fix will be merged in once the NT 3.1 branch
is merged as both branches involve OS version detection changes
- 23-JAN-2023:
- Further debugging. Still not entirely sure whats causing the crash - tempting just to park this and move on to more important things;
As annoying as it is to have CKW working on all but one versions of 32bit or better Windows,
NT 3.1 support isn't exactly a useful feature in 2023
- Updated the about dialog: Removed the text listing missing features (the features mentioned are no longer missing depending on build options), and added my name.
- 22-JAN-2023: Trying to find source of crash on NT3.1 VCNT console build - seems likely to be something on the screen update thread
- 21-JAN-2023: Finished tidying up the NT 3.1/3.50 targets and fixed remaining Visual C++ 1.0 32-bit edition build errors. Everything now
builds for Windows NT 3.1 - just have to fix the bugs
- 15-JAN-2023: Spent a little time tidying up NT 3.1/3.50 targets with the goal of producing one build that works on both using whatever Win32
APIs are available on the host operating system
- 14-JAN-2023: Split the NT 3.1 and NT 3.50 targets - APIs not available on NT 3.1 are now properly available when targeting NT 3.50
- 21-DEC-2022:
- Added the beta4 release to github (forgot to do it earlier)
- Fixed a bunch of build errors with Visual C++ 1.0 32-bit edition: cknker.exe (aka k95.exe) and k95g.exe now build
- K95G starts successfully on Windows NT 3.1 - Screenshot. C-Kermit for Windows has now run on every 32bit or better x86
version of Window released! Lots of work will be required to make it worth including Windows NT 3.1 support in future releases though:
- Telnet connections die after a little while or possibly after a certain amount of data has been received
- The way serial ports are configured has been changed so serial connections may well be broken too
- The console version doesn't work properly on NT 3.1 - it dies on startup. Works fine on Windows 10 though so it could be some difference in Windows APIs
- Some tidy-up work needs to be done so that both NT 3.1 and NT 3.50 can be targeted properly.
- 16-DEC-2022 Revised this page - now working towards beta 5
- 15-DEC-2022 Packaged up C-Kermit for Windows Beta 4 for release and tested on a selection of Windows versions
- 13-DEC-2022:
- Fixed openssl not being included in github artifacts
- Merged k95crypt stuff - the Telnet Encryption Option is now supported again
- Merged in the latest Beta.08 code from FDC dated 12-DEC
- Adjusted the github automated builds to convert the changelog and ssh-readme to HTML for automatic inclusion in generated artifacts
- Did some testing with SSH-DSA support - it seems to work fine?
- 12-DEC-2022: Tidied up the building of the k95crypt component
- 11-DEC-2022:
- Fixed window resizing on Windows NT 3.5x - its not perfect, but it seems to work
- Adjusted environment setup script to support forcing SSH/SSL/ZLIB off even if the libraries are detected
- Figured out how to build k95crypt.dll allowing various obsolete encryption options to be supported again
- 9-DEC-2022:
- Further work on XYZ Modem support
- Fixed build issued with OpenWatcom 1.9
- Fixed build issues with the Visual C++ 2003 toolkit
- Setup automated builds via Github Actions
- Added a versioninfo resource to the dll
- Updated build documentation
- Merged into main: X/Y/Z Modem is back!
- Revised the README file
- Fixed "no arrow-key support" showing in the show features output (arrow keys are always supported on Windows and OS/2)
- Merged in C-Kermit 10.0 beta.07!
- Updated the change-log with everything guaranteed to go out in the fourth beta
- Added a few bug reports received via email to the issue tracker so they don't get lost
- Started planning for Dialer changes to allow it (and its data files) to co-exist with the Kermit-95 version now that they're semi-incompatbile with each other
- 8-DEC-2022: Work on XYZ Modem support
- Added relicensed 'P' sources from Kermit 95 2.1.3 to source control (this is the XYZ Modem library)
- Updated build scripts, fixed a minor issue in p_tl.c to do with changes in definitions in CKW headers
- Tested the build with Visual C++ 4.0, 5.0, 6.0, 7.0: No problems
- Fixed an issue in the windows makefile, now builds fine with Visual C++ 2.0 as well
- Now builds fine with Visual C++ 2015 and newer too - another makefile issue.
- Tested zmodem send/receive with a Visual C++ 2022 build - seems to work fine
- Tested zmodem receive with a Visual C++ 2.0 build - no problems
- Tested building with OpenWatcom 1.9: the linker can't handle the def file and I'm not sure why. Might have to
see if p_transfer can be suitably exported without using the def file for OpenWatcom - a job for
tomorrow.
- 7-DEC-2022: Approval has been given to release the re-licensed 'P' source code! In the coming days it will be made available under the 3-clause BSD license, same as CKW itself.
- 2-DEC-2022: Merged in the latest C-Kermit 10.0 beta.07 work-in-progress code - currently on the ckb7 branch, submitted changes back to fdc.
- 1-DEC-2022:
- Fixed use of deprecated SSLv23_server_method()
- Had a look at \Kmouseurl behaviour - turns out its triggering of the browser for non-url clicks is intentional. Might be worth adding a variant
that only triggers for obvious URL clicks at some point as \Kmouseurl as it is would be unsuitable for binding to mouse button 1
- 29-NOV-2022: A little work towards integrated x/y/z modem support in anticipation of its open-sourcing
- Fixed some build errors related to integrated XYZ-modem support - it now builds fine with Visual C++ 6.
- Fixed bug: when p95.dll is missing, "set protocol xmodem" succeeds even though xyzmodem support is unavailable. From there you are prevented from setting the
protocol back to kermit - "set protocol kermit" gives an error about X/Y/Z Modem support being unavailable
- 19-NOV-2022: Updated help menu items in CKW and the Dialer
- 16-NOV-2022: Window sizing is now working correctly on NT 3.x, just need to implement the resize rectangle
- 15-NOV-2022: Spent some time re-implementing window sizing for NT 3.x which does not provide the WM_SIZING and WM_EXITSIZEMOVE events.
- 14-NOV-2022:
- Re-enabled DECnet support. Turns out this doesn't depend on any SDK - if you have Pathworks32 installed it should just work. I don't have a Pathworks32 license
so no way of testing if it really does work myself
- Adjusted build scripts to enable SuperLAT support when the headers are available, and updated the build documentation to cover SuperLAT support. Meridian made the
SuperLAT headers publicly available on their website but the license is unclear so SuperLAT support will remain a custom build option and won't be enabled by
default.
- 13-NOV-2022:
- SSH connections will now prompt for a username rather than failing with an error if the default login userid has been unset (this is how Kermit 95 behaved)
- Fixed help error: hmac-md5 is not supported, but hmac-sha1 is
- Dialer: removed SSH v1 options as CKW now supports SSH 2.0 exclusively
- Dialer: Updated the lists of available ciphers, macs and host key algorithms to match what CKW actually supports
- 12-NOV-2022:
- OpenSSL 3.0.7 works fine with Visual C++ 2022 as long as you modify the supplied ssl.h with the change
suggested in this OpenSSL bug report
- Spent a bunch of time trying to build C-Kermit with SSL on github actions. Its currently failing when building with OpenSSL 3.0.7 but I'm
not sure if I'm doing something wrong or if there is some C-Kermit issue. I'll investigate further some other day
- Fixed the manual command
- The show mouse command no longer tries to print non-printable characters bound to mouse events.
- 11-NOV-2022:
- Upgraded to openssl 1.1.1s
- Updated some out of date actions in the CI build workflow
- Did a bit of testing with OpenSSL 3.0.7. Looks like there is a bug in its
headers that renders it partially incompatible with Visual C++ 2022
- 8-NOV-2022:
- The old K95 Registry Tool released in October 1997 for Kermit 95 v1.1.14 has been rebranded for CKW
- Added the new CKW icon to the dialer executable
- Adjusted the Registry Tool to use the new CKW icon for the CKW shortcuts rather than the dialer icon
- Adjusted the Registry Tool to not set an icon for the user manual link in the start menu
- 7-NOV-2022:
- Fixed some errors in the CI build script that were preventing automated builds with OpenWatcom from completing successfully sometimes
- Merged the dialer code into the main branch - the only known regression (compared to Kermit 95 v2.1.3) now is missing window icons but
I suspect thats an OpenZinc bug as the OpenZinc utilities have this issue too so I'm not going to bother doing anything about it
- #12 - dropped the /ALIGN linker flag. Visual C++ has issued a warning
inresponse to this linker flag since November 1997 and I'm fairly certain C-Kermit doesn't require its executable segments to be aligned
on 1000 byte boundaries. Possibly its just a left-over default from project files generated with Visual C++ 4.0 and older
- 6-NOV-2022: Fixed the dialer context menu! Was not particularly easy - I suspect I've hit a few bugs in Zinc, but it works now.
- 5-NOV-2022: Back to work on C-Kermit for Windows!
- Merged in the latest C-Kermit 10.0 Beta.06 changes - this must be the easiest merge so far!
- Ran Beta.06 through Visual C++ 2.0, 6.0 and 2022 - all three built ant ran successfully
- Upgraded to zlib 1.2.13 fixing CVE-2022-37434
-
- Spent some time trying to get context (right-click) menus working in the Dialer again. I have absolutely no idea why they're
broken - the dialer is watching for the right-click event but something (Zinc?) is swallowing the event and I have no idea why or whats changed
to break it now.
Thats actually the wrong event to use for context menus anyway - WM_CONTEXTMENU should be used instead as this is triggered by
more than just right-click (eg, the context-menu button on windows keyboards). I've got the context menu working again via this event, now I just
need to figure out how to select the list item under the cursor on WM_CONTEXTMENU!
- 1-OCT-2022:
- Ran the ckw10b5 branch through Visual C++ 2022, 6.0 and 2.0
- Merged the ckw10b5 branch into main - the next windows beta will be based on C-Kermit 10.0 beta.05!
- 30-SEP-2022: Merged C-Kermit 10.0 beta.05 into the ckw10b5 branch
- 27-SEP-2022:
- Merged in the latest C-Kermit 10.0 beta.05 changes
- Added an example to set the default download directory in the default k95custom.ini
- Updated welcome.txt from fdc
- 26-SEP-2022:
- Dropped the "Good {Morning, Afternoon, Evening}, smile!" thing from the default k95.ini
- Deleted some unusued souce files: ck_ssh.c, cknssl.c, test.c - if these have ever been used it was for some old version of Kermit 95
- Merged in the latest C-Kermit 10.0 beta.05 changes
- Got the dialer building with Visual C++ 2.0 which means NT 3.50 support is possible though untested
- Rebranded the old Registry tool for CKW and got it building with OpenWatcom
- Tidied up build scripts a little
- Updated setenv.bat to support building k95cinit.exe
- Documented how to build k95cinit.exe
- 25-SEP-2022:
- Merged in recent changes from Frank
- Spent some time with the Visual C++ profiler. SSH file transfers are now much faster.
- Tested compiler compatibility for the Dialer: Visual C++ 4.0, 5.0 work. 7.0 (2002) has been fixed.
- Updated build instructions to cover the dialer
- Timezone changed - NZ is now at UTC+13 for summer
- 24-SEP-2022: Merged in latest C-Kermit development code again - looks like we're almost back in sync!
- 23-SEP-2022:
- The show ssh command now includes the libssh version number
- Added a welcome message displayed from the default k95custom.ini
- Merged mouse reporting code in
- Merged in the latest C-Kermit 10 development code (in a branch for now)
- 22-SEP-2022: Merged in changes from Frank for new copy /toscreen /interpret command syntax which does what type /interpret should do
but with less character set encoding madness on Windows
- 21-SEP-2022: Finished implementation of SGR and URXVT mouse reporting modes plus adjusted terminal reset to deactivate mouse reporting.
- 20-SEP-2022: Started work on SGR and RXVT mouse tracking modes
- 19-SEP-2022:
- Finished up work on mouse reporting for now. Might be nice to add support for UTF-8 coordinate encoding to properly support large terminals - haven't
decided if I'll bother just yet.
- Fixed cursor (and other elements) not blinking reliably, especially at lower screen update intervals.
- 18-SEP-2022:
- Fixed the set mouse activate command (aka set terminal mouse) - you can now turn mouse interactions off entirely in K95G
- Fixed support for the third mouse button in K95G
- Mapping the mouse drag event to \Kignore (with set mouse button 1 none drag \Kignore) now prevents a mark from being set on drag
- Fixed decoding of mouse wheel events
- Continued work on mouse reporting: Can now either forward all events to the remote host, or only forward events that are not handled by CKW
(events mapped to \Kignore). Mouse wheel works now too (eg, rolling the wheel scrolls the selected pane in midnight commander rather than
scrolling the terminal window). New set mouse reporting command to configure it. vttest tests pass. Almost done!
- 17-SEP-2022:
- Got the Dialer building with OpenWatcom 1.9. It can now be built with a free compiler!
- Configured CI to build the dialer too
- Initial work on xterm-compatbile mouse reporting: I can click on things in applications, like htop, that support mouse reporting!
Still to be done: a command to enable/disable mouse reporting (set mouse reporting enabled?), don't send mouse reports if
there is an action bound to a mouse event (eg, if right-click is bound to \Kpaste then don't send reports on right-click), and perhaps
a setting to send reports instead of any configured action (eg, right-click does \Kpaste except when an application turns
mouse reporting on in which case the right-click is sent to the application and it does whatever it wants with it)
- 16-SEP-2022:
- Beta 3 is out!
- Updated this page - now working towards beta 4
- Updated the dialer git branch and pushed to github
- Tidied up the new compiler-detecting build environment script a little
- Did some research into how xterm mouse reporting works
- 15-SEP-2022:
- Merged in a fix for file transfers to E-Kermit from Frank
- Produced fresh Beta 3 release candidate builds for XP SP+ (incl. SSH, SSL, PTY), NT 3.51/95+, and NT 3.50
- 14-SEP-2022:
- Updated the change log for Beta 3
- Produced Beta 3 release candidate builds for XP SP+ (incl. SSH, SSL, PTY), NT 3.51/95+, and NT 3.50
- Confirmed beta 3 still builds with: Visual C++ 2.0, 4.0, 97 (5.0), 6.0 SP6, 2002 (7.0), 2003 (7.1), 2015 (14.0), 2019 (14.2), 2022 (14.3), OpenWatcom 1.9 Win32, OpenWatcom 1.9 OS/2
- Confirmed beta 3 can be built on Windows NT 4.0 with Visual C++ 4.0 (this is required for MIPS, PowerPC and Alpha builds should they happen at some point)
- Confirmed beta 3 runs on Windows NT Workstation 3.50 when built with Visual C++ 2.0
- Confirmed beta 3 runs on Windows NT Workstation 3.51 and Windows 95 when built with Visual C++ 6.0
- Confirmed beta 3 runs on Windows XP SP3 and can make SSH connections
- Prepared a whats-new document for Beta 3
- 13-SEP-2022:
- Configured TLS on ftp.zx.net.nz and checked that ftps works in C-Kermit for Windows - it does
- Disabled type/interpret as it doesn't work on windows currently
- Dropped "+SSL" from the herald - C-Kermit for Windows has a lot more build options than just SSL support so there isn't much reason to call out that specifically
in such a prominent place. Plus most users on windows will be getting standard builds with a standard set of features - everyone on Windows 10
will have SSL.
- Added the Windows-specific beta number alongside the wider C-Kermit beta number.
- Spent some time investigating why resize-changes-font doesn't work on NT 3.51. Turns out WM_SIZING doesn't exist on NT 3.51 at all - its new to NT 4.0 and
Windows 95. Will have to find a workaround specially for NT 3.51.
- 12-SEP-2022: Fixed #92 - linux private mode escape sequences for setting and resetting the palette
are now parsed and thrown away (like xterm when the brokenLinuxOSC setting is turned on). Inability to handle these broken OSC escape sequences was preventing
many applications like GNU Nano or htop from coming back correctly after being suspended with Ctrl+Z when using the linux terminal type
- 11-SEP-2022
- Started preparing the change log and other bits for the release of beta 3 which should be ready to go in a few days
- Spent some time investigating performance of file transfers over SSH. No obvious cause for the slow speed. Will have to find a profiler and investigate
further - something for beta 4 perhaps
- Spent some time investigating crash when stopping a file transfer with Ctrl+C. Cause not clear - sometimes it dies releasing a mutex which I think should
only happen if the thread doesn't own that mutex. Perhaps the transfer is being canceled from the wrong thread? I have a feeling this one will be tricky
to fix assuming I can find the cause.
- #71 - Fixed SSH keyboard interactive authentication
- 10-SEP-2022:
- #22 - Fixed incorrect (too narrow) window size on first run
- #98 - Made the set terminal screen-update fast x command do something for K95G.
It seems previously this command only worked for the console version (k95.exe) - regardless of what you set the screen update interval too, the GUI
version of Kermit 95 2.1.3 only updates every 100ms which makes it feel a bit sluggish. Setting it to something smaller like 10ms or even 20ms feels
much better! At the moment set terminal screen-update smooth still does nothing in K95G.
- "Fixed" drawing of the cursor. Previously it was being drawn directly to the screen and if you looked carefully you could see this happen. The cursor didn't
blink on and off solidly, it more wiped in and out from top to bottom. This was epecially noticable with the full/block cursor
- 09-SEP-2022: Spent some time investigating why on first run the window size is half the width it should be. Haven't fixed it yet but close. While investigating
this I also figured out why keyboard input feels a little sluggish: Its only updating the UI every 100ms! This seems to be the case regardless of the
set terminal screen-update setting. Dropping it to 10ms greatly improves smoothness and responsiveness but also makes the cursor blink way too fast. A job
for tomorrow!
- 08-SEP-2022: Fixed #67 - OpenWatcom builds with ZLIB fail
- 07-SEP-2022:
- Updated TLS support for secure ftp and telnet. Untested at this stage but it should work - need to setup secure telnet and ftp servers some time to
test against
- Minor update to dialer about screen
- Fixed the /subsystem SSH qualifier allowing kermit to be used as an SSH subsystem for file management.
- Checked secure telnet (over SSL/TLS) still works - no problems connecting to the telnet-ssl server provided by Debian
- Upgraded to libssh 0.10.3
- 06-SEP-2022:
- The latest version of OpenSSL (3.0.5) now works!
- Also fixed HTTPS compatibility with many/most websites: We were only using TLS 1.0 before which is deprecated and usually disabled today. Now when building
with OpenSSL 1.1.0 or better we use a newer method that negotiates the best TLS version supported
- Figured out how to build OpenSSL for Windows XP. Minimum system requirements for SSH in Beta 3 should drop from Vista to XP.
- 05-SEP-2022:
- Now builds with:
- OpenSSL 1.0.2u of 2019-12-20
- OpenSSL 1.1.0l of 2019-09-10
- OpenSSL 1.1.1q of 2022-07-05 (current release)
- It also builds with OpenSSL 3.0.4 though it doesn't work properly yet
- Automated the fetching of ca_certs.pem for CI, updated mkdist to include licenses, etc
- 04-SEP-2022:
- Fixed the space command and bug #53 - reciving large files fails with "Refused, size"
- Spent some time investigating SSL support in a branch. After fixing some issues, it now builds with:
- OpenSSL 0.9.8zf of 2016-01-29
- OpenSSL 1.0.0s of 2016-01-29
- OpenSSL 1.0.1u of 2016-09-22
Building with SSLDLL only works with 0.9.8.
- 03-SEP-2022:
- Improvements and fixes to "ssh key create" - now outputs the key fingerprint
- Tested the dialer out a bit and fixed a bug with the SSH options. Packaged up what should be good enough as a first beta of an open-source dialer
- Implemented "ssh key display". The IETF output format is not supported but the other three (fingerprint, openssh, ssh.com) are.
- Implemented "ssh key change-passphrase"
- Removed "ssh v2 rekey" as libssh does not support rekeying on demand
- 02-SEP-2022:
- Finished off the "ssh key create" command
- Added an example k95custom.ini file
- Merged in Windows NT 3.50 support
- Added se.exe to the makefile. It will be included in future releases now.
- Upgraded to libssh 0.10.1
- Tried to install Windows NT on the AlphaServer: I was unsuccessful - hardware issues
- 01-SEP-2022: File save dialogs on Windows ME, Windows 2000 and newer are now the standard type for those versions of windows (with navigation features on the left), rather
than the old Windows-95 style. Dialogs on 95/98/NT are unaffected
- 31-AUG-2022: Have "ssh key create" working properly now, just need to tidy it up tomorrow and implement display and change passphrase options
- 30-AUG-2022: Not much time so only got a little work done on the "ssh key" commands
- 29-AUG-2022
- Adjusted uq_file so that a GUI save-as dialog can be produced with a "Save" button rather than a "Download" button
- Continued work on the "ssh key" commands
- 28-AUG-2022
- Fixed a bug introduced by the "ssh user@host" change
- Got rid of: set ssh {k4, k5, krb4, krb5, kerberos4, kerberos5} - if Kerberos support ever arrives for SSH it will be via GSSAPI
- Integrated some changes from Frank: beta number now shows in the herald, and the type command now has a new /interpret qualifier
- Updated the news text with some stuff from Frank
- Improved error message when no auth methods supported by the server are enabled
- Implemented support for an ssh proxy command, then discovered libssh doesn't actually implement
this setting on windows. So the new "set ssh proxy-command" is commented out for now until Win32 support appears in libssh.
- Started work on the "ssh key" commands
- 27-AUG-2022
- Added keep-alive setting. Interval is set via "set ssh heartbeat", default is 0 (off).
- Removed unsupported auth methods from "set ssh v2 authentication"
- Implemented "set ssh v2 hostkey-algorithms"
- Implemented "set ssh v2 macs"
- Added new command: "set ssh v2 key-exchange-methods"
- "set tcp nodelay" should affect SSH sessions now too
- Added support for "user@host" syntax to SSH command. "ssh root@myhost" should do the same as "ssh myhost /user:root" now. The implementation is pretty basic
and may not handle weird input well but when it works it should be less confusing to new users.
- Implemented mouse wheel support for Windows via the new "set mouse wheel" command. Requires Visual C++ 6.0 or newer.
- 25-AUG-2022
- Implemented the set ssh v2 ciphers command. This means the list of valid options for that command has changed to match those supported by libssh.
- Removed obsolete SSH v1 commands which will never be supported (because libssh removed sshv1 support): set ssh v1, ssh key v1,
set ssh version 1
- Started looking into options to keep SSH sessions alive when left idle. Made a quick change and will leave a session overnight to see if this method works
- 24-AUG-2022
- Replaced Kermit-95 references with C-Kermit in the dialer window resources. It is now the C-Kermit for Windows dialer.
- Created a manifest file for the dialer - it now picks up (some) modern UI controls
- Got Zinc built with ctl3d so the Dialer looks less like something recompiled from 16bit windows
- Spent some time trying to figure out why the dialer connection list context menu isn't working and I have no idea - I can't find any code for the context menu
so I've no idea how it was working in K95 2.1.3. I'll have another look at it some other day - there is probably something I'm missing that might be more
obvious if I'd bothered to learn Zinc
- 23-AUG-2022
- Reworked build environment script to detect compiler and setup the environment for OpenZinc (add the compililer-specific lib dir to the library path, set an
environment variable with the makefile to use when building OpenZinc, etc)
- Replaced Kermit-95 references with C-Kermit in the dialer source code
- Replaced Kermit-95 references with C-Kermit in the dialer help resources
- 22-AUG-2022
- Fixed branding issues on OS/2: titlebar now reads "C-Kermit for OS/2" rather than "C-Kermit for Windows", the prompt is now "C-Kermit>" like on other platforms
rather than "CKW>", and also adjusted the program title in some help text.
- Merged OS/2 Watcom fixes into main - fixing networking, etc, can be handled later now that it builds and runs with freely available tools.
- Spent some time sorting out makefiles for OpenZinc. Builds fine with Visual C++ 4.0, 5.0, 6.0, 7.0. Visual C++ 2003 toolkit fails (lib tool missing).
Visual C++ 14.x (2015-2022) has other issues - easily fixed errors in design\i18n\locale.cpp and \design\image\image2.cpp plus unresolved
symbol errors at the link stage which I've not resolved yet - Visual C++ 14.x can wait for another day once the dialer is in a releaseable state and modern
compiler support actually matters.
- 21-AUG-2022
- Tidied up the OS/2 makefile, added missing resources to git, wrote a mkdist script, updated the build workflow. Github now produces OS/2 binaries on every push
to the OS2 branch!
- Fixed the auto-download "ask" setting not working on NT 3.51
- 20-AUG-2022
- Fixed the terminal window being cleared the first time you move the K95G window when the resize mode is "changes dimensions". I hope this also changes the other
random occurances of the terminal being cleared on move.
- Fixed the terminal not scrolling correctly in OpenWatcom builds
- Got cross-compiled OS/2 binaries working on OS/2! Problem was the global 'vmode' is declared as BYTE but all over the place it was being redeclared
as 'extern int vmode' which would result in its value turning to garbage eventually and crashing the application, and also having NetBIOS support
enabled at build time also causes it to crash. So with NetBIOS turned off it now runs though TCP/IP isn't working at the moment and in a few places
its calling itself "C-Kermit for Windows" which won't do. But it is progress! Here is a screenshot of C-Kermit 10 for OS/2!
- 18-AUG-2022
- Fixed compatibility with the OpenWatcom 2.0 fork (tested with the 2022-08-18 build)
- Ran the code through the OpenWatcom AXP Cross-compiler. Amazingly the compiler actually built everything - I was really expecting the compiler to crash
or otherwise fail in some way. Perhaps there have been improvements since I last tried it. The current OpenWatcom 2.0 builds don't include all the AXP bits
(no linker or assembler, and no libraries) so no executables were produced. Some time I'll rebuild OpenWatcom from source and see if I can get it to make
all the alpha bits that are normally disabled. If I can get it to spit out some working binaries perhaps the third beta will gain a CPU architecture!
- 17-AUG-2022
- Fixed ConPTY-enabled builds not working on anything older than Windows 10 version 1809. The presence of ConPTY code no longer affects windows version
compatibility (beyond what the compiler required to support it can target)
- Fixed builds with Visual C++ 2012-2019 not working on Windows XP
- Had a go at getting SSH working on Windows XP but I can't find a way of building OpenSSL 1.1.1q (required by libssh) that doesn't result in it depending on
bcrypt.dll, something only available from Windows Vista onwards
- Sent a build to Frank - this will be C-Kermit 10.0 beta.04 for Windows beta 2 assuming no problems are found. All going well it will be up on the kermit project
website in a few days. Changes made to C-Kermit code shared with other platforms (ck[cu]* files) will be included in C-Kermit 10.0 beta.05.
- 16-AUG-2022
- Fixed a build issue somehow only affected Visual C++ 6 - all other commpilers I regularly test on (4.0, 5.0, 2002, 2003, 2015, 2019, 2022) were fine.
- Updated the list of known SSH issues
- Tested the VC6 build on NT 3.51 and Windows 95 - it works well
- Tested the Visual C++ 2015 build on Windows XP - did not work, the binaries being generated are somehow invalid on XP. Need to look at compiler settings
for beta 3 because it should have worked!
- Tested the Visual C++ 2022 build on Windows 7 32-bit - did not work. Turns out I'm not handling the absence of ConPTY support properly. Something to fix
in beta 3.
- My to-do list for beta 2 is now complete. A release candidate build has been produced and uploaded.
- Stripped out the registration code from the dialer and got it building with OpenZinc under Visual C++ 6.0 SP6
- 15-AUG-2022
- Tidied up and tested SSH host key verification. Seems to all be working properly
- Finished off initial SSH support. My beta-2 to-do list is empty! Just need to give everything a quick test tomorrow.
- 14-AUG-2022
- SSH session survived the night. Disconnect bug fixed I suppose - its now fully usable for interactive SSH sessions. I used it to update this page! Also spent
a bunch of time fixing an handful of other misc SSH related bugs (like canceling login causes a segfault). And I think the race condition around
file transfers is fixed now though its hard to be sure really. If its not fixed it is at least much less common now to the point where its probably not
an issue.
- Fixed broken file transfers on builds done with compilers older than Visual C++ 6.0 - turns out disabling authentication breaks transfers over telnet
(code error - missing {} when something wasn't compiled in)
- Fixed some issues on NT 3.50. Window resizing doesn't work very well when using the Scales Font resize mode because all the window sizing events CKW
uses are unavailable on NT 3.50. If the window size is a little bit too big you just get black bars on the right and bottom. Not great but better than
nothing.
- Targeting NT 3.50 no longer requires Visual C++ - OpenWatcom works too. Set the environment variable CKT_NT31=yes before running the build and you'll get
binaries that don't use any Win32 APIs that are unavilable on NT 3.50.
- 13-AUG-2022
- Spent a pile of time reviewing the new SSH code making sure all everything looked reasonable and moved on to testing. Of course it didn't work first
try. But it does work now! Left a session open to check that the random disconnect bug is gone and moved on to some easier things
- Fixed incorrect use of fsetpos - now uses appropriate Win32 API. Resuming of large file transfers should work now though I've not fixed it
- Fixed icon and versioninfo resources
- Fixed OS version checking for modern versions of windows
- Got CKWin minimally functional Windows NT 3.50. This requires a special build with a particularly antique compiler (Visual C++ 2.0). With some tidyup perhaps this may appear in
the next beta too though I can't imagine too many people are looking to transfer files to/from NT 3.50. It would leave NT 3.1 as the only 32bit (x86) desktop
windows without C-Kermit.
- 12-AUG-2022 - not enough time for the next step in the SSH work (reviewing all the code and testing it), so just some little low priority but kind of
fun things - giving my shelf of Vintage Microsoft compilers a workout. If only I could track down the RISC editions...
- Fixed build errors with Visual C++ 5.0: Just have to disable NTLM at build time and it works fine
- Fixed build errors with Visual C++ 4.0: a few #ifdefs to handle WinAPI differences
- Fixed build errors with Visual C++ 2.0 (there was no 3.0): This was a bit more involved as this compiler predates Windows 95. More #ifdefs for WinAPIs that are
unavailable before Windows 95/NT 3.51, plus fixing support for building without modem support
- Had a brief look at Visual C++ 1.0 32-bit edition (the compiler for NT 3.1). Looks do-able. The compiler is fine with the code but there are more unavailable
Windows APIs and I'm sure what exactly these are doing or how important they are at a glance. Visual C++ 2.0 can target NT 3.1 so there isn't much need
to use Visual C++ 1.0 for anything (unless I guess a MIPS build - I've not yet managed to get my hands on a newer version of that compiler)
- Pointed Visual C++ 4.0 Cross-Development Edition at it. It did make it a little way but I suspect building C-Kermit for Windows for PowerPC Classic Macintosh
would be a lot of work.
Ideas for future releases
Coming later to some other C-Kermit for Windows Beta as free time allows - in approximate order of (my) priority:
- #80 - Test NTLM Auth, fix any issues
- m1 - Fix remaining issues with C-Kermit for OS/2: TCP/IP doesn't load, NetBIOS causes a crash on startup, optimised builds (-ox) crash on startup, and conkbg() near
the end of ckotio.c doesn't build with OpenWatcom due to issues with the OS/2 headers (currently disabled with #ifndef __WATCOMC__),
the dialer builds but crashes on startup, the clipboard utility doesn't work, and probably lots of other issues.
- Build a brand new connection manager to replace the dialer as the current dialer is pretty much unmaintainable due to the status of the UI framework its built with.
A fair bit of work has already gone in to this (I'm already using it) but most of the settings pages (now tabs) aren't implemented yet so its still some way from release
- #164 - Fix issues running on Windows NT 3.10; Networking is broken (the select API is always
reporting not ready for some unknown reason), console version crashes on startup if built with Visual C++ 1.0 32bit, changes to the Serial port
code need testing to make sure that serial connections still work, and builds done with OpenWatcom fail to run (Unexpected error: 11)
- Improve the block cursor: It doesn't render nicely when its over the top of a letter at the moment. Would also be nice if it could be set to draw as an outline
when the window doesn't have focus, and perhaps an option to control its colour too
- #41 - High DPI support
- Maybe more text colour options? At the moment there is no amber option - possibly colour choices are limited to what a real terminal allows?
- Its real tempting to add tool-bar buttons for Paste and switching the resize mode between scale font and change dimensions. Maybe there are other things that would be
convenient to add too.
- Refactor the current KUI code to expose a less Win32-centric interface to the rest of C-Kermit. Others have expressed interest in trying to port the CKW
terminal emulator to C-Kermit for UNIX which would be less extremely hard if the Win32 GUI was abstracted away a bit more. It would also make it
slightly more possible to provide alternate GUIs built with other frameworks on Windows.
Unlikely Activity
Stuff I'd like to see happen but I'm unlikely to do myself - not enough free time, too much other more important stuff to do (pull reuqests welcome!)
- Improve GUI performance - currently it chokes a bit if, for example, a very large amount of output is scrolling past fast (cat a huge file for example)
making hard/impossible to cancel the operation
- #18 - New LAT implementation either written from scratch (the LAT specs are on the internet) or ported from Linux (there is an open-source implementation for
linux as part of the DECnet Linux programs which does work). IIRC LAT doesn't depend on DECnet at all - its a standalone protocol like MOP. A windows
implementation would likely have to depend on winpcap/npcap to be able to send/receive raw ethernet frames.
- #88 - Sixel support in the terminal emulator. They seem pretty popular these days.
- #32 - Get SRP back - the stanford SRP implementation is now unmaintained but OpenSSL includes SRP support. Would require someone who is familiar with OpenSSL and
would probably be quite a bit of work as I assume whatever API OpenSSL provides is probably completely different from what Stanford SRP provided. Ideally SRP support would
be contributed to libssh too if they'd have it, to match Kermit 95s support for SSH authentication using SRP.
Not Happening
This stuff is not possible and so will not happen
- win32s (windows 3.x) support: While the required compilers (Visual C++ 2.0, 4.0, OpenWatcom) are supported it is not possible to get CKW to work on Win32s for
one reason: CKW makes heavy use of threads. And threads are not supported on Win32s. It would probably be easier to build a new thing from scratch than
conditionally compile out threading from CKW
Old Stuff
New in the Second Beta
- Built-in SSH! Its working pretty well now though given the substantial step up in the codes complexity I'd be surprised if there weren't annoying bugs still lurking.
Expect the reliability of SSH connections to improve in further releases plus new SSH features to be added. SSH Support requires Windows Vista or newer (I did try
to get it going on Windows XP but I can't figure out how to get OpenSSL to build in a way that works on XP)
- Windows PTY support (Windows 10 1809 or newer required) - run windows console apps inside CKW! Run CKW inside CKW! No file transfer ability though - the Windows PTY
isn't transparent. And terminal emulation glitches are possible due to Windows also doing terminal emulation in between CKW and the console app. Windows PTYs are
weird.
- Now uses modern Windows UI widgets (flat buttons, etc), so it fits in a little better when run in modern windows environments. Reverts back to the classic look when
run on classic windows.
- Fixes to the pipe command - you can now run sessions and file transfers through subprocesses such as puttys plink provided that subprocess doesn't try to use any of Windows NTs special console APIs
- Fixes to network DLL support (set network type dll) - build your own protocol DLL! I found it pretty handy for prototyping PTY support. API Documentation and Sample
Code is here: https://ftp.icm.edu.pl/packages/kermit/k95/k95dll/
- Fixed detection of newer Windows releases. Should now correctly identify Windows 10/11 in "show features" output. Note that Windows 11 will show up as Windows 10 - this
is normal, windows 11 is pretty much just windows 10 and Microsoft treats it that way in their APIS, especially around version detecting
- Resuming transfers of large files should now be fixed - the previous beta was using 32bit file positions when seeking, now the correct windows API with a
64-bit position
- Fixes to building with newer versions of Visual C++. From Visual C++ 2008 and up file transfers were broken, and Visual C++ 2015 and up wouldn't build at all.
This is all fixed and SSH-enabled builds are now done with Visual C++ 2022, the latested release.
- Fixes to building with older versions of Visual C++: version 5.0 (97) and 4.0 now work too.
- Now builds with OpenWatcom 1.9 (win32 target only). There are some bugs in the terminal emulator that need sorting though - on some (all?) synchronet BBS the terminal
doesn't scroll properly so you just get a mess on the bottom line as new lines overwrite old.
- Fixes around handling of title OSC strings - termination with a BELL is no longer specific to aixterm (the windows PTY uses it too), a buffer overflow has been fixed, and the maximum length doubled.
Known Issues
- SSH sessions may not as stable as they could be. I have seen the occasional rare disonnect but I'm not sure at this stage if its a bug in the SSH code,
if its some race condition and the session is still live but you can't interact with it anymore, or if the session has just timed out normally and CKW hasn't
noticed. It seems pretty rare and mostly only affected sessions I've left idle for hours. I'm currently trying to catch this event in the debug log to investiate
further. If it is a bug, i'll aim to get it fixed in the next beta. If it's a timeout I'll aim to handle the situation better.
- See the included ssh-readme.txt for further known SSH issues
- On Windows NT 3.51 you have to use Auto-download - if you set it to ask you'll never get prompted with a save file dialog, the transfer will just fail immediately
claiming you canceled it. This was proabbly a bug in later releases of Kermit 95 too - I think NT 3.51 support was dropped before graphical file dialogs were
added. This is fixed for the next beta.
Stuff that was new in the Third Beta
- Fixed compatibility with the OpenWatcom 2.0 fork
- #49 - Fixed terminal being cleared the first time you move the K95G window and possibly the other random occurrences of this happening
- #33 - Fixed terminal scrolling bug in OpenWatcom! Builds done with OpenWatcom are now functionally equivalent to Visual C++ 6 in platform support and features and have no
known issues unique to that compiler.
- #46 - Fixed auto-download "ask" setting not working on Windows NT 3.51
- Now builds on OS/2 with OpenWatcom. Only minimal testing has been done. Networking does not work and the builds are done without optimsiations. Further work is
required, likely by someone with OS/2 development knowledge, to get it back to the Kermit-95 level of functionality.
- #76 - Fixed idle SSH sessions timing out - run "set ssh heartbeat 60" or some other interval in seconds to keep the session alive when idle
- #44, #75 - Implemented additional SSH commands
- set ssh v2 ciphers
- set ssh v2 hostkey-algorithms. New options: ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, rsa-sha2-256, rsa-sha2-512, ssh-ed25519
- set ssh v2 macs. New options: hmac-sha1-etm@openssh.com, hmac-sha2-256, hmac-sha2-256-etm@openssh.com, hmac-sha2-512, hmac-sha2-512-etm@openssh.com, none
- set ssh heartbeat-interval
- ssh key create
- ssh key display
- ssh key change-passphrase
- New command: set ssh v2 key-exchange-methods
- "set tcp nodelay" should affect SSH sessions now too
- #44 - Removed obsolete SSH commands and options that will never be implemented due to lack of support in libssh:
- set ssh v1
- set ssh version 1
- set ssh v2 authentication {external-keyex, hostbased, srp-gex-sha1}
- set ssh v2 ciphers {arcfour, blowfish-cbc, cast128-cbc, rijndael128-cbc, rijndael192-cbc, rijndael256-cbc}
- set ssh v2 macs {hmac-md5, hmac-md5-96, hmac-ripemd160, hmac-sha1-96}
- set ssh {kerberos4, kerberos5, krb4, kerb5, k4, k5}
- ssh key v1
- ssh key display /format:ietf
- ssh v2 rekey
- #81 - Added support for "user@host" syntax to SSH command. "ssh root@myhost" should do the same as "ssh myhost /user:root" now. The implementation is pretty basic
and may not handle weird input well but when it works it should be less confusing to new users.
- Added mouse wheel support. By default it scrolls one line at a time, or one screen at a time when holding Ctrl. You can remap this to whatever you like via the new
"set mouse wheel" command which works like "set mouse button".
- Improved error message when no authentication methods supported by the SSH server are enabled
- File save dialogs are now the modern (normal) type on Windows ME, 2000 and newer.
Windows 95, 98 and NT4 retain the old Windows 95-look file dialogs as before.
(#86, #87)
- #45 - Added Windows NT 3.50 and Visual C++ 2.0 support. This requires a special feature-reduced build.
- The Shell Execute utility, se.exe, is back. Documentation for it is here
- Upgraded to libssh 0.10.3
- Fixed #53 - receving large files (>4GB) no longer fails with "Refused, size"
- Fixed the "space" command - it can now report more than 4GB of free space
- #15 - OpenSSL 0.9.8 - 3.0.5 (the latest version) now works
- Added support for TLS 1.1, 1.2 and 1.3 when built with sufficiently new versions of OpenSSL - the "http" command now works with https websites following modern
security standards
- Got OpenSSL building with Windows XP compatibility: SSH now works on XP
- #72 - Fixed the ssh /subsystem qualifier. You can now use kermit over SSH like an FTP client with
ssh myhost /subsystem:kermit (or skermit myhost for short) - Documentation
- #22 - Fixed incorrect (too narrow) window size on first run
- #98 - Made the set terminal screen-update fast x command work in the GUI version of CKW. Now you
can have screen update intervals other than 100ms! I find 10ms or 20ms to be a big improvement.
- Adjusted how the cursor is drawn so it blinks more nicely in the GUI version of CKW
- #71 - Fixed SSH keyboard interactive authentication
- Fixed #92 - linux private mode escape sequences for setting and resetting the palette
are now parsed and thrown away (like xterm when the brokenLinuxOSC setting is turned on). Inability to handle these broken OSC escape sequences was preventing
many applications like GNU Nano or htop from coming back correctly after being suspended with Ctrl+Z when using the linux terminal type
New in the Fourth beta
- Fixed a bug introduced in beta 3 that can prevent the cursor and other elements on the screen with the blink attribute set from blinking reliably. If this bug is causing problems for you, you can grab
a fixed build (for XP SP+ only - email me if you need a build for older systems) from here: ckw-b3-blinkfix.zip.
- #39 - Tidy up some dialer things and get it building with newer compilers
- The dialer now builds with OpenWatcom 1.9 and is now included in Github Actions CI builds
- The Dialer code is now in the public Git repository!
- The dialer has been adjusted to build with Visual C++ 2.0 which should make NT 3.50 support possible
- The libssh version number is now included in the output of the show ssh command
- The default k95custom.ini now outputs a message on startup directing new users to have a look at k95custom.ini
- #103 - Fixed the set mouse activate command (aka set terminal mouse) in K95G (previously it only applied to the console version)
- #103 - Fixed support for the third mouse button in K95G (previously it only worked in K95G)
- Fixed a mark being set (and not cleared on mouse button release) on drag when the drag event is mapped to \Kignore
- Fixed decoding of mouse scroll wheel event coordinates
- #85 - Mouse reporting:
- X10 protocol (send button + coordinates on mouse down) supported for Linux and ANSI terminal types
- X11/Normal, URXVT and SGR protocols (send button + modifiers + coordinates on mouse down and mouse up) supported for all terminal types
- Mouse wheel supported for all but the X10 protocol: You can scroll the panels in midnight commander with the mouse wheel!
- New command: set mouse reporting x where x is one of:
- disabled - mouse events will not be reported
- enabled - Applications can turn mouse reporting on. Mouse reports will be sent only if a mouse event is mapped to \Kignore
(eg, if you map right-click to \Kpaste then right-click will never be sent)
- override - Applications can turn mouse reporting on. All mouse events will be sent to the remote host and any configured action in CKW will be ignored when mosue reporting is on.
For example, if you map right-click to \Kpaste this will only have an effect outside of applications that turn mouse reporting on.
- The show mouse command shows the mouse reporting setting plus current state (if its active or not and the protocol)
- #100 File transfers over SSH are now much faster
- #106 - Updated to C-Kermit 10.0 beta.05
- Updated to C-Kermit 10.0 beta.06
- Updated to C-Kermit 10.0 beta.07 - I need to work faster!
- Upgraded to zlib 1.2.13 fixing CVE-2022-37434
- Upgraded to openssl 1.1.1s
- The context (right-click) menu in the dialer now works again
- #12 - dropped the /ALIGN linker flag which has produced a linker warning since Visual C++ 5.0 SP3 (November 1997)
- #40 - The old registry tool (k95regtl.exe) is back and fixed up for C-Kermit as an interim solution until a proper installer
is created. This tool lets you create desktop & start menu shortcuts and the .ksc file association.
- The manual command now works
- Fixed bug: The show mouse command no longer tries to output non-printable characters bound to mouse events
- The default k95custom.ini now sets the default browser to nothing which should result in Edge being used instead of Internet Explorer. This is just a temporary workaround for
the default browser not being correctly picked up
- SSH will now prompt for a username if the default login userid has been cleared (this is how Kermit 95 behaved)
- Fixed help error: hmac-md5 is not supported, but hmac-sha1 is
- Dialer: removed SSH v1 options as CKW now supports SSH 2.0 exclusively
- Dialer: Updated the lists of available ciphers, macs and host key algorithms to match what CKW actually supports
- DECnet support is back: If you've got Pathworks32 installed you should be able to make LAT and CTERM connections. I don't have a Pathworks32 license so no way of testing this myself
- CKW can now easily be built with SuperLAT support. This won't be made available in standard builds as while Meridian made the header files publicly available the license on them is pretty unclear
- #17 - X/Y/Z MODEM support
- #97, #94 -
Fixed/implemented proper window resizing for NT 3.x
- #16 - Support for the Telnet Encryption Option (DES/CAST) is back
New in the Fifth Beta
- #145 - Anonymous SSH (userauth none) doesn't work. Bug found and fixed by Jeffrey Johnson.
- #139 - Added very limited NT 3.10 support. Networking does not work but serial might
- #127 - Crash startup under Crossover on MacOS 10.14 - thanks Jeffrey Johnson! Bug also affected WINE
- #167 - Fixed "show terminal" command showing autodownload as being "on" when it was actually set to "ask"
- #166 - Fixed receiving files with an as-name that includes a path using UNIX separators failing when
autodownload is set to "ask" in the GUI version of CKW (receiving a file sent as send foo.txt C:/temp/foo.txt now works)
- #165 - Default autodownload to "on" rather than "ask" via the default k95custom.ini
- The default k95custom.ini now changes into the users home directory on startup rather than leaving the current directory as where ever CKW was started from
- #138 - Fixed build failures with Visual C++ 2017
- #143 - Fixed builds for modern windows not setting modified time on received files
- #133 - Fixed entering plane-1 unicode values via Alt+n crashes the application (this was an old bug
inherited from Kermit 95)
- Fixed build failures with Visual C++ 4.1 and 4.2
- Fixed some issued building for RISC NT with the help of others who have the required hardware and compilers:
- Visual C++ 4.0 RISC Edition for MIPS should work (without TAPI or dialer support)
- Visual C++ 4.0 RISC Edition for PPC should work (though the dialer was not attempted, and the following features had to be disabled (with, for example,
set CKF_TAPI=no) to get it to link: TAPI, DEBUG, XYZ)
- Visual C++ 4.0 RISC Edition for Alpha probably works based on tests I've done with the NT 3.50 SDK, though I've not attempted the dialer
- #24 - Ported to 64bit Windows (x86-64). This will almost certainly introduce some new bugs, but the
compile warnings fixed in the process may fix some old ones.
- Now builds for (but has not been tested on due to lack of hardware) the following platforms:
- 64bit Windows on ARM
- 32bit Windows on ARM (Windows RT) - this does not include SSH support (libssh won't build for 32bit Windows on ARM)
- 64bit Windows on Itanium (no SSH support due to old compiler)
- #183 - Added TLS SNI support for the http and telnet clients
- #34 - Old hostmode scripts (and others) are now included in the distribution. They work about as well
as they did in K95 2.1.3. Mostly just an interesting example of a complex kermit script now
- #19 - Minimal support for building with GCC (MinGW)
- Implemented the following new escape sequences in the terminal emulator:
- CSI 1 8 ; Ps ; Ps t - get text area size in characters (xterm)
- The terminal emulator now correctly parses and ignores the following escape sequences:
- CSI > Pm t - previously receipt of this xterm-specific escape sequence would incorrectly minimise the window
- Fixed SSH bugs:
- Fixed buffer not being flushed to the terminal on logout
- Fixed server disconnect not always being detected (eg, logging out from OpenVMS leaves CKW in 'connected' mode even though the SSH session should be disconnected)
- Updated to C-Kermit 10 Beta.09
- Added sample initialisation script for IKSD. Setup instructions are here: https://kermitproject.org/k95manual/wiksdadm.html
- #31 Kerberos V support is, in theory, back. I've not managed to find any telnet or ftp servers that actually support kerberos
authentication to test against. A version of the SSH client library is also now supplied with Kerberos support - see the ssh readme for details on how to use it
- #207 - Fixed bad colour defaults in the auto-created DEFAULT template in the dialer
- Fixed bad default logfile names in the auto-created DEFAULT template in the dialer
- #169 - k95custom.ini is now distributed as k95custom.sample and renamed back by k95.ini on first run if k95custom.sample doesn't
already exist
- #214 - Upgraded to OpenSSL 1.1.1u
- #115 - Confirmed the default browser behaviour, documented it in the default k95custom.ini
New in beta 6
- #221 - Fixed directory listings reporting large file sizes as -1 and not giving a modified date
- #180 - Upgrade to OpenSSL 3.0.14
- Fixed build issues on PowerPC Windows NT, added support for building the dialer on PowerPC Windows NT with Visual C++ 4.0 RISC Edition
- Fixed build issues on MIPS Windows NT, added support for building the dialer on MIPS Windows NT with Visual C++ 4.0 RISC Edition
- Fixed build issues on Alpha Windows NT, added support for building the dialer on Alpha Windows NT with either Visual C++ 4.0 RISC Edition or Visual C++ 6.0 Alpha Platform
- Fixed a very large number of build warnings which will likely fix a few crash bugs
- #186 - Fixed terminal widths greater than 256 not being supported
- #187 - Fixed resizing of the terminal window to greater than the primary display in any dimension introducing white space
- #227 - Fixed not being able to create SSH connections in the dialer
- Upgraded to libssh 0.10.6
- Upgraded to zlib 1.3.1
- C-Kermit will now find the dialer correctly if C-kermit isn't started from the dialer. This behaviour was broken by rebranding the Kermit 95 dialer - C-Kermit looks for it by its window title.
- The default k95custom.ini no longer produces an error when it's run in the console version of C-Kermit or in a build of C-Kermit that lacks SSH support.
- The SSH client will now check which authentication methods are allowed by the server after each authentication method is attempted. This allows the client to handle servers which change their list of allowed
authentication methods during login.
- Fixed the protols shown as available in show network
- Fixed the included openssl.exe not working on Windows XP
- Fixed paging for the "help options all" command
- Help text for "set gui window position" updated: this command is supported and it does work.
- The default k95custom.ini now displays a message the console-mode version (k95.exe) is run pointing new users to the GUI version (k95g.exe)
- The SSH client will now attempt authentication methods in the order specified by set ssh v2 authentication
- About window (Help -> About) now includes the beta number
- Added help text for set terminal autopage and set terminal autoscroll
- CKW no longer rejects updated OpenSSL DLLs provided the major and minor versions match
- Implemented the DECRQCRA VT420 escape sequence which is required by esctest2
3rd-party libraries
Kermit95 relies on several obsolete third-party libraries which are (or increasingly were) behind the various disabled features in C-Kermit for Windows. The specific versions were:
- Kerberos for Windows v2.2 beta 2. This belongs under /kerberos/kfw-2.2-beta-2/. The SDK alone does not appear to be sufficient - looks like you need to compile the full distribution from source. This requires Visual C++ 6.
- OpenSSL 0.9.7. This is easy enough to build. The code lives under /openssl/0.9.7/.
- Stanford Secure Remote Password libraries. I don't know which version is required but the latest release looks like it came out at around the same time as the last release of Kermit95. SRP builds just fine with Visual C++ 5. It needs to be linked against OpenSSL so that should be built first. The SRP code lives under /srp. The build has to be modified to use the dynamically linked version of the C runtime (it uses static by default).
- OpenSSH, a special variant of version 3.0.2p1 that was refactored into a library and reworked with GSSAPI and SRP support. This code has not been released (it would require significant work to bring up to
date anyway). It lives in /kermit/k95/ssh
- Meridian SuperLAT: For LAT. Unknown version, header file dates to late 1995. The SDK lived in /superlat
- DEC Pathworks32: For LAT and CTERM. Unknown version with SDK files dated late 1997. The SDK lived in /pwsdk - Turns out the SDK isn't required at all
- Zinc Application Framework v4.2 (modified): Used by the dialer. The SDK lived in /zinc
- 'P' by Oy Online Solutions Ltd: The XYZMODEM implementation. Originally a freeware DLL for OS/2, ported to Windows by Columbia which had a source code license.
It lived in /kermit/p95 - Update: As of December 2022, this library is now available under the 3 clause BSD license
Other Notes
- Source code index - list of source files and their contents.
- Targets - Some very brief notes on the targets available in the makefile.