MWorks 0.9 released
MWorks 0.9 is now available for macOS and iOS. Highlights of this release include:
- Layer and mask stimuli
- Embedded Python execution on iOS
- EyeLink tracker-driven calibration and blink, saccade, and fixation events
- New event file format (MWK2)
- XML-to-MWEL converter
- Support for macOS Dark Mode
MWorks 0.9 requires a Mac running macOS Sierra (10.12) or later or an iPad running iOS 12.2 or later.
For a full list of changes in this release, please see the release notes below.
MWEL
-
Added xml2mwel script for converting XML experiment files into MWEL
-
Variable declarations are now a special case of component declaration and therefore can include parameters and/or children
-
Statement macro invocations can now include a default value with
=
(as long as the macro body is a single variable declaration that does not include a default value) -
Added support for nestable, multiline comments delimited by
/*
and*/
-
Parser now expands all enclosing macro parameters in children attached to macro invocations
-
Improved error reporting for unterminated string literals
-
mwel2xml now accepts
--omit-metadata
as a command-line option, which inhibits the inclusion of location info and experiment source in the generated XML
Core
Visual Stimuli
-
Movie and frame list stimuli can now have their frames attached as children (instead of being contained in a stimulus group)
-
Image file stimulus now prevents image color values from being altered when color management is disabled
-
-
Added rand_seed parameter
-
Added default values for field_center_x, field_center_y, and direction parameters
-
-
Stimulus display is now backed by Metal (always on iOS, and on Macs running macOS 10.13 or later that support Metal)
-
Added support for setting the stimulus display’s gamma function (only on macOS, and only if color management is disabled)
-
Added support for making the main stimulus display window non-opaque (mirror window is still always opaque)
-
Stimulus display is now created only if the experiment uses it
-
Update Stimulus Display action now issues a warning if it takes more than two display refresh cycles to complete
-
Dropped support for
render_at_full_resolution
key of #mainScreenInfo. Stimuli are now always rendered at the full, native resolution of the display.
I/O Devices
-
Added word output and digital input pullup channels for Firmata devices
-
-
Added support for tracker-driven calibration
-
Enabled reporting of EyeLink blink, saccade, and fixation events
-
tracking_dist is now required only when eye_x, eye_y, and/or eye_z are specified
-
Error messages now include EyeLink error message (if available)
-
-
-
Improvements to analog output voltage channels
-
Added analog_output_enabled parameter
-
When stopping device, all digital output lines are now set to low, and all (non-waveform) analog output voltage channels are set to zero
-
Added workaround for bug in NI-DAQmx Base that manifests in 64-bit processes on macOS 10.12 and later
-
Now requires 64-bit variant of NI-DAQmx Base (i.e. version 14.0 or later)
-
Other
-
New on-disk format for event files (MWK2)
-
Expression parser now supports multiplication of strings and lists by integers. Multiplying a list or string by integer n results in the concatenation of n copies of the list or string, e.g.
[1, 2, 3] * 2 == [1, 2, 3, 1, 2, 3] 3 * 'abc' == 'abcabcabc'
Applications
-
New app icons
-
Version info for all apps now includes the build date
-
MWClient and MWServer now support Dark Mode
-
macOS installer now backs up existing MWorks installation silently (without popping up a dialog box)
-
MWServer and MWClient now preserve the location of their preferences windows between sessions
-
iOS MWorks app now supports hiding the “Choose experiment” button
MWClient
-
New user interface icons
-
Eliminated some spurious connection failures
-
Calibrator and reward window’s action buttons now end editing in all fields (thereby committing any pending changes) before performing their task
-
Eye window now presents its options in a panel (instead of a drawer)
MWServer
-
Added code to prevent App Nap from delaying response to client connection requests
-
Now preserves the selected preferences window tab between sessions
Python and MATLAB Tools
-
Python and MATLAB data tools now transparently support both MWK and MWK2 files
-
Python plugin is now available on iOS. Includes all features available on macOS (run file and run string actions, Python file resources, and the expression parser functions
py_eval
andpy_call
). -
Functions
message
,warning
, anderror
are now available to code executed by the Python plugin -
Python plugin now embeds Python 3.7 (instead of 2.7). In addition, the plugin now includes its own copies of Python and NumPy (no external Python installation required).
-
Removed
MWKStream
class from Python data tools -
Python tools now support Python 2.7 and 3.7. (Python 3.6 is no longer supported.)
-
MATLAB tools now require MATLAB R2016b or later
Documentation and Examples
-
Added iOS installation and configuration instructions
-
Updated Running an Experiment to cover launching and connecting to MWorks on iOS
-
Added iOS version of FindTheCircle example
-
Analyzing Experimental Data now explains how to access event files stored on iOS
-
Added descriptions of current and legacy event file formats
-
Added documentation on the Python
mworkscore
module and the execution environment of embedded Python code (see Run Python File) -
Other minor improvements
Internals/Development
-
Upgraded to new versions of several supporting libraries:
- boost: 1.66.0 ➞ 1.69.0
- zeromq: 4.2.3 ➞ 4.3.1
- msgpack: 2.1.5 ➞ 3.1.1
-
Added OpenSSL 1.1.1b, Python 3.7.3, NumPy 1.16.2, and SQLite 3.27.2 to supporting libs
-
All code is now compiled using the C++14 and C11 language standards
-
Added support for stimuli with child components
-
BasicTransformStimulus
now enables blending when drawing; subclasses can override the blend equation -
Added new
MacOSOpenGLContextManager
(used only on systems running macOS 10.13 or later that support Metal). OldMacOSOpenGLContextManager
is now calledLegacyMacOSOpenGLContextManager
. -
IOSOpenGLContextManager
,MacOSOpenGLContextManager
, andLegacyMacOSOpenGLContextManager
are now private to MWorksCore. Plugins that need access to platform-specific resources should useAppleOpenGLContextManager
.