diff --git a/NEWS.org b/NEWS.org index c9bca958..053718f3 100644 --- a/NEWS.org +++ b/NEWS.org @@ -1,17 +1,19 @@ #+STARTUP:showall * NEWS (user visible changes & bigger non-visible ones) +* 1.4 (released on January 24, 2026) + + The 1.14 series continues where the 1.12 series left off, with just some + version updates & depreciations. + + * 1.12 (released on February 24, 2024) - The 1.12 series has been "stable" for a fairly long time, and gained some + The 1.12 series has been "stable" for a fairly long time, and gained many changes in the mean-time. Most of the changes are for bug fixes and documentation improvements, but some new features are available as well. Those are listed below, with the version in which they first appeared. - We decided to put off a new development series (1.13 -> 1.14) until - incompatible changes are required; for now working in the 1.12 series seems a - good way to get improvements to users more quickly. - ** Some highlights - Significant speedups in both ~mu~ and ~mu4e~ diff --git a/README.org b/README.org index f33a3b46..57f4e528 100644 --- a/README.org +++ b/README.org @@ -45,14 +45,22 @@ version 3]] (or higher). * Versions -*mu* attempts to balance development speed and stability. For this, every few -months there is a stable version (e.g. ~1.12.12~); development then continues in -in ~master~, with ~-pre~ (e.g. ~1.12.14-pre3~): ~-pre~-suffixed versions refer to the -current _development_ code, until it is released (and then looses its ~-pre~ suffix, -i.e., becomes the ~1.12.14~ release). +*mu* attempts to balance development speed and stability. -So if you want stability, grab the [[https://github.com/djcb/mu/releases/][release]]; if you are more -adventurous/impatient, git ~master~ is there as well. +Active development takes place on ~master~ (the 1.14 series), and we maintain +~release/1.12~ as well. When possible, fixes (but not features) from ~master~ are +back-ported to ~release/1.12~. + +Every few months, we release a stable version (e.g. ~1.14.0~); development then +continues in ~master~, with ~-pre~ (e.g. ~1.14.1-pre1~): ~-pre~-suffixed versions +refer to the current _development_ code, until it is released (and then looses its +~-pre~ suffix, i.e., becomes the ~1.14.1~ release). + +Hence, if you want to track active development, use ~master~; if you want to avoid +any changes except bug-fixes, use a 1.12 [[https://github.com/djcb/mu/releases/][release]]; otherwise, track ~master~. + +Overall, we try to avoid incompatible changes, but sometimes this is necessary, +for example to update the versions of required libraries * Installation @@ -66,13 +74,13 @@ as a Linux distribution. Many have packages available. To be able to build ~mu~, ensure you have: -- a C++17 compiler (~gcc~ and ~clang~ are known to work) +- a C++20 compiler (~gcc~ and ~clang~ are known to work) - development packages for /Xapian/ and /GMime/ and /GLib/ (see ~meson.build~ for the versions) - basic tools such as ~make~, ~sed~, ~grep~ - ~meson~ -For ~mu4e~, you also need ~emacs~. +For ~mu4e~, you also need ~emacs~, version 28 or later. Note, support for Windows is very much _experimental_, that is, it works for some people, but we can't really support it due to lack of the specific expertise. diff --git a/lib/mu-xapian-db.hh b/lib/mu-xapian-db.hh index 1f727a30..e71bef68 100644 --- a/lib/mu-xapian-db.hh +++ b/lib/mu-xapian-db.hh @@ -33,8 +33,10 @@ #include #include -/* starting with 1.4.6, Xapian supports C++ move semantics, - * but only with XAPIAN_MOVE_SEMANTICS defined +/* + * starting with 1.4.6, Xapian supports C++ move semantics, + * but only with XAPIAN_MOVE_SEMANTICS defined. We require + * at lest 1.4.22 so we can define it. */ #ifndef XAPIAN_MOVE_SEMANTICS #define XAPIAN_MOVE_SEMANTICS diff --git a/meson.build b/meson.build index f075d5e5..bbb12646 100644 --- a/meson.build +++ b/meson.build @@ -17,18 +17,18 @@ ################################################################################ # project setup project('mu', ['c', 'cpp'], - version: '1.12.15', - meson_version: '>= 0.56.0', + version: '1.14.0-pre1', + meson_version: '>= 1.5.1', license: 'GPL-3.0-or-later', default_options : [ 'buildtype=debugoptimized', 'warning_level=3', 'c_std=c11', - 'cpp_std=c++17']) + 'cpp_std=c++20']) # hard-code the date here (for reproducibility); we derive the dates used in # e.g. documentation from this. -mu_date='2026-01-15' +mu_date='2026-01-20' # installation paths prefixdir = get_option('prefix') @@ -200,11 +200,14 @@ endif ################################################################################ # hard dependencies # -glib_dep = dependency('glib-2.0', version: '>= 2.60') -gobject_dep = dependency('gobject-2.0', version: '>= 2.60') -gio_dep = dependency('gio-2.0', version: '>= 2.60') -gio_unix_dep = dependency('gio-unix-2.0', version: '>= 2.60') -gmime_dep = dependency('gmime-3.0', version: '>= 3.2') +# glib & friends +glib_dep = dependency('glib-2.0', version: '>= 2.80') +gobject_dep = dependency('gobject-2.0', version: '>= 2.80') +gio_dep = dependency('gio-2.0', version: '>= 2.80') +gio_unix_dep = dependency('gio-unix-2.0', version: '>= 2.80') + +# gmime +gmime_dep = dependency('gmime-3.0', version: '>= 3.2.13') # note: g_mime_object_write_content_to_stream is not available # in the gmime we still support for normal mu build.; we only need @@ -215,13 +218,9 @@ gmime_scm_ok = cc.has_function('g_mime_object_write_content_to_stream', thread_dep = dependency('threads') -# we need Xapian 1.4 -xapian_dep = dependency('xapian-core', version:'>= 1.4', required:true) +# we need Xapian 1.4.22 or higher +xapian_dep = dependency('xapian-core', version:'>= 1.4.22', required:true) xapver = xapian_dep.version() -if xapver.version_compare('>= 1.4.6') - message('xapian ' + xapver + ' supports c++ move-semantics') - config_h_data.set('HAVE_XAPIAN_MOVE_SEMANTICS', 1) -endif if xapver.version_compare('>= 1.4.23') message('xapian ' + xapver + ' supports ngrams') config_h_data.set('HAVE_XAPIAN_FLAG_NGRAMS', 1) @@ -363,10 +362,9 @@ subdir('mu') # emacs -- needed for mu4e compilation emacs_name=get_option('emacs') -emacs_min_version='26.3' +emacs_min_version='28.1' emacs=find_program([emacs_name], version: '>=' + emacs_min_version, required:false) if emacs.found() - emacs28 = find_program([emacs_name], version: '>=28', required:false) subdir('man') subdir('mu4e') else diff --git a/mu4e/meson.build b/mu4e/meson.build index fab85652..0c2be139 100644 --- a/mu4e/meson.build +++ b/mu4e/meson.build @@ -66,6 +66,7 @@ mu4e_srcs=[ 'mu4e-server.el', 'mu4e-speedbar.el', 'mu4e-thread.el', + 'mu4e-transient.el', 'mu4e-update.el', 'mu4e-vars.el', 'mu4e-view.el', @@ -76,16 +77,6 @@ mu4e_srcs=[ # 'bc'->byte-compile. The above should always be byte-compiled. mu4e_bc_srcs = mu4e_srcs -# emacs 28 is guaranteed to have transient -# not very elegant, but -# https://stackoverflow.com/questions/49221792/byte-compile-file-only-when-library-is-found -mu4e_srcs += 'mu4e-transient.el' -if emacs28.found() - mu4e_bc_srcs += 'mu4e-transient.el' -else - message('mu4e-transient.el cannot be byte-compiled') -endif - # do have we have dbus support? mu4e_srcs += 'mu4e-dbus.el' emacs_dbus = run_command(emacs, '--batch', '--eval', '(kill-emacs (if (featurep \'dbusbind) 0 1))', diff --git a/mu4e/mu4e.el b/mu4e/mu4e.el index 16048100..a172f75d 100644 --- a/mu4e/mu4e.el +++ b/mu4e/mu4e.el @@ -110,8 +110,8 @@ Otherwise, completely quit mu4e, including automatic updating." (defun mu4e--check-requirements () "Check for the settings required for running mu4e." - (unless (>= emacs-major-version 26) - (mu4e-error "Emacs >= 25.x is required for mu4e")) + (unless (>= emacs-major-version 28) + (mu4e-error "Emacs >= 28.x is required for mu4e")) (when (mu4e-server-properties) (unless (string= (mu4e-server-version) mu4e-mu-version) (mu4e-error "The mu server has version %s, but we need %s"