Буй, проект, призванный дополнить Фаро добавлением полезных расширений, достиг версии 5.0.0.

Поддерживаемые версии Pharo: 6.1 — 32 бита и 7.0 — 32 и 64 бита. Критические изменения касаются только организации пакета, поэтому вам, возможно, придется адаптировать свои базовые зависимости, но остальная часть кода обратно совместима с версией 4.

Новые функции в этой версии

В иерархию коллекций добавлено несколько полезных расширений:

  • maxUsing: , minUsing: , maxUsing:ifEmpty: и minUsing:ifEmpty: были добавлены в коллекцию, что позволило пользователю предоставить замыкание, используемое для сравнения объектов.
  • copyFirst: copyLast: copyNoMoreThanFirst: и copyNoMoreThanLast: были добавлены в SequenceableCollection. Проверьте документацию, чтобы заметить различия с first: и last:

К базовым классам Pharo были добавлены и другие расширения:

  • BlockClosure>>#on:except:do был добавлен. Pharo получил поддержку исключения некоторых исключений в обработчике в предыдущем выпуске с помощью сообщения - для создания набора исключений, но мы считаем, что это расширение обеспечивает более четкую семантику.
  • Behavior>>#allLeafSubcasses позволяет получить подклассы класса, у которого нет подклассов.

В этом релизе добавлено два алгоритма работы с коллекциями:

  • BalancedDistributionInBucketsAlgorithm реализует алгоритм, который при заданной начальной коллекции и максимальном размере корзины возвращает список корзин (с учетом максимального размера корзины), включая все элементы коллекции, распределенные в корзинах сбалансированным образом (поэтому ни одна корзина не будет выглядеть почти пустой).
  • BinarySearchAlgorithm реализует двоичный поиск, работающий с ранее отсортированной коллекцией. Учитывая search key, он вернет для него индекс вставки. Он полезен в качестве строительного блока для нарезки коллекций с предоставленными свойствами в заданном диапазоне или вставки новых элементов в нужное место.

Другие улучшения

  • RegexCondition производительность была улучшена, раньше регулярное выражение создавалось каждый раз при оценке условия, теперь оно кэшируется при инициализации.
  • По мере приближения к выпуску Pharo 7 соответствующие задания сборки больше не помечаются как допущенные к сбою.
  • Документация улучшилась, охватив почти все предоставляемые функции.
  • Структура проекта была адаптирована в соответствии с будущими рекомендациями для экосистемы.

Присоединяйтесь к нам на ba-st и ознакомьтесь с новым проектом правила сообщества.