The scripting infrastructure has been rewritten. It is now called the task engine. There are no longer any artificial dependencies between actions initiated by different sources (keyboard, scripts, HTTP requests, etc.). Accidental blocking behavior has been (almost) eliminated. Unrelated operations are now properly concurrent, within the limitations of there still being just one emulated terminal and host session to control. For example, c3270 and wc3270 now continue to respond to host messages while at the prompt or while a printer dialog is showing.
The state of the task engine can be displayed with the Tasks query.
A new emulator has been created, b3270. It is a common back-end process that handles the 3270 protocol and host interactions, communicating with different user-interface implementations using a simple XML-based protocol. None of the existing emulators have been converted to use b3270, but a new Windows emulator (wx3270) uses it.
The c3270 prompt has been generalized and is available to all of the 3270 emulators as the x3270 prompt. The Prompt() action (or a menu option) creates a new instance of the prompt in a window. The prompt now uses color to distinguish error messages.
Show() / Query() merge and expansion
- About (new)
- Actions (new)
- BuildOptions (new)
- CodePages (new)
- ConnectTime (new)
- Copyright (new)
- Cursor1 (new; the old Cursor query is still present, but hidden)
- Keymap was merged from c3270 Show()
- Model deprecated; Set(model) is preferred
- Proxies (new)
- Proxy (new)
- ScreenSizeCurrent is a replacement for ScreenCurSize
- ScreenSizeMax is a replacement for ScreenMaxSize
- Tls is the new name for Ssl
- StatsRx (new)
- StatsTx (new)
- Status is now hidden
- Tasks (new)
- TelnetHostOptions (new)
- TelnetMyOptions (new)
- TerminalName (new)
- TlsProvider (new)
- TlsSessionInfo (new)
- Tn3270eOptions (new)
- TraceFile (new)
- Version (new)
A new Set() action has been added, which is similar to the Toggle() action. The difference between Set() and Toggle() happens when no value is specified for a setting. Without a value specified, Set() will display the current value; Toggle() will (if the setting is Boolean) invert the setting's value. Both actions list the current values of all settings if no parameters are given.
These previously-deprecated resources were removed:
- cursorPos (assumed true now)
x3270 APL mode
APL keyboard operation on x3270 has changed. There is no longer a fixed APL keymap. Instead, the key combination Shift-Escape toggles a new APL mode, which changes how how paste operations are handled (preferring the APL definitions for Unicode characters that have both APL and non-APL mappings), as well as setting a temporary keyboard map and a temporary compose map.
A Wiki has been created for x3270, https://x3270.miraheze.org. It is still a work in progress, but in time, all of the documentation will be moved to the Wiki.
New connection states
The Operator Information Area now displays more information about the state of pending host sessions, explicitly indicating what stage of negotiation the emulator is in. For example:
- [DNS]: Name resolution
- [TCP]: TCP connection
- [Proxy]: Proxy protocol negotiation
- [TLS]: TLS protocol negotiation
- [TELNET]: TELNET protocol negotiation
- [TN3270E]: TN3270E protocol negotiation
1-origin actions and queries
- Ascii1() is the 1-origin version of the Ascii() action.
- Ebcdic1() is the 1-origin version of the Ebcdic() action.
- MoveCursor1() is the 1-origin version of the MoveCursor() action.
- The Cursor1 query is the 1-origin version of the Cursor query.
NVT character display
Keyboard disable during script execution
Temporary compose maps
Offset-based cursor addressing
New ReadBuffer Options
The ReadBuffer() action supports two new modes. Unicode mode reports buffer positions as hexadecimal Unicode code points. Field mode reports only on the current field instead of the entire buffer, and includes a preamble describing the field attributes and length.
The Script() action now accepts a number of options to control script invocation. For example, POSIX-based systems can now use an s3270 protocol socket for script commands (as is the default on Windows), and scripts can use HTTP for script commands.
HTTP server improvements
New TLS information
The server's TLS certificate can now be displayed via the TlsCertInfo query.
c3270 progress displays
The c3270 Operator Information Area is now used to display information about the progress of connections and file transfers. These were formerly displayed at the prompt.
x3270 high-resolution display support
x3270 now has limited support for high-resolution displays. It will automatically scale its basic visual elements based on the setting of the
Xft.dpi resource, which can be overridden by the dpi resource. Fonts can be automatically scaled via the x3270a utility.
Support has been added for always-insert mode, which puts x3270 into insert mode after each keyboard reset (while in 3270 mode). When always-insert mode is true, a Reset no longer clears insert mode, so it must be explicitly turned off via Set(insertMode) or Toggle(insertMode).
A new insertMode resource is used to control insert mode. The Insert() action is now deprecated, and is an alias for Set(insertMode). The ToggleInsert() action is now deprecated, and is an alias for Toggle(insertMode).
Right-to-left language support changes
Model configuration changes
The -color and -extended options, and the corresponding m3279 and extended resources have been removed. Their functions have long since been subsumed by the model resource and -model command-line option.
Charset becomes codepage
Other removed and changed resources
The color8 resource has been removed.
The cursorPos resource has been removed. The emulator now operates as if cursorPos were set to true.
The dftBufferSize resource was replaced by the ftBufferSize resource some time ago, and has now been removed.
The dsTrace and eventTrace resources have long been deprecated aliases for the trace resource, and have now been removed.
The tls resource has been changed to the startTls resource.
TELNET disable prefix
Transfer action syntax
Parameters to the Transfer() action are no longer required to use keyword=value syntax.
Values can just follow the keyword sequentially, so
"HostFile=xxx text a" can be given as
HostFile,"xxx text a".
Proxy usernames and passwords
The HTTP, SOCKS4 and SOCKS5 proxies can now accept a username and password,
delimited by an
30. December 2019