@здесь и @far #39

Это пост для технических специалистов. Приношу свои извинения всем читателям, не являющимся техническими специалистами, которым, возможно, придется копаться в жаргоне, чтобы найти сообщение, которое я мог отправить, а мог и не отправить.

В моем всепоглощающем увлечении созданием Gimp для macOS я перешел к работе над новой версией, версией 2.99. Эта версия все еще требует некоторой работы по портированию/обновлению для завершения перехода с Gtk2 на Gtk3. Как только это будет сделано, это будет версия 3.0, захватывающая веха. Тем более, что Gtk2 сейчас устарел, и даже Gtk3 находится в режиме обслуживания.

Есть еще большие проблемы, особенно на Mac. Производительность интерфейса рисования на экране Retina в настоящее время *намного хуже*, чем та же версия, работающая в экземпляре VMWare Fusion на том же (моем) Mac. Для меня это шок. Как производительность отрисовки, которая на виртуальных машинах невероятно низкая, может быть лучше, чем на родном Mac?

Происходит что-то очень медленное и плохое. И эта проблема, кажется, преследует другие приложения на основе Gtk, такие как Inkscape. Корень проблемы, по-видимому, заключается в том, как Apple изменила свой код рисования. Он больше не работает с моделью рисования Gtk3. (По иронии судьбы, Gtk2 был исправлен и стал намного лучше!)

Так что я застрял. Это тяжело. Кривая обучения очень крутая. Мне нужно изучить внутренности macOS. Напоминаю себе, как писать код на C снова. Выясните, как использовать GLib (который, если хотите, является чем-то вроде C++ для C). Выясните, что было изменено в Gtk и почему, чтобы его можно было обновить. А затем применить все это к сложной кодовой базе, такой как Gimp.

Это интеллектуально весело, но я вынужден пойти на риск.

Я постоянно запускаю ветки, в которых понятия не имею, что делаю, а затем надеюсь научиться на ошибках. И определенно некоторые из сопровождающих не думают, что я знаю, что делаю, поэтому принятие моих патчей может быть настоящим путешествием, как хорошо.

Я также работаю со всеми другими сопровождающими, которые были щедры, помогая мне разобраться в веревках.

Но это странно, потому что на самом деле нет другого способа выяснить, что происходит. Внести все изменения за один раз просто невозможно. Я провожу часы в отладчике. Я смотрю на вывод компилятора. Все для того, чтобы немного продвинуться.

Это принцип «тестируй и учись». Каждый шаг — это шаг к почти неизбежному провалу, и каждый шаг учит меня немного больше тому, что нужно. Шаг вперед, шаг назад.

А потом я сплю на нем и на следующий день часто могу его снова поднять и, наконец, добиться прогресса.

Оскорбление фермера: ты такой злой; ты вообще обо мне не морковь!