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.0.0.5: June 10, 2021

Improved Code Analysis & Warnings, Source Assistant, Container and Cluster Support, and Much More

Wing 8 Screen Shot

This early release of Wing 8 improves update of Code Warnings during editing, improves type analysis and display in Source Assistant, supports Django projects on remote hosts and containers, and allows specifying port forwards in remote host configurations.

This release also fixes about 50 other bugs, including:

  • Fix many bugs affecting environments running on containers or clusters
  • Fix saving HTML and XML files
  • Fix reformatting Python code on containers and remote hosts
  • Run external checkers for container files on the container and not locally
  • Fix obtaining the login environment on Apple Silicon macOS
  • Fix drag and drop within the Project tree
  • Fix failure to show Bookmarks tool filter fragment entry area
  • Fix failure to install the remote agent on some hosts
  • Fix enabling and disabling pylint warnings by priority
  • Fix failure to reformat with Black when using Python 3.9
  • Fix failure to update Packages tool to new Python environment after the project changes
  • Fix starting debugger on some filenames with non-ascii characters

See the change log for details.

All of 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.5

Wing Personal 8.0.0.5

Wing 101 8.0.0.5

Please try Wing 8 and email us if you find problems or have suggestions!

New in Wing 8

Support for Containers and Clusters (Wing Pro)

Wing 8 adds support for developing, testing, and debugging Python code that runs inside containers, such as those provided by Docker, LXC/LXD 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.

Wing 8 also supports working with clusters of containers managed by a container orchestration system like Docker Compose. When a cluster is used, the Python Executable in Project Properties is set to Cluster. Clusters may be debugged as a whole from the Containers tool in the Tools menu. In addition, individual debug, test, Python Shell, and OS Commands processes may be started on containers configured by the cluster, either on synthesized out-of-cluster instances of those containers or in-cluster on the actively running cluster.

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

New Package Management Tool (Wing Pro)

Wing 8 adds a new Packages tool that provides the ability to install, remove, and update packages found in the Python environment used by your project. This supports pipenv, pip, and conda as the underlying package manager. Packages may be selected manually from PyPI or by package specifications found in a requirements.txt or Pipfile.

For details, see Package Manager in the Wing Manual found in Wing 8's Help menu.

Improved New Project Support (Wing Pro)

Wing 8 redesigns New Project support so that the host, project directory, Python environment, and project type may all be selected independently. New projects may use either an existing or newly created source directory and existing or newly created Python environment.

This change adds and/or improves the following specific capabilities:

  • Django and all other project types may be created either on the local host or on a selected remote host, VM, or container.
  • A new source directory may be created for the project, optionally by cloning a revision control repository.
  • A new virtualenv, pipenv, Anaconda env, or Docker container may be created together with the new project, optionally with installation of packages specified individually or in a requirements.txt or Pipfile.

For details, see Creating a Project in the Wing Manual found in Wing 8's Help menu.

Expanded Python Code Analysis and Code Warnings

Wing 8 expands the capabilities of Wing's static analysis engine, by improving its support for f-strings, named tuples, imports from modules that contain __all__, multiple return value types, tuple unpacking, stringified and commented type hints, simple expressions, and global/non-local statements.

As a result of this work, Find Uses, Refactoring, and auto-completion now work with f-string expressions and Wing's built-in code warnings now cover named tuples.

The Code Warnings tool now also allows disabling individual syntax errors and indent warnings and code warning indicators are updated more cleanly during edits.

Finally, Wing's Source Assistant now displays more detailed and complete value type information.

Other Improvements

  • Native support for macOS on Apple Silicon (M1) hardware
  • Allow setting the user interface and editor colors independently from each other
  • Allow specifying port forwards in a remote host configuration
  • Better support Django running on a remote host
  • 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
  • Enable structural folding in .pyi and .pi files
  • Add basic syntax highlighting for Dockerfile
  • Reduce application startup time
  • Add improved extension API for reading, writing, and inspecting files and running child processes, either locally or on a remote host
  • Fix several other usability issues

See the change log for details.

Details

Limitations

This early access release has a few limitations, some of which will be addressed by future development:

  • Only Docker, Docker Compose, and LXC/LXD are supported. There is currently no explicit support for Kubernetes or other container orchestration systems.
  • Wing currently assumes that docker, docker-compose, and lxc are on your PATH. On macOS, this may be a problem when launching Wing from the Finder. Running /Applications/Wing Pro.app/Contents/Resources/wing from the command line ensures that the correct PATH is set, or add /usr/local/bin to the PATH in Wing's Project Properties.
  • Only containers that run Linux or macOS are supported, even if Wing is running on Windows.
  • If a virtualenv is run in a 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) will not work.
  • 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.
  • New LXC/LXD containers and Docker Compose clusters cannot be created from the New Project dialog, but existing LXC/LXD container and Docker Compose cluster configurations may be used during project creation.

If you need any of these features, please let us know by email to support@wingware.com.

Changes and Incompatibilities

Wing 8 makes some incompatible changes from Wing 7, as follows:

  • When working with Python 3, the default encoding for Python files is now utf-8.
  • 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.
  • Wing Pro now runs on Python 3.9. All customer extension scripts will need to be updated before they can be used by Wing 8.
  • The legacy script-based Django support has been removed and replaced by the redesigned New Project functionality.
  • 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.
  • Wing Personal no longer includes documentation and features specifically designed for third party modules, packages, and frameworks such as Django and Pylint. This functionality is now only available in Wing Pro.
  • The editor background preference has been removed since it conflicts with setting the editor palette, which is now possible independently of setting the overall display palette.
  • Support for Django 1.3 and earlier has been dropped.

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