Ann: SWI-Prolog 10.1.17

Dear SWI-Prolog user,

SWI-Prolog 10.1.17 is ready for download. This version is mostly about
the GUI, which now supports switching between light and dark themes while
running and follows the desktop settings. Highlights:

Core

  • Loading a .qlf file now notices changes to included, consulted and
    dependency files rather than only the main source file. This notably
    affects aggregates such as pce.qlf. Also fixes a memory and atom leak
    in ‘$qlf_module’/2.
  • Incremental subsumptive tabling raised a tabling dependency error when
    re-evaluating the general table and did not record dependencies for calls
    that reuse an existing table.
  • The flags color_term and hyperlink_term are no longer saved in a
    saved state, so a state determines them from the terminal it runs on.

CLP(Q,R)

  • Faster Fourier-Motzkin elimination in dump/3 and projection.

XPCE (GUI)

  • Themes. The colours of xpce are now theme colours that follow the
    active theme without restarting. Highlights:

    • Use Settings/Theme to select “Follow the desktop” or a specific theme.
    • The system colours follow the desktop’s light/dark mode and accent
      colour on Windows, MacOS, KDE and GNOME, and are reloaded if the
      desktop settings change.
    • The development tools, PceEmacs syntax highlighting and Epilog use
      theme colours. The dark theme has been rewritten to define these.
    • Applications can declare their own theme colours and use
      adaptive_colour/3 to make a colour chosen by the user adapt to the
      theme.
    • Documented in the XPCE User Guide and reference manual.
  • The profiler GUI shows a call graph of the current predicate (using
    graphviz) and allows filtering the predicates as you type.

  • @display now evaluates to the display of the last event, and frames
    survive removing the last display, e.g., a MacBook in clamshell mode
    whose external monitor goes to sleep.

  • Tabs give clear feedback on the active tab, also in dark themes.

  • Fixed dropping files on the console and PceEmacs using SDL on X11.

  • Ported to older MacOS versions (10.15 - 12): fixed crash creating
    the menu bar and pasting from other applications.

  • Several crash and bug fixes, many reported by Mike Elston.

    Enjoy — Jan

SWI-Prolog Changelog since version 10.1.16

  • DOC: UI themes: theme colours, switching themes and the Settings/Theme
    menu Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • ENHANCED: dark theme: lighter scroll bar trough Co-Authored-By:
    Claude Opus 5.5 noreply@anthropic.com

  • ENHANCED: theme files: switch console colours with the xpce theme
    The console and online help colours of library(theme/light) and
    library(theme/dark) now only apply while their theme is active, so
    the Prolog console follows selecting a theme in xpce. Without xpce,
    a loaded theme is active as before. The dark theme defines a complete
    dark palette for the basic xpce colours, which is used if the desktop
    is light.

  • ENHANCED: dark theme: only define theme colours for xpce The remaining
    class variable settings and the debugger port styles are replaced by
    values for the theme colours of the development tools. The dark theme
    no longer changes xpce class variables, so loading it has no effect
    on xpce until it is applied and switching back to light restores
    all colours. The debugger port colours are dark backgrounds, such
    that the syntax colours remain readable.

  • ENHANCED: dark theme: define xpce’s ui_* and ansi_* theme colours
    Replaces the class variable settings for the basic xpce classes
    by values for the ui_* and ansi_* theme colours, so these follow
    switching between light and dark. If the system colours are dark,
    the basic window colours are the system colours. Text selection
    and search highlights now use dark backgrounds, such that the syntax
    colours remain readable.

  • ENHANCED: dark theme: define the PceEmacs syntax colours as theme
    colours The prolog_colour:style/2 hook is replaced by pce_theme:colour/3
    facts for the syntax_* theme colours, so switching between light
    and dark no longer requires restarting PceEmacs. Adds dark values
    for the syntax classes that were added after the dark theme was
    written: head(test,), rational(), known_flag_name(), macro()
    and domain_error(). Drops the unused table_option() style.

  • ENHANCED: dark theme: leave basic xpce colours to dark system colours
    on all platforms The dark theme now tests sys_window_background
    rather than the Windows specific win_window. This makes windows,
    dialogs and menus follow switching between light and dark while xpce
    is running on Windows, MacOS, KDE and GNOME.

  • FIXED: incremental subsumptive tabling raised a tabling dependency error
    Using :- table p/2 as (subsumptive,incremental), re-evaluating the
    general table after an update of the underlying incremental predicate
    raised Tabling dependency error. Also, calls that reused an existing
    (variant or more general) table did not record an IDG dependency,
    so incremental tables depending on them were not updated.

  • FIXED: ‘$qlf_module’/2 leaked memory and atoms on every call qlfInfo()
    never popped the XR table or the path translation pushed for the module
    info. The XR table owns the atoms it loads, so qlfModuleInfo() must not
    unregister them; it did so for the module name, class and super module,
    which kept the counts balanced only because the table was never popped.

  • FIXED: loading a .qlf file did not notice changed consulted, included
    or dependency files ‘$qlf_out_of_date’/3 only checked the main source
    file, so editing a member of an aggregate such as pce.qlf or emacs.qlf
    kept loading the old code until the next build. It now checks all
    sources recorded in the .qlf file, reading them in the same open as
    the compatibility check. A file that is both incompatible and out
    of date is reported as incompatible.

  • ENHANCED: dark theme: keep the system window colours if they are
    dark On Windows using a contrast theme such as Night sky, the xpce
    defaults derive from the system colours. Overruling the window and
    dialog colours made the menus black on grey.

  • FIXED: compile_aux_clauses/1: attribute predicates to the owner
    of an included file.

  • ENHANCED: profile/1: handle interrupts while collecting data.

  • PORT: macOS fat .pkg installer refused to install on Intel Macs The
    installer’s hostArchitectures was set from CMAKE_SYSTEM_PROCESSOR,
    i.e., the build host, so the universal package built on Apple Silicon
    only accepted arm64. Use x86_64,arm64 for universal builds.

  • ENHANCED: derive color_term and hyperlink_term from the terminal
    we run on qsave_program/2 saved both flags, and as library(ansi_term)
    creates them using keep(true), a saved state kept the values of the
    process that built it. A state built without a terminal, e.g., by
    make(1) writing to a pipe, never used colours. Both flags are no longer
    saved, so the library computes their defaults when the state starts.

