Wingware Early Access Program

Wingware's Early Access Program lets you try out new versions of Wing while they are still under development.

You can participate in this program simply by downloading and using the early releases of Wing. We ask only that you keep your feedback and bug reports private by submitting them through Wing's Help menu or by email to support@wingware.com.

Wing 8 Alpha 1 Introduces Docker and Container Support

Wing 8 Screen Shot

This early release of Wing 8 adds the ability to develop Python code in the context of a container environment, such as those provided by Docker.

The first alpha supports development only with one container. Later releases will address container orchestration and multi-container development. For detail, see Limitations below.

The major new features in this release are available only in Wing Pro. Wing Personal and 101 contain only more minor changes and improvements.

Downloads

Wing Pro 8.0.0.0

Wing Personal 8.0.0.0

Wing 101 8.0.0.0

Please try it and email us if you find any problems or have suggestions!

New in Wing 8

Support for Containers (Wing Pro)

Wing 8 adds support for developing, testing, and debugging Python code that runs inside a container, such as those provided by Docker or other containerization system. When a container is used, the Python Executable in Project Properties is set to Container. This selects a container configuration that tells Wing how local resources are shared into the container and how to launch code in the container environment. Wing then works with files on local disk for editing, code analysis, error checking, and version control, but transparently runs code for testing and debugging inside the container.

For details, see Working with Containers in the Wing Manual found in Wing 8's Help menu.

Support for Docker (Wing Pro)

Wing 8 also adds support specifically for Docker, in the form of two new project types in the New Project dialog:

1) Use Existing Docker Container uses an already-created Docker container in a newly created Wing project.

2) Create New Docker Container creates a new Docker container along with a new Wing project. You can specify the Python version to use and a list of packages to install into the new container with pip.

For details, see Using Wing with Docker in the How-Tos found in Wing 8's Help menu.

Other Improvements

  • Support auto-completion of f-string expressions
  • Allow setting the user interface and editor colors independently from each other
  • Add missing attributes to the sys.stdout/err replacements used while debugging
  • Fix intermittent failure to display all output for short-lived debug processes
  • Add preference Editor > Auto-Editing > Mutate Adjacent Quotes for finer control over auto-editing
  • Improve source analysis of simple expressions, imports from modules with __all__, and global/non-local statements
  • Enable structural folding in .pyi and .pi files
  • Add basic syntax highlighting for Dockerfile
  • Reduce application startup time
  • Fix several other usability issues

See the change log for details.

Limitations

This early access release focuses on adding the core functionality needed to support containerized development with a single container. There is not yet support for multiple containers as might be used with docker-compose and kubernetes. We anticipate making changes to how container instances are managed and how their network environment may be configured. Specifically:

(1) In this alpha release, Wing starts a new container instance for each debug, testing, or OS Commands process run from the IDE. An additional instance may also be started from time to time, to inspect and access container-only files. Future releases of Wing 8 will add some ability to control when a new instance is started (for example with docker run) and when additional debug, test, or other processes should reuse an existing instance (for example with docker exec). This is also part of adding support for container orchestration systems like docker-compose and kubernetes.

(2) This alpha release simplifies how Docker container networking is configured when Wing creates a new Docker container. On macOS and Windows, the default configuration is used. On Linux, the --network="host" command line option is added to docker run. How networking is approached may change in future releases of Wing 8. However, the ability of processes running on the container to connect to the host system via TCP/IP will likely remain an invariant minimum requirement.

We welcome feedback that will help us in taking container support to the next level. Please email your suggestions to support@wingware.com.

Some additional temporary limitations to be aware of include:

  • Wing currently assumes that the command docker is on your PATH.
  • Only containers that run Linux or macOS are supported, even if Wing is running on Windows.
  • Applications that require TCP port forwarding are not yet supported because of the above-mentioned simplifications in how container instances are managed.
  • If a virtualenv is run in the container, the container configuration must use the full path to the virtualenv's Python to make use of that environment. Specifying the activation command instead (with Activated Env) is not supported.
  • Containers can only run on the local host where Wing is running. Running a container on a remote host, VM, or device is not yet supported.

Addressing these limitations will require some design changes. As we move Wing 8 through the early access program, you should expect changes to all aspects of how containers are configured and used, likely requiring recreation of projects with each release.

Changes and Incompatibilities

  • Wing now uses utf-8 as the default encoding for all Python files when working with Python 3.
  • The preferences used to select user interface display theme and color palettes have changed to make them easier to understand and to allow concurrent selection of different palettes for the editor and the rest of the UI.
  • Deprecated commands and scripting API have been removed.
  • The legacy support for ancient namespace merging in Zope2 has been removed. Debugging with the WingDBG product has also been removed; this was an optimization for starting Zope debugging in the early days of Wing, when machines were much slower. Zope should now just be launched from within the IDE for debugging.
  • The form of some executable and installation directory names have changed, to add spaces and/or omit the minor version number.
  • More Python installations are considered in selecting the default Python when Python is not found on the PATH, thus the default may change on some systems from what was used in Wing 7.

If you have questions about any of this, please don't hesitate to contact us at support@wingware.com.