Move from Wine 8.0.2 and the Wine 8.0 release series to Wine 9.0 which
represents another year of upstream development and over 7000 individual
changes.
Touted highlights include the new WoW64 architecture and an experimental
Wayland driver - neither of which upstream nor us have enabled yet.
Other areas of major changes include:
- The PostScript driver is reimplemented to work from Windows-format
spool files and avoid any direct calls from the Unix side.
- The Vulkan driver supports up to version 1.3.272 of the Vulkan spec.
- A number of GdiPlus functions are optimized for better graphics
performance and quite some work on Direct3D.
- The Windows Media Video (WMV) decoder DirectX Media Object (DMO),
DirectShow Audio Capture filter, and DirectShow MPEG‑1 Video Decoder
filter are implemented.
- DirectInput action maps are implemented, improving compatibility
with many old games that use this to map controller inputs to
in-game actions.
- URL/URI protocol associations are exported as URL handlers to the
FreeBSD desktop.
- Monitor information like name and model id are retrieved from the
physical monitor's Extended Display Identification Data (EDID).
- Internationalization work, new timezone database (2023c), 15.1.0
of the Unicode Standard.
- The default Windows version for new prefixes is set to Windows 10.
- Address space layout randomization (ASLR) is supported for modern
PE binaries, to avoid issues with address space conflicts.
FluidSynth (2.3.3), Musl (1.2.3), and Zydis (4.0.0) are now bundled
and several bundled libraries have been updated: Vkd3d (1.10),
Faudio (23.12), LDAP (2.5.16), LCMS2 (2.15), LibMPG123 (1.32.2),
LibPng (1.6.40), LibTiff (4.6.0), LibXml2 (2.11.5), LibXslt (1.1.38),
Zlib (1.3).
Extensive release notes are at https://www.winehq.org/announce/9.0 .
We now explicitly build --without-pcap, --without-pcsclite, and
--without-wayland and enable gstreamer support only when ALSA or
OSS are enabled.
And we include files/extra-patch-tools-winebuild-res32 to work
around intermittent build problems on i386 and have to drop
files/patch-dlls_ntdll_unix_loader.c which no longer applies.
emulators/wine8 is available for anyone needing that previous version.
Move from the Wine 7.0 to the Wine 8.0 release series, specifically
8.0.2 as the second minor release with additional bug fixes.
This represents a year of upstream development effort and over 8,600
individual changes. The main achievement is the completion of the
conversion to PE format:
- All modules can be built in PE format. This is an important milestone
on the road to supporting various features such as copy protection,
32-bit applications on 64-bit hosts, Windows debuggers, x86
applications on ARM, etc.
- A special syscall dispatcher is used for PE -> Unix transitions to
avoid the overhead of a full NT system call. This minimizes the
performance impact of the new architecture.
Also WoW64 has seen significant work:
- WoW64 thunks are implemented for essentially all Unix libraries,
enabling a 32-bit PE module to call a 64-bit Unix library. Once
the remaining direct PE/Unix calls have been removed, this allows
running 32-bit Windows applications without any 32-bit Unix library.
- When the 32-bit Wine loader isn't found, 32-bit applications are
started in the new experimental "Windows-like" WoW64 mode (where
32-bit code runs inside a 64-bit host process). This mode can be
enabled by building with the '--enable-archs' configure option.
This is still under development and not yet recommended for general
use. Applications started in this mode print the warning "starting
in experimental wow64 mode".
That said, i386 builds on FreeBSD are currently broken, hence our
flavor of WoW64 is not available for the time being.
Other areas of major changes include:
- The "Light" theme is enabled in the default configuration, which
provides a more modern look.
- Graphics drivers, effects and other improvements in Direct2D,
many optimizations and features around Direct3D.
- MPEG-1 audio decoder filter for layers 1, 2, and 3.
- Media Foundation, controller hotplug support, force feedback effect
support, and further improvements for input devices.
- Many changes around Unicode support.
- The ApiSetSchema database is implemented, replacing all the api-ms-*
forwarding modules. This reduces disk and address space usage (and
our packaging list).
- DOS file attributes are persistent, and stored on disk using the
filesystem's extended attributes, in a format compatible with Samba.
- JScript related improvements.
- Various improvements to builtin applications, development tools,
and the build system.
The bundled Faudio, LCMS2, libjpeg, libmpg123, libpng, libtiff,
libxml2, libxslt, and zlib libraries have been updated. The vkd3d
and LDAP libraries are now bundled in the source tree. The OpenAL
library is no longer used.
LLVM is now a heavy build dependency in addition to GCC.
Some whitespace changes in the Makefile to sync up with wine-devel
which diverged via some extra such changes. And loads, loads of
packaging list changes.
Extensive release notes are at https://www.winehq.org/announce/8.0 .
PR: 272710
WoW64 currently uses i386 packages on amd64 under special PREFIX, so
- Include mesa-devel paths to LIBGL_DRIVERS_PATH override
- Respect libmap.conf(5) in 32-bit packages
To use simply install mesa-devel as regular and WoW64 package e.g.,
$ pkg install mesa-devel
$ /usr/local/share/wine/pkg32.sh install mesa-devel
In case of issues simply remove mesa-devel e.g.,
$ pkg delete mesa-devel
$ /usr/local/share/wine/pkg32.sh delete mesa-devel
PR: 271140
Reviewed by: Alex S
Approved by: maintainer timeout (2 months)
Move from the Wine 6.0 to the Wine 7.0 release series, specifically
(still) Wine 7.0 there.
This represents a year of development effort and over 9,100 individual
changes. It contains a large number of improvements. Areas of major
changes are:
- Most modules have been converted to PE format.
- Better theming support, with a bundled theme for a more modern look.
All builtin applications support theming, as well as High DPI rendering.
- Vastly improved HID stack and joystick support.
- New WoW64 architecture (which supports running a 32-bit Windows
application inside a 64-bit Unix host process, using thunks to map
32-bit NT system calls to the 64-bit NTDLL).
- Direct3D has seen significant improvements.
Specifically on FreeBSD more low-level system information queries like
memory and battery status are now supported. And we no longer need to
refer to /proc and procfs in our installation message.
The Mono engine is now at version 7.0.0 with quite some changes,
Packaging changes come on two levels: Firstly, many support libraries
such as FAudio, GSM, LCMS2, libjpeg, libjxr, libmpg123, libpng, libtiff,
libxml, libxslt, zlib are now directly bundled in where we used many
of those via other ports (or completely disabled their use). On the way
we shed the LIBXSLT and MPG123 options.
Secondly, the directory structure under lib/ has been completely revamped.
Update MASTER_SITES to the new winehq.org download site.
Extensive release notes are at https://www.winehq.org/announce/7.0 .
PR: 266976
This back ports the patch I pushed upstream and that wine-devel has
inherited from there a few months ago. It will go away with the next
major release.
PR: 257398, 260165 [1]
Suggested by: alt2600@icloud.com [1]
In our situation, where we leverage 32-bit, i386 executables of Wine
in an amd64 world running 64-bit executables of Wine, the rpath of
$PREFIX/lib/gcc10 which Mk/bsd.gcc.mk sets for the former makes the
dynamic linker attempt to load a 64-bit version of libgcc_s.so which
happens to be at that location on amd64.
Removing this rpath setting at compilation time would be comparatively
more involved, so leverage LD_32_LIBMAP which we are already using in
wine-wow64.sh to point to the system version of libgcc_s.so.
This works since for C code both flavors of libgcc_s.so are fully
compatible and Wine's C++ dependencies Wine (like openal-soft and
various Mesa userspace graphics drivers) are actually compiled with
clang. In other words we are only reverting to the version of the
library they would normally load without rpath interference.
Bump PORTREVISION so new packages with the tweaked script will be
generated.
PR: 259926
Reported by: nc
Tested by: nc
This likely won't be necessary with the next major version any longer
due to upstream work by Damjan; for the time being it is still required.
PR: 258795
After recent changes, given an uninitialized root dir pkg now fails
with:
pkg: Error opening the trusted directory /usr/share/keys/pkg/trusted
pkg: Error loading trusted certificates
This works around it for our WoW setup.
PR: 259404
Move from the Wine 5.0 release serious to the Wine 6.0 series and
specifically Wine 6.0.1.
This represents another year of development effort and over 8,300
individual changes. It contains a large number of improvements.
Areas of major changes are:
- Core modules in PE format.
- Vulkan backend for WineD3D.
- DirectShow and Media Foundation support.
- Text console redesign.
In terms of packaging changes are moderate this time:
- As in case of 8c03aa8bb1 which has
sat with wine-devel for eight months remove
files/patch-dlls_kernel32_Makefile.in which is not needed any longer.
- Our special dependency emulators/wine-gecko goes to version 2.47.2
and emulators/wine-mono to version 5.1.1.
- The GLU library is not used any longer.
Extensive release notes are at https://www.winehq.org/announce/6.0
and https://www.winehq.org/announce/6.0.1 .
PR: 257284
on options chosen and packages installed (or not).
Temporarily add a patch files/patch-dlls_qcap_v4l.c to resolve problems
where v4l (multimedia/libv4l) is used when present, even if explicitly
disabled during ./configure.
PR: 254601
Submitted by: Felix Palmen <felix@palmen-it.de>
This represents a year of development effort with over 7,400 individual
changes. This port and the wine-devel port have been in sync as closely
as possible, and this update is mostly copying over from the -devel port
minus support for the Wine Staging patchset (and STAGING option).
Highlights of this new release include built-in modules in PE format,
multi-monitor support, Vulkan 1.1 support, and an XAudio2 reimplementation.
This also comes with updates of the emulators/wine-gecko and
emulators/wine-mono ports to match their -devel counterparts:
version 2.47.1 for wine-gecko and version 4.9.4 for wine-mono.
And we "lose" four local patches that got integrated or became obsolete
upstream.
The following is a more detailed list extracted from the extensive
release notes:
== Graphics
- Multiple display adapters and monitors are properly supported, including
dynamic configuration changes.
- The Vulkan driver supports up to version 1.1.126 of the Vulkan spec.
- The WindowsCodecs library is able to convert more bitmap formats,
including palette-indexed formats.
== Direct3D
- Fullscreen Direct3D applications inhibit the screensaver.
- DXGI swapchain presents inform the application when the corresponding
window is minimized. This typically allows applications to reduce CPU
usage while minimized, and is in some cases required to allow the
application window to be restored again.
- Switching between fullscreen and windowed modes using the standard
Alt+Enter combination is implemented for DXGI applications.
- The following features are implemented for Direct3D 12 applications:
- Switching between fullscreen and windowed.
- Changing display modes.
- Scaled presents.
- Swap intervals.
These features were previously already implemented for earlier
versions of the Direct3D API.
- The handling of various edge cases is improved. Among others:
- Out of range reference values for the alpha and stencil tests.
- Sampling 2D resources with 3D samplers and vice versa.
- Drawing with mapped textures and buffers.
- Usage of invalid DirectDraw clipper objects.
- Creating Direct3D devices on invalid Windows, like the desktop window.
- Viewports with a minimum Z larger than or equal to the maximum Z.
- Resources bound through both shader-resource views and render-target
or depth-stencil views at the same time.
- Blits between formats with and without alpha components.
Since well-behaved applications don't rely on these edge cases, they
typically only affect one or two applications each. There are
nevertheless quite a number of them.
- Dirty texture regions are tracked more accurately for Direct3D 8 and 9
texture uploads.
- Uploads of S3TC-compressed 3D textures require less address space.
Since 3D textures can be potentially large, and address space
exhaustion is a concern for 32-bit applications, S3TC-compressed 3D
textures are uploaded per-slice, instead of in a single upload.
- The ID3D11Multithread interface is implemented.
- Various lighting calculation fixes and improvements for older DirectDraw
applications have been made.
- Limited support for blits across swapchains is implemented.
- More shader reflection APIs are implemented.
- The wined3d CPU blitter can handle compressed source resources.
Support for compressed destination resources was already implemented
in a previous release.
- The Direct3D graphics card database recognizes more graphics cards.
- New HKEY_CURRENT_USER\Software\Wine\Direct3D registry keys:
- "shader_backend" (REG_SZ)
The shader backend to use. Possible values are "glsl" (default)
for GLSL, "arb" for ARB vertex/fragment programs and "none" to
disable shader support.
- "strict_shader_math" (REG_DWORD)
Enable (0x1) or disable (0x0, default) stricter translation of
Direct3D shaders, potentially at a performance cost. This
currently only makes a difference with the default GLSL shader
backend in combination with the proprietary NVIDIA drivers.
- Deprecated HKEY_CURRENT_USER\Software\Wine\Direct3D registry key:
- "UseGLSL"
This has been superseded by the "shader_backend" setting above.
== D3DX
- Support for compressing textures using S3TC-compression.
- Various operations, like e.g. texture fills, on unmappable surfaces
are implemented more correctly. Previously their implementation
relied on the underlying Direct3D implementation not enforcing
mapping restrictions.
- Various improvements and fixes have been made to the effect framework.
== Kernel
- Most of the functions that used to be in Kernel32 are moved to
KernelBase, to follow the architecture of recent Windows versions.
- Libraries of the wrong 32/64-bitness are ignored when found in the
search path, to enable loading the correct one if it's found further
in the path.
- Kernel objects are better emulated for device drivers that expect to
manipulate objects from the kernel side.
- The kernel-level synchronization objects like spin locks, fast
mutexes, remove locks, and resource variables are implemented.
- The system battery state is properly reported to applications.
== User interface
- Minimized windows are displayed using their title bar instead of the
old Windows 3.1-style icons.
- The new button styles Split Buttons and Command Links are implemented.
- The Edit control sets margins correctly also for CJK fonts.
== Desktop integration
- Symbolic links to the corresponding Unix directories are created for
the 'Downloads' and 'Templates' folders.
== Input devices
- Plug & Play device drivers can be installed and loaded on startup.
- Game controllers are better supported, including proper support for
hat switch, wheel, gas and brake controls.
== .NET
- The Mono engine is updated to version 4.9.4, including parts of the
Windows Presentation Foundation (WPF) framework.
- The Gecko and Mono add-ons support shared installation, where the
files are used directly from a global location under /usr/share/wine
instead of being copied into every new prefix.
== Internet and networking
- The Gecko engine is refreshed to support recent toolchains.
- A number of new HTML APIs are implemented.
- MSHTML supports some SVG elements.
- Error object and exception propagation are supported in VBScript.
- A number of VBScript builtin functions are implemented.
- JScript EcmaScript compliant mode supports more features.
- JScript and VBScript script objects expose type info interfaces.
- The HTTP proxy configuration can be retrieved through DHCP.
- Passport HTTP redirects are supported.
- The HTTP service and corresponding client-side library (HTTPAPI) are
partially implemented.
== Cryptography
- ECC (elliptic-curve) keys are supported when using GnuTLS.
- Importing keys and certificates from PFX blobs is implemented.
- The PBKDF2 key derivation algorithm is supported.
== Text and fonts
- OpenType positioning features are supported in DirectWrite, and
enabled for Latin script by default, including kerning.
- Font data access is made safer by validating the various data tables
before using them.
- DirectWrite interfaces are updated to a recent SDK, implementing
some of the latest API additions.
== Audio / Video
- The XAudio2 libraries are reimplemented to use the external FAudio
library, for better compatibility.
- The Media Foundation libraries are fleshed out, including:
- Support for builtin and user async work queues.
- Ability to submit periodic callbacks, waiting, scheduled, and
regular work items, with support for item priority.
- Support for media event queues.
- Various core API to handle media type objects, stream and
presentation descriptors, object attributes, byte stream objects,
samples and buffers.
- Initial Source Resolver implementation.
- Initial implementation of Source Reader API.
- Implementation for Sample Grabber object.
- Core support for building topology objects.
- Builtin presentation clock implementation, started implementing
Media Session functionality.
- The video capture filter has been ported to use v4l2 instead of the
deprecated v4l1 API, allowing the use of some cameras which do not
support v4l1.
- Support for YUV to RGB translation and reading from v4l2 devices
using mmap() has been removed; we now depend on libv4l2 for both of
these things.
- The builtin AVI, MPEG-I, and WAVE decoders have been removed; we now
depend on GStreamer or the Mac QuickTime Toolkit to decode such
media files.
- Some more VMR7 configuration APIs are implemented.
- The sound drivers support per-channel volume adjustments.
== Internationalization
- Unicode character tables are based on version 12.1.0 of the standard.
- Unicode normalization is implemented.
- The geographic region id is automatically set in the registry based
on the current locale. It can be modified if necessary under
HKEY_CURRENT_USER\Control Panel\International\Geo.
- The Sinhalese and Asturian locales are supported.
- Codepage 28601 (Latin/Thai) is supported.
== RPC/COM
- The typelib marshaller supports complex structs and arrays.
- There is an initial implementation of the Windows Script runtime library.
- There is an initial implementation of the Microsoft ActiveX Data
Objects (ADO) library.
== Installers
- Microsoft Installer (MSI) Patch Files are supported.
- The WUSA tool (Windows Update Standalone Installer) supports
installing .MSU update files.
== PE modules
- The actual PE binaries are copied into the Wine prefix instead of
the fake DLL files. This makes the prefix look more like a real
Windows installation, at the cost of some extra disk space.
- Modules that have been converted to PE can use standard wide-char C
functions, as well as wide-char character constants like L"abc".
This makes the code easier to read.
- Not all modules have been converted to PE yet; this is an ongoing
process that will continue during the Wine 5.x development series.
== Development tools / Winelib
- The Visual Studio remote debugger can be used to debug applications
running under Wine.
- The Debug Engine library (DBGENG) is partially implemented.
- The Resource Compiler and IDL Compiler support a '--sysroot' option
to allow locating header files in cross-compile environments.
- Winegcc supports the options '--target', '--wine-objdir',
'--winebuild' and '-fuse-ld' that make it easier to use as a
cross-compiler, or with custom toolchains.
- The wine/unicode.h header is no longer available to applications,
since the functions will ultimately be removed and replaced by the
standard C runtime wide character functions.
== Build infrastructure
- The 'fastcall' calling convention is supported in spec files. It
uses the correct name mangling for Windows builds.
- A '-import' entry point flag is supported in spec files, to mark
functions that need a hotpatch code prefix to be generated for their
import thunks.
- Winebuild supports a '--builtin' option to add a special signature
to PE binaries to mark them as Wine builtins.
== Builtin applications
- The CHCP tool is implemented. It allows setting the console codepage.
- The MSIDB tool is implemented. It allows manipulating MSI databases.
== Performance improvements
- The various time functions use higher performance system clocks if
available, to reduce the overhead in the rendering loop of many games.
- File lookups take advantage of the ext4 filesystem case folding
support if it's enabled on the directory being searched.
- No-data style listboxes (LBS_NODATA) have better performance for
large numbers of items.
- Slim Reader/Writer locks, keyed events, and condition variables use
futexes on Linux to avoid wineserver round trips.
== New external dependencies
- The FAudio library is used to implement XAudio2.
- The Inotify library is used for file change notifications on BSD
platforms.
- The Video4Linux version 2 library is used instead of version 1.
This represents over a year of development effort and around 6600
individual changes.
Support for Microsoft Office 2013 is a major highlight, and it
contains improvements across the board, as well as support for
many new applications and games.
== Text and fonts
- More DirectWrite features are implemented, including:
- Drawing of underlines.
- Renderer sees drawing effect associated with text segment.
- Support for color fonts in COLR/CPAL format.
- Initial font fallback support, builtin data for some of CJK ranges.
- Support for Wine-specific font replacement registry settings.
- Improved font metrics resolution in case of incomplete or
ambiguous font data.
- Support for EUDC font collection based on current registry
settings.
- Font embedding in PDF files is supported.
- The RichEdit control supports bulleted and numbered lists.
- Bold glyphs can be synthesized also for bitmap fonts.
- Character tables are based on version 9.0.0 of the Unicode Standard.
== Graphics
- Window, bitmap and GDI DC render targets are implemented in Direct2D.
- A wide range of optimizations make the DIB engine noticeably faster.
- GDI graphic paths are reimplemented for better compatibility; they
are also supported with enhanced metafiles.
- Gradients are supported in GDI enhanced metafiles.
- Metafiles are better supported in GdiPlus.
== User interface
- Clipboard support is reimplemented for better compatibility; copy & paste
of HTML text is also improved. Drag & drop works more smoothly.
- In desktop mode, the taskbar displays running applications and
allows switching between them.
- Version 4 of the system tray notification protocol is implemented.
- In desktop mode, some less common display resolutions like 640x400
and 1280x960 are supported.
- More user interface elements scale correctly with high-DPI screens.
== Direct3D
- More Direct3D 10 and 11 features are implemented, including:
- Several more shader model 4 and 5 shader instructions.
- Several more resource formats.
- Integer vertex shader inputs.
- Typeless resources.
- sRGB read/write support.
- Depth and stencil clears.
- Depth-only draws.
- Array textures.
- Index buffer offsets.
- Unordered access views.
- Primitive restart.
- The WineD3D graphics card database recognizes more graphics
cards. When available, the GLX_MESA_query_renderer GLX extension is
used to provide more accurate information about the graphics card.
- The (system) memory layout of texture resources more closely matches
Windows. This affects applications that write beyond the bounds of a
MIP-level, like for example League of Legends.
- The implementation of non-maskable multisample anti-aliasing is more
correct. In particular, when the ARB_internalformat_query extension
is available, only quality levels corresponding to specific sample
counts supported by the OpenGL implementation are reported to the
application. Previously, reporting a large number of non-maskable
multisample anti-aliasing quality levels would break some
applications.
- Direct3D 11 feature levels are supported.
- Retrieving a GDI device context from DXGI surfaces is
implemented. This is used for rendering to DXGI surfaces using GDI.
- More DXGI swapchain methods are implemented, particularly those
relating to switching display modes and switching to and from
fullscreen.
- When ARB_clip_control and ARB_viewport_array are both supported,
position fixups are slightly more efficient.
- The APPLE_client_storage extension is no longer used. It caused more
problems than it solved.
- New HKCU\Software\Wine\Direct3D registry keys:
- "CheckFloatConstants" (REG_SZ).
Setting this to "enabled" enables additional run-time bounds
checking on relatively addressed shader constant access. This
helps some (broken) applications, but comes at a performance cost.
- "MaxShaderModelHS", "MaxShaderModelDS" and "MaxShaderModelCS" (REG_DWORD).
These limit the maximum supported shader model for hull, domain,
and compute shaders respectively, analogous to the existing
"MaxShaderModelVS", "MaxShaderModelGS", "MaxShaderModelPS"
keys. Note that these shader types are new in shader model 5, so
setting this to anything lower than 5 will effectively disable
them.
- "SampleCount" (REG_DWORD).
Setting this registry key will force the multisample anti-aliasing
sample count to the specified value for swapchain render
targets. This allows anti-aliasing to be forced on applications
that do not otherwise support anti-aliasing themselves, but may
have no effect or break the application depending on the specific
application.
== DirectDraw
- Retrieving a GDI device context from a DirectDraw surface is
implemented in a more accurate way. In particular, retrieving a GDI
device context for a "client memory" surface will retrieve a GDI
device context that's backed by that same client memory.
- A number of fixes related to vertex transformation in early
DirectDraw versions have been made.
== D3DX
- The support for the D3DX 9 effect framework is more complete, in
particular:
- There is initial support for preshaders.
- Many more effect states are correctly applied.
- D3DX 10 and 11 asynchronous data loaders are implemented.
- The d3dx9 DLLs no longer forward to d3dx9_36, but are built from the
same source instead.
- The d3dcompiler DLLs no longer forward to d3dcompiler_43, but are
built from the same source instead.
== Sound and video
- GStreamer version 1.0 is supported for audio and video streams.
- DirectSound supports downmixing from 5.1 and 4.0 formats to stereo.
== Internet and networking
- The Web Services API is supported. The XML reader and writer are
implemented, along with support for serializing many common data
types. Basic support for making SOAP calls is also included. This
enables Microsoft Office 2013 online activation.
- The Gecko engine is updated to the version from Firefox 47.
- IDN name resolution is supported.
- Various SHA hashes are supported using GnuTLS.
- Looking up the host address prioritizes non-loopback interfaces,
which fixes a number of networked games.
- XML writing is faster for large files.
- Winsock supports the IP_DONTFRAGMENT socket option.
- Long URLs are handled correctly.
- JavaScript performance is improved. JSON is also supported.
== Internationalization
- There is proper support for the Persian locale.
- Uniscribe better supports right-to-left languages.
- Japanese Hiragana, Katakana and full-width/half-width character
mapping is implemented.
== 64-bit support
- The Mono engine has 64-bit support.
- C++ exceptions are handled correctly on x86-64, including nested
exceptions and collided unwinds.
- The debug registers are supported on x86-64.
== Built-in applications
- The 'winebrowser' helper application supports multiple arguments to
invoke the host browser or mailer.
- The 'reg' command-line registry utility supports the 'query'
command, all registry data types, and has more robust command line
handling.
- The 'winhlp32' help viewer properly displays tables and images.
- The 'wineconsole' tool better supports East-Asian fonts. Color
handling is also improved.
== Kernel
- A new driver architecture is in place for supporting HID devices.
This follows the Windows model, with platform-specific bus drivers
and HID minidrivers. It will be used in future releases to unify
support for HID devices, and potentially also for USB device
support.
- Loading multiple kernel drivers inside the same user-mode process is
supported. This is used for HID drivers.
- A directory cache is implemented, to allow returning files in the
expected order and avoid relying on platform-specific system calls.
- Many more API Set libraries (the oddly-named api-ms-win-* dlls) are
implemented.
- Interrupt 0x2d (used for debugger checks) is emulated.
== Miscellaneous
- Read interval timeouts are supported for serial ports.
- Variables starting with 'QT_' are filtered from the Unix environment
since they may have unwanted effects on Qt-based Windows applications.
- Support for joystick button mapping and force feedback effects is
improved.
- Many stream classes are implemented in MSVCIRT, the old I/O stream
C++ runtime.
- Windows Management Instrumentation (WMI) implements some more WBEM
classes.
- Most remaining OpenMP functions are implemented.
- Uninstallation support in MSI is improved.
== Configuration changes
- A number of DLLs are now built separately from a common source,
instead of forwarding to a master DLL. This means that native DLL
overrides need to be set on the specific version of the DLL being
loaded, instead of the master one. This applies to the d3dx9_*,
d3dcompiler_*, xaudio2_*, xapofx1_* and x3daudio1_* DLLs.
1.8 release series. This represents 17 months of development and around
13,000 individual changes.
This port now also supports amd64.
It generally syncs with the emulators/wine-devel port (from where we
have been syncing various packaging changes over time), now configures
--without-gettext in addition to --without-gettextpo and still refers
to emulators/wine-gecko-devel and emulators/wine-mono-devel for the
time being, but remains without a dependency on sysutils/prelink.
At a more detailed level, changes include:
== Text and fonts
- DirectWrite is implemented, and works for a number of applications.
Functionality includes:
- Font file loading from system or custom font collections.
- Building font families by combining similar font faces.
- Font matching algorithm using weight/width/slope model.
- Basic text layout support.
- Bi-directional level resolution and line breaks resolution.
- GDI interoperability API, including rendering to DIB section base target.
- Rendering to arbitrary target with generic rendering interface.
- Generating black&white and grayscale alpha bitmaps.
- Bold glyphs can be synthesized for outline fonts.
- Multiple replacements can be specified for a single font by using a
multi-string entry under HKCU\Software\Wine\Fonts\Replacements.
- Vertical text uses the Unicode data tables for more accurate character
ranges support.
- Character tables are based on version 8.0.0 of the Unicode Standard.
- The built-in Wingdings font contains more glyphs.
- Unicode bracketing pairs are supported in Uniscribe.
- The RichEdit control uses Uniscribe for more accurate text rendering.
== Graphics
- Direct2D is supported. This includes:
- DXGI surface and WIC bitmap render targets.
- Geometries defined by straight lines and cubic Bézier curves.
- Drawing text.
- Bitmaps.
- Solid color brushes and bitmap brushes.
- Opacity brushes.
- PNG files can be encoded in interlaced mode.
- Gamma information can be loaded from PNG files.
- Animated GIFs are correctly supported in GdiPlus.
== Direct3D
- Direct3D 11 is supported, to about the same level as Direct3D 10.
- Simple applications using Direct3D 10 are supported. There are still
many unimplemented features. Direct3D 10 requires support for at
least OpenGL 3.2 and GLSL 1.50. Changes include:
- Several resource update operations are implemented.
- Many more shader model 4 opcode are recognized.
- Constant buffers are supported.
- The various resource views are implemented.
- The various state objects are implemented.
- Stateblocks are implemented.
- A number of new DXGI 1.1 interfaces are implemented. This benefits
Direct3D 10 and 11 applications.
- Direct3D applications correctly minimize and restore the display
mode on focus loss.
- Fixed function vertex blending is implemented. This requires GLSL support.
- Per-vertex point sizes are supported. This requires GLSL support.
- The wined3d graphics card database recognizes more graphics cards.
The graphics card detection code is simplified and improved. More
reasonable fallbacks are picked for unrecognized graphics cards.
- On drivers that support it, GL_ARB_texture_mirror_clamp_to_edge or
GL_EXT_texture_mirror_clamp are used to implement the "mirror once"
texture addressing mode.
- GL_ARB_depth_clamp is no longer required to correctly draw pre-transformed
vertices with disabled z-buffering. This helps older graphics cards that
can't correctly implement GL_ARB_depth_clamp.
- On drivers that support it, GL_ARB_blend_func_extended is used to
implement the D3DBLEND_SRCALPHASAT blend factor.
- On drivers that support it, GL_ARB_sampler_objects is used to apply
sampler states independently of the texture object they apply
to. This helps applications that bind the same texture to multiple
texture stages, but with different sampler states.
- On drivers that support it, GL_EXT_texture_snorm is used to support
signed (normalized) texture formats. These are typically used for
bump mapping. Previously these formats required either
GL_NV_texture_shader, or fixups when loading and using them.
- On drivers that support is, GL_ARB_timer_query is used to support
Direct3D 9 timestamp queries.
- Texture format restrictions are more strictly enforced. This allows
applications to fall back to a different format instead of continuing
with broken rendering.
- Direct3D 9 D3DTSS_CONSTANT texture stage constants are supported.
- Color keyed blits can be done by the graphics card. Previously these
needed to be done by the CPU.
- NV12 surfaces are supported. This is used by some applications for
playing back video.
- ATI1N textures and surfaces are supported, in addition to ATI2N
textures and surfaces. This requires support for
GL_ARB_texture_compression_rgtc from the OpenGL driver.
- When GLSL is supported, lighting for Direct3D 1-3 is more correct.
However, for most application the difference will only be very slight.
- The IDirect3DSwapChain9Ex interface is supported.
- OpenGL core contexts, OpenGL ES contexts, and multi-threaded OpenGL
command submission (known as "CSMT") have been added, however that
work is not finished yet.
== DirectDraw
- SetCooperativeLevel() works better, affecting DirectDraw exclusive
mode in particular.
- DirectDraw surface flipping is more correct. This affects applications
that use more than 1 back buffer in particular.
- DirectDraw palette handling is better supported. This mostly affects
older applications using 8-bpp display modes (but not exclusively.)
- "Client memory" surfaces are better supported, in particular related
to the handling of pitch and texture compression.
== Audio and video
- A Pulse Audio driver is implemented. It is selected automatically
when Pulse Audio is running.
- 5.1 surround sound is supported in DirectSound. Stereo is the
default, but other speaker configurations can be set through the
Audio tab in Winecfg.
- XAudio2 is implemented, based on the OpenAL Soft library.
- The OpenAL library defaults to the native version.
- The Video Mixing Renderer version 7 is implemented.
- AVI file encoding and compression is implemented.
== Kernel
- Wine can be configured to report the Windows version as 'Windows
8.1' and 'Windows 10'.
- Keyed event synchronization objects are implemented.
- The "init once" synchronization mechanism is supported.
- Condition variables are implemented.
- Slim Reader/Writer locks are implemented.
- Activation contexts are used for loading DLLs, type libraries, and
COM classes, avoiding the need for explicit registration.
- Windows devices support read and write operations in addition to I/O
controls. They can be remapped directly to existing Unix devices.
- Thread local storage is supported in dynamically loaded libraries.
- Process jobs are implemented.
- The Task Scheduler service is implemented.
- The UTF-7 encoding is supported.
- ATL thunk emulation supports a wider range of possible instructions.
- Process and thread affinity is supported even with a large number of
processors.
- Dynamic DST (Daylight Saving Time) is supported through the
registry. Timezone data is updated for a number of timezones.
- USER_SHARED_DATA access is emulated on x86-64 platforms.
- The new thread pool API is supported.
- OpenMP (parallel programming API) is implemented.
- Preliminary support for HID devices is implemented, but it's not
enabled yet.
== User interface
- There is an optional Start Menu in desktop mode, that can be enabled
on a per-desktop basis by setting "EnableShell" to "Y" under
HKCU\Software\Wine\Explorer\Desktops\<name>.
- The standard Open File dialog supports a drop-down menu for file
manipulations.
- 'My Documents' links to the XDG 'Documents' folder if it exists.
- Many more shell Known Folders are supported.
- Scrollbar theming is implemented. Theming of other controls also
works better.
- The Toolbar common control can save and restore its state.
== X11 driver
- X Drag & Drop protocol version 5 is supported.
- Flashing a window caption is implemented in the X11 driver using the
NET_WM_STATE_DEMANDS_ATTENTION style.
== OLE / COM
- OLE Storage files support file locking, and sizes larger than 4 GB.
- Type libraries are registered correctly on 64-bit setups.
- 32-bit type libraries can be loaded from 64-bit programs.
- The OLE data cache supports DIB images.
- The RPC interface to control Windows services is compatible with the
native version.
- OLE Accessible Objects are implemented for better accessibility support.
== Internet and networking
- The Gecko engine is updated to the version from Firefox 40. Many
more objects and properties are implemented in MSHTML.
- Internet proxies can be configured automatically.
- RPC over HTTP supports the NTLM and Negotiate authentication
schemes.
- The Web Services API is partially implemented.
- Download of Gecko and Mono add-ons can be canceled from the
progress dialog.
- Conditional compilation is supported in JavaScript.
- Arrays, math functions, and exception unwinding are implemented in
VBScript.
- Remote network shares can be configured using Samba's NetAPI library.
- The Packet Capture DLL is implemented.
- Network interface change notifications are implemented.
- IPv6 DNS addresses are supported in IphlpAPI.
- The Deflate content encoding is supported in Wininet.
- The TransmitFile API is implemented in Windows Sockets.
- The BITS file transfer service is better supported.
== Printing
- Vertical text is supported when printing through the PostScript driver.
- The PostScript driver generates standard glyph names when possible.
- Monochrome printers are better supported, in particular when
printing color images.
- Collation is supported in the PostScript driver.
== Miscellaneous
- Windows Management Instrumentation (WMI) implements several more
WBEM system classes.
- Applying installation patches is better supported in MSI.
- Hyperlink controls are supported in installers.
- More recent versions of the C/C++ runtimes are supported, including
the new UCRTBASE library. The old MSVCIRT C++ runtime is also
partially implemented.
- Version 9, 10, and 11 of ATL (Active Template Library) are
implemented.
- The Windows Scripting Runtime supports many more classes, including
file and folder collections and dictionaries.
- Writing XML files is implemented.
- The Invariant locale is supported.
== Built-in applications
- The 'taskmgr' application displays whether processes are running
under WoW64.
- The 'regedit' tool better supports import/export of registry files.
- The 'wineconsole' tool supports configuring the insert/overwrite
mode in the settings dialog.
== Known issues
- Since the support for OpenGL core contexts in WineD3D is not
complete enough yet, Direct3D 10 and 11 need to be supported in a
legacy context / the compatibility profile, which means that they
currently don't work on Mesa.
- Setting the PULSE_LATENCY_MSEC variable was sometimes necessary with
the Alsa audio driver, but it can cause trouble with the Pulse
driver. It is recommended to unset the variable.
The patch was missing some changes made to dlls/gdi32/freetype.c.
Since the previous patch compiles and that this patch changes what code gets
compiled a PORTREVISION is required.
Base this patch on upstream commit 67f9b6e3 which simplifies some of the
changes to configure.
Approved by: gerald (maintainer, implicit)
With the recent change to print/freetype2 that introduces a new build
system building for emulators/wine broke. This break is fixed by back-
porting the changes (made upstream) to emulators/wine-devel to support the
new build system for print/freetype2.
Reported by: pkg-fallout
Approved by: gerald (maintainer, implicit)
- Support for installation rollbacks in MSI.
- 8- and 16-bit bitmap formats in the DIB engine.
- Fixes in the XInput2 mouse support.
- Better support for text shaping in Uniscribe.
- Improvements to the Item common dialog.
- More MSVC runtime functions.
- Various bug fixes.
Also force building with OSS support and, look Ma!, no more extra
patches for that.
- Option to clip the mouse inside fullscreen windows.
- Support for persistent HTTP connections.
- Initial implementation of the XML writer.
- Support for drawing rectangles in the DIB engine.
- Volume control in MMDevAPI.
- More MSVC runtime functions.
- Various bug fixes.
Two of my three changes for OSS support have been integrated upstream,
only one remains.
Only tentatively remove $DATADIR/wine upon deinstallation to allow for
the forthcoming wine-gecko port. [1]
PR: 156001 [1]
Submitted by: David Naylor <naylor.b.david@gmail.com> [1]
- New sound driver architecture for MMDevAPI.
- Better support for relative mouse events in DInput.
- Various improvements in D3DX9.
- More MSVC runtime functions.
- Various bug fixes.
This requires three patches of mine, two submitted upstream so far, to
unbreak recent changes around the sound system (bundled into one here).
Sort CONFIGURE_ARGS on the way.
- Icons in the "open with" menus.
- Man pages for all installed binaries.
- Support for schemas in MSXML.
- Many installer fixes.
- Beginnings of support for ActiveX in built-in browser.
- More work on ActiveX support.
- Icons on Internet shortcut menu entries.
- Standardization of code implementing COM interfaces.
- New scheme for auto-generated DLL registrations.
- OpenCL library wrapper.
- Support for notification balloons in system tray.
- Obsolete AudioIO sound driver removed.
- Various MSI fixes.
- Translation updates.
- Various bug fixes.
Lots of new man pages.
Also, remove references to FreeBSD 6 from pkg-message. [2]
PR: 153434
Submitted by: Rusty Nejdl <rnejdl@ringofsaturn.com> [1]
Alex Kozlov <spam@rm-rf.kiev.ua> [2]
- Many crypto fixes (particularly on 64-bit).
- Several common controls improvements.
- Various HTML support improvements.
- More DIB optimizations.
- Various bug fixes.
An updated patch of mine to address PR 137999 is now included upstream.
- Vastly improved monthcal control.
- Performance improvements for DIB sections.
- Several sound driver fixes.
- Beginning of ActiveX support in JScript.
- More Direct3D 10 work.
- More 16-bit dlls split off to separate modules.
- Support for attachments in MAPI.
- Various bug fixes.
Equally importantly, this finally fixes tools/winebuild for FreeBSD.
After my general recognition of FreeBSD has been accepted upstream,
this is now only one local patch. [1]
PR: 137999 [1]
Inspired by: Edward Tomasz Napierala <trasz@FreeBSD.org> [1]
- RPC over HTTP support.
- Improved support for upgrades in MSI.
- Many Direct3D code cleanups.
- Various bug fixes.
Apply a patch to address some FreeBSD-specific issues and un-IGNORE this
port. [1]
Submitted by: Tijl Coosemans <tijl@ulyssis.org> [1]
PR: 133157
- A number of 64-bit improvements.
- Obsolete LinuxThreads support has been removed.
- Many fixes to the regression tests on Windows.
- Various bug fixes.
And memory handling on FreeBSD no longer requires a local hack.
- Freedesktop.org-compliant startup notifications.
- Improved graphics support in Internet Explorer.
- Various Richedit improvements.
- Better certificate manager dialog.
- Various bug fixes (including two fixes we carried ourselves).
part of the full fix that has been applied upstream past 1.1.11.
Bump PORTREVISION, giving wine-1.1.11_1,1.tbz which is kind of nice. :-)
PR: 129951
Submitted by: Christoph Mallon <christoph.mallon@gmx.de>