patch 9.1.1748: macOS: Default scheduler priority too low
Commit:
https://github.com/vim/vim/commit/4bf0f6c1df70447156855dcaadbdab889bf99bb6
Author: Luna Razzaghipour <
lu...@xoria.org>
Date: Wed Sep 10 03:55:51 2025 -0400
patch 9.1.1748: macOS: Default scheduler priority too low
Problem: macOS: Default scheduler priority too low
Solution: Explicitly set TASK_DEFAULT_APPLICATION scheduler priority
to improve responsiveness (Luna Razzaghipour).
closes: #18120
Signed-off-by: Luna Razzaghipour <
lu...@xoria.org>
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index adb9bedd0..c7f725bad 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -1,4 +1,4 @@
-*version9.txt* For Vim version 9.1. Last change: 2025 Sep 09
+*version9.txt* For Vim version 9.1. Last change: 2025 Sep 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -41621,6 +41621,7 @@ Platform specific~
- The Win32 GUI comes with better toolbar icons.
- Better fullscreen support for Haiku |os_haiku.txt|.
+
*new-other-9.2*
Other new features ~
------------------
@@ -41763,6 +41764,7 @@ Others: ~
Platform specific ~
- MS-Winodws: Paths like "\Windows" and "/Windows" are now considered to be
absolute paths (to the current drive) and no longer relative.
+- macOS: increase default scheduler priority to TASK_DEFAULT_APPLICATION.
*added-9.2*
Added ~
diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt
index cf977380c..94ae22610 100644
--- a/runtime/doc/vi_diff.txt
+++ b/runtime/doc/vi_diff.txt
@@ -1,4 +1,4 @@
-*vi_diff.txt* For Vim version 9.1. Last change: 2025 Sep 08
+*vi_diff.txt* For Vim version 9.1. Last change: 2025 Sep 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1381,7 +1381,7 @@ System | Status:~
Amiga (OS4, AROS & MorphOS): | still supported (?)
Haiku: | supported
Linux: | fully supported (on maintained versions)
-Mac OS: | fully supported up until v10.6 (?)
+macOS: | fully supported up until v10.6 (?)
MS-Windows 7, 8, 10, 11: | fully supported
OpenVMS: | supported
QNX: | still supported (?)
diff --git a/src/os_mac.h b/src/os_mac.h
index 34fe1f14c..6c23f4cb6 100644
--- a/src/os_mac.h
+++ b/src/os_mac.h
@@ -46,6 +46,11 @@
#include <time.h>
#include <dirent.h>
+/*
+ * Mach interface
+ */
+#include <mach/task.h>
+
/*
* MacOS specific #define
*/
diff --git a/src/os_unix.c b/src/os_unix.c
index 109489939..47c24b107 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -3676,6 +3676,15 @@ mch_early_init(void)
signal_stack = alloc(get_signal_stack_size());
init_signal_stack();
#endif
+
+ /*
+ * Inform the macOS scheduler that Vim renders UI, and so shouldn’t have its
+ * threads’ quality of service classes clamped.
+ */
+#ifdef MACOS_X
+ integer_t policy = TASK_DEFAULT_APPLICATION;
+ task_policy_set(mach_task_self(), TASK_CATEGORY_POLICY, &policy, 1);
+#endif
}
#if defined(EXITFREE) || defined(PROTO)
diff --git a/src/version.c b/src/version.c
index 44eb6d961..85ccf3fa8 100644
--- a/src/version.c
+++ b/src/version.c
@@ -724,6 +724,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1748,
/**/
1747,
/**/