Package clpqr

  • ENHANCED: CLP(Q,R): prefilter/2 and the occurrences of the variable
    eliminated Two more walks over the whole class that Fourier-Motzkin
    elimination did per variable:

  • ENHANCED: CLP(Q,R): Fourier-Motzkin elimination in dump/3 and
    projection Two costs that grew with the size of a class rather than
    with the projection:

Package plunit

  • FIXED: make/0 after enabling optimise: unknown procedure ‘unit test’/4
    If a test unit was loaded and the file is reloaded while the tests
    are not loaded, e.g., because the optimise flag is now set, the
    unit stayed registered while its clauses were wiped by the reload.
    Running the tests on make/0 then raised an existence error. Reported by
    Mike Elston.

Package xpce

  • FIXED: macOS x86_64 link: undefined ___isPlatformVersionAtLeast
    @available() below a macOS 11 deployment target calls into clang’s
    compiler-rt, which is not linked when GCC links the library. Use a
    respondsToSelector: test instead.

  • DOC: Fixed EXTENDING.md Markdown and updated some of the content.

  • DOC: Updated XPCE UserGuide frontpage

  • DOC: describe precisely when themes use the system colours Only
    the roles, the ui_ colours that have a sys_, follow the
    system colours. Document how a theme is matched against the desktop
    and that a role a theme does not define remains the system colour.

  • MODIFIED: text selection uses a theme colour derived from the desktop
    The editor, terminal and parbox show the selection using the background
    ui_text_selection_background on all platforms. This used to be
    yellow, except on Windows, which used the system highlight. It now
    derives from the new system colour sys_text_selection_background:
    selectedTextBackgroundColor on MacOS and a tint of the accent colour
    on the window background elsewhere. Selected text keeps its colour.

  • ENHANCED: profiler: the browser selection follows the current node
    Making a node current from the details or the call graph selects it
    in the browser. If the filter hides it, nothing is selected, and it
    is selected again when the filter shows it.

  • ENHANCED: xdot->load explains why graphviz could not draw the graph
    If the graphviz program is not installed or fails, the figure shows
    why instead of the graph, and keeps the text in xdot<-problem.

  • FIXED: frames and @display survive removing the last display SDL may
    report the removal of every display, e.g., a MacBook in clamshell
    mode whose external monitor goes to sleep. The last display is now
    kept as a parking place for its frames, so @display no longer fails,
    and the frames move to a display that is attached again. Frames of
    a removed display move to the display SDL reports for their window,
    and removed displays are never returned by <-primary or <-current if
    there is a live display.

  • FIXED: colour<-hue and colour->initialise using HSV were inaccurate The
    RGB/HSV conversion approximated the hue sextants by 0.17, 0.33, etc.,
    so blue had hue 241.2 instead of 240. Now use the exact conversion.

  • MODIFIED: theme_colour<-value renamed to theme_colour<-derived_from
    The instance variable value hid colour<-value, the value of the
    HSV model, so a theme colour returned its source colour name rather
    than a number. This broke e.g. the HSV Colours demo, which uses the
    display foreground. Reported by Mike Elston.

  • FIXED: crash redrawing a slider after the colour grey50 was freed
    The colours that C code keeps in global variables (BLACK_COLOUR,
    GREY50_COLOUR, …) were not locked, so they could be garbage collected
    when user code used and released the same named colour, e.g., the
    Constraints demo destroying a text coloured grey50. Now lock them,
    as well as the 3D grey of ws_3d_grey(). Reported by Mike Elston.

  • MODIFIED: @display is the function ?(@display_manager, current) @display
    used to name the display that was primary at startup, which went stale
    or disappeared when monitors were hotplugged. It now evaluates on
    each use to the display of the last event or, if there was none, the
    primary display. Application-wide state moved to @display_manager:
    shared inspect handlers, ->busy_cursor for all displays, <-frames of
    all displays and the armed object of library(pce_arm).

  • FIXED: MacOS dark mode: label of a disabled button was invisible
    disabledControlTextColor and controlColor are both white at 25%,
    so composed over the dialog background sys_inactive equalled
    sys_button_background. sys_inactive is now composed over the dialog
    or the button background, whichever remains most visible on both.

  • ENHANCED: MacOS: distinguish dialogs from content windows Since MacOS
    26, windowBackgroundColor equals textBackgroundColor, so xpce dialogs
    were indistinguishable from content windows. If both are the same,
    sys_dialog_background is now secondarySystemFillColor composed over
    the window background (#ebebeb light, #303030 dark), about the sidebar
    colour used on GNOME. The translucent sys_* colours are composed
    over the dialog background.

  • ENHANCED: icon_button: symbolic SVG icons follow the theme An SVG
    icon that draws in currentColor is drawn in the colour of the class
    variable icon_button.symbolic_colour, by default the text colour of
    dialogs, and drawn again when the theme changes. The close and new
    tab icons are now symbolic, so they are visible in dark themes.

  • ENHANCED: tab: clear feedback for the tab on top, also in dark themes
    The hidden tabs darkened their background by 15%, which is hardly
    visible on a dark background. Their background now moves a little
    towards the text colour and their labels are dimmed, which works
    for light and dark themes alike. The tab on top gets a line in the
    accent colour on top of its label, as many current applications do.
    See the class variables tab.indicator_colour and tab.indicator_width.
    Adds colour<-mix to move a colour towards another colour.

  • ENHANCED: kangaroo demo: coloured kangaroos with a smoother hop,
    generated on the fly The kangaroos come in four colours with a light
    belly and a dark outline, so they show on light and dark backgrounds.
    A hop has 12 frames: crouch, push off, fly with trailing legs and
    reach for the ground. The frames compensate the constant step of the
    demo, so the feet stay on the ground while crouching and all forward
    motion happens in the air. The demo generates the frames as SVG,
    loads them from a text_buffer and shares them between kangaroos of
    the same colour. This removes the kangaroo_*.svg files.

  • ADDED: display_manager->colours_changed notifies frames and
    graphicals; dark theme fixes ->colours_changed, which runs when
    the theme changes, first sends ->colours_changed to each frame and
    graphical whose class defines it. This allows applications to update
    colours that do not follow the theme by themselves, such as images
    drawn using image->draw_in. PceDraw uses this to repaint its icons
    and the profiler to draw its call graph again.

  • FIXED: PceDraw: changing an attribute of a prototype icon called
    the undefined ->repaint_proto Co-Authored-By: Claude Opus 5.5
    noreply@anthropic.com

  • ENHANCED: GNOME: use the libadwaita sidebar colour for the dialog
    background The libadwaita window background is almost white,
    so xpce dialogs were indistinguishable from content windows.
    sys_dialog_background is now the sidebar background (#ebebed light,
    #2e2e32 dark), which libadwaita uses for panels next to the content.
    The button, separator, etc. colours are derived from it.

  • DOC: manual scope classification for theme_colour and the colour changes
    Adds class theme_colour, display_manager ->system_colours_changed,
    ->colours_changed and <->system_colours_message,
    colour.dark_hilite_factor, and the missing colour <-fade and
    colour.fade_factor.

  • DOC: reference manual: class theme_colour, system colours and themes
    Adds class theme_colour, display_manager ->system_colours_changed,
    ->colours_changed and <->system_colours_message, the globals
    @colour_names, @theme_colours and @theme_colour_defaults, and
    colour.dark_hilite_factor. Updates the defaults of display and
    terminal_image that are now theme colours and the description of
    display.theme.

  • DOC: userguide section on themes and theme colours Describes selecting
    a theme, the theme colours and their naming, how themes replace the
    system colours if they do not match the desktop, writing a theme,
    declaring theme colours of an application and colours chosen by
    the user. Also fixes the captions of the system colour tables,
    which stopped pdflatex.

  • FIXED: Epilog new window (Shift-Ctrl-I) raised an error for a terminal
    with a profile colour The new window copies the background of the
    terminal, which is a colour object. Anonymous object references
    are blobs rather than @/1 terms, so this was taken for a colour
    specification. Use is_object_reference/1.

  • ENHANCED: Epilog profile and set_epilog/1 colours adapt to the theme
    The background(Colour) option of a profile, the new foreground(Colour)
    option and the colours of set_epilog/1 are theme colours. A single
    colour is adapted to the active theme, e.g., a light yellow
    background becomes dark olive in the dark theme. A list such as
    [light=lightgoldenrodyellow, dark=‘#33301e’] gives a colour per theme.

  • ADDED: adaptive_colour/3: theme colours from user colours that
    adapt to the theme adaptive_colour(Name, Spec, Reference) defines a
    theme colour from a colour chosen by the user. Spec is a colour or
    a list Theme=Colour. A theme without a colour of its own uses the
    light colour if it is as dark or as light as Reference in that theme,
    and otherwise mirrors its lightness, keeping its hue.

  • FIXED: <-hilite of a dark colour was almost white With the default
    factor, colour<-hilite moves the colour 90% towards white. On a dark
    background this made, e.g., the preview of menu items almost white,
    so the white text was unreadable. Dark colours now use the class
    variable colour.dark_hilite_factor, default 0.2.

  • ADDED: select a theme from the IDE Settings menu, also against the
    desktop Settings/Theme selects “Follow the desktop” or one of the
    available themes for this session. Each system colour sys_
    now has a theme colour ui_ and xpce only uses these. If the
    brightness of the theme does not match the desktop, e.g., a dark theme
    on a light desktop, the theme replaces the system colours by its own.
    library(pce_theme) defines these for the light theme. On Windows,
    buttons and scroll bars no longer use the win_* colours, so they
    follow the theme as well.

  • FIXED: display_manager->colours_changed did not redraw windows inside
    tabs Windows nested in other devices, such as the tabs of a tab_stack,
    were not redrawn, so they kept their old colours after switching themes.
    Walk all devices of each frame using an agenda.

  • ENHANCED: development tools use theme colours The graphical debugger,
    profiler, debug monitor, cross referencer, PceEmacs bookmarks and
    the help viewer declare their colours using the new theme_colours/1
    directive of library(pce_theme) or use the basic ui_* window colours,
    so they follow switching themes. The debugger port colours are the
    debug_port_* theme colours. check_theme/1 loads the libraries that
    declare theme colours.

  • ENHANCED: xpce class variable defaults use theme colours xpce
    defines the theme colours ui_* for the basic user interface elements
    and ansi_* for the terminal colours, with their light values in
    @theme_colour_defaults. The class variable defaults of windows,
    dialogs, editors, terminals, list browsers, menus, text items, the
    text cursor, scroll bars and the display refer to these, so they
    follow switching themes while xpce is running. The light values are
    unchanged, except that list_browser and text selections on Unix and
    MacOS now use the system selection colours on all platforms.

  • ENHANCED: PceEmacs syntax highlighting uses theme colours The colours
    of the PceEmacs syntax styles now refer to the theme colour of their
    class, e.g., syntax_goal_built_in for goal(built_in,_), so they follow
    switching themes while the editor is open. The classes are those
    of syntax_colour/2, including the classes added by language modes.
    library(pce_theme) now initialises itself when it is loaded, which
    fixes loading it before library(pce).

  • ADDED: class theme_colour: colours whose value follows the theme
    theme_colour(Name, Value) is a colour whose value is the name of
    another colour, possibly another theme colour or a system colour.
    The RGB value is computed on first use and reset for all theme
    colours if a value changes or the system colours are reloaded, so
    theme colours may refer to each other in any order. Theme colours are
    locked and never returned when looking up a colour from its RGB values.
    library(pce_theme) now uses this class. This replaces colour->access
    and colour->rgba.

  • ADDED: library(pce_theme): semantic colours and themes that
    switch at runtime A semantic colour is a read/write, locked
    colour object whose name describes its role. Libraries declare
    semantic colours with their value in the light theme using
    pce_theme:semantic_colour/3. The PceEmacs syntax colours are derived
    from def_style/2 in library(prolog_colour), e.g., goal(built_in,_)
    becomes syntax_goal_built_in. A theme maps names to values using
    pce_theme:colour/3. apply_theme/1 switches themes in place and the
    theme follows the system light/dark setting unless the user fixed it.
    check_theme/1 reports missing, unknown, duplicate and invalid entries
    of a theme.

  • ENHANCED: colour->access to distinguish read-only and read/write colours
    Colours are read-only by default and only colours with access `both’
    accept ->rgba. A read/write colour is never returned when looking up
    a colour from its RGB values. Read-only colours, including colours
    created with a name and RGB values, are again entered in this reverse
    table as before.

  • ADDED: colour->rgba and display_manager<-system_colours_message
    for theme colours colour->rgba changes the value of a
    colour in place. After a change of the system colours,
    display_manager->system_colours_changed sends <-system_colours_message,
    so the application can update its own colours, and redraws all windows.
    display_manager->colours_changed redraws all windows. These are the
    basis for switching between light and dark themes while xpce is running.

  • ENHANCED: Windows: sys_* system colours follow dark mode and the accent
    colour Windows dark mode does not change GetSysColor(). If applications
    use dark mode and no contrast theme is active, the sys_* colours now
    use a Windows 11 dark palette with the user’s accent colour for the
    selection. The system colours are also reloaded when the user selects
    another contrast theme or accent colour, which SDL does not report.

  • ADDED: reload the system colours when the desktop settings change
    display_manager->system_colours_changed reloads the sys_* and platform
    system colours, updates the named colour objects in place and redraws
    all windows. It is sent when the user switches between light and
    dark mode and, on MacOS, also when the accent or highlight colour or
    the contrast changes.

  • ADDED: sys_* system colours follow GNOME’s style and accent colour Under
    GNOME, the sys_* colours are taken from a built-in libadwaita palette.
    The XDG Desktop Portal tells us whether to use the dark style, high
    contrast and the accent colour (GNOME 47+). The portal is read using
    GIO, which is optional.

  • ADDED: sys_* system colours follow the KDE colour scheme When running
    under KDE, the colours of the scheme in kdeglobals are available as
    kde_ (e.g., kde_view_background_normal) and define the
    sys
    * colours, so xpce follows light and dark KDE schemes.

  • ADDED: portable sys_* system colours and MacOS mac_* colours The
    colour names sys_window_background, sys_selection_background, etc.
    are defined on all platforms and follow the desktop settings on Windows
    and MacOS. On MacOS, the AppKit named colours are available as mac_.
    xpce’s defaults now use the sys_
    names, so on MacOS the GUI follows
    light/dark mode and the accent colour.

  • ENHANCED: profiler GUI: make the flat profile as wide as its predicates
    When loading a profile, the column with the flat profile is made as
    wide as the longest predicate and a time, up to max_width percent
    of the profiler.

  • ADDED: profiler GUI: filter the predicates as you type A filter_item
    above the flat profile shows only the predicates whose label matches.
    The details and the call graph still reach predicates the filter hides.

  • ADDED: library(pce_filter_item): filter as you type Class filter_item
    calls its message with a regex or @nil as the text changes. Used by
    the cross-referencer and the navigator, whose filters did not react
    to the clear button of the text item.

  • FIXED: text_image ->tab_stops did not lay out the text again Lines laid
    out before the tab stops changed kept the old stops, so a browser that
    sets its tab stops when it is resized showed its columns misaligned.
    Also check the type of the last tab stop.

  • ADDED: profiler GUI: call graph of the current predicate The right
    of the profiler holds the details and a kcachegrind-style call
    graph as tabs. The graph, laid out by graphviz using library(xdot),
    shows the callers above and the callees below the current predicate,
    marked by a star. Boxes are tinted by their time and arrows are as
    thick as the time that flows along them. Clicking a box makes it
    the current predicate.

  • ENHANCED: pane_stack <-window also finds windows in a nested
    tabbed_window Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com

  • ENHANCED: xdot_window: <-natural_zoom defaults to a class variable
    This allows subclasses and the Defaults file to set the preferred
    zoom for ->fit.

  • FIXED: xdot: tooltips showed \n rather than a line break Graphviz
    passes the escapes of its escString type through to the tooltip.
    Translate \n, \l, \r and \\. Also, the tooltip was used as
    a format string, which garbled a tooltip holding a %.

  • ENHANCED: Windows: report a dark system theme for dark system colours
    Contrast themes such as Night sky have a dark window colour but do
    not set dark mode. @display<-system_theme now also returns dark if
    the luminance of win_window is low.

  • FIXED: Windows: make xpce follow the system colours, e.g., contrast
    themes Contrast themes such as Night sky change the system colours
    without setting dark mode. Dialogs took their background from
    win_btnface but kept a black foreground, making menus unreadable.
    The display, dialogs, button elevations, editors, list browsers,
    text margins and the terminal now use the matching win_* colours.
    Added win_menubar and win_menuhilight.

  • MODIFIED: tracer: the terminal button opens a terminal below the
    debugger The IDE no longer has ->open_interactor. The tracer’s button
    (and its method, now ->terminal) asks prolog_ide ->new_terminal
    for a low pane below the debugger, for which ->new_terminal accepts
    a side, the pane to put it beside and the share of the room it takes.

  • FIXED: SDL/X11: dropping files did nothing with SDL < 3.4.4 if the
    source offers text before text/uri-list SDL before 3.4.4 on X11 uses
    the first type the drag source offers. If a file manager lists text
    before text/uri-list, the files arrive as drop_text events holding a
    file name or file:// URI. For these SDL versions, treat a drop_text
    whose lines are all existing files as dropped files.

  • MODIFIED: pce<-window_system_version is 10000Major+100Minor+Patch
    This is consistent with pce<-version: number and allows testing for
    a specific SDL release. pce<-window_system_revision is removed.
    The banner and pce->info now print the full SDL version.

  • FIXED: SDL/X11: dropping files on the console or PceEmacs did nothing
    Using X11, SDL reports XdndLeave, which is sent before the drop, as
    drop_complete. The files follow as a separate drop_begin, drop_file,
    drop_complete sequence without a position. We lost the target window
    at the first drop_complete and sent the files to the frame. Keep the
    window and its last drop position until the next drop_position.

  • PORT: macOS 10.15: paste from other applications pasted nothing SDL3
    asks the pasteboard for text/plain;charset=utf-8, which macOS 10.15
    does not map to the type other applications provide (SDL issue #13737).
    If that yields “”, ask for public.utf8-plain-text directly.

  • FIXED: SDL: deliver a file drop to the window that showed the drop hint
    SDL gives drop_file, drop_text and drop_complete no position of their
    own; they reuse the last drop_position, which a drop_complete resets to
    (0,0). Route them to the window that received the last drop_position
    instead of looking the window up by position, so dropping files on
    PceEmacs no longer sometimes does nothing. When a drag moves to another
    window of the same frame, e.g. from PceEmacs to a terminal, send the
    old window a drop_complete without files, so it removes its drop hint.

  • FIXED: tab_frame<-members, compatible with frame<-members
    @prolog_ide<-current_epilog asked the tab of the current event for
    its members, raising a warning and falling back to the last used
    terminal when compiling from PceEmacs (C-c C-m, C-c C-b).

  • PORT: macOS <= 12: crash creating the native menu bar (take two)
    -setWindowsMenu: indexes into the Window menu it is given and asserts
    if the menu is empty. Fill it with the standard items (Minimize,
    Zoom, Bring All to Front) before registering it.

  • PORT: macOS 10.15: crash creating the native menu bar -setWindowsMenu:
    asserts the menu is part of the main menu on older macOS versions.
    Add the Window item before registering it.

1 Like