Сегодня выпускаю новую версию ядра 2.1.8. Релизом стала, как я и ожидал, вчерашняя сборка из репозитория. На данный момент, это самая лучшая версия ядра Карбона по соотношению скорость/стабильность.
Изменения по сравнению с версией 2.1.7:
- Пофикшены проблемы с использованием псевдо-селекторов в :not() и :contains(), когда при использовании в них других псевдо-классов, например, div:not(:empty):nth-child(even), строка неправильно разбивалась на части, из-за чего возвращались не те элементы
- Добавил во внутреннюю функцию getByTagAndClass() поддержку свойства all для лучшей поддержки IE
- Пофиксил баг в новом алгоритме :nth-child
- Немного переделал алгоритм обработки псевдо-класса :empty
- Пофиксил недочёт псевдо-класса :not
- Переделан кэш: теперь вместе с конечными элементами записывается уникальный номер элемента, в котором производился поиск
- Добавлена поддержка псевдо-класса :nth-last-child
- Добавлена функция find() для поиска элементов в текущем наборе элементов
- Полностью переделан алгоритм обработки комбинаторов
Сравнение скорости работы по тесту SlickSpeed:
| Браузер | Carbon.JS 2.1.7 | Carbon.JS 2.1.8 | jQuery 1.4 |
| Opera 9.27 | 8.404 | 7.215 | 164.736 |
| Opera 9.64 | 4.096 | 4.107 | 97.717 |
| Opera 10.1 | 3.344 | 3.386 | 22.724 |
| Opera 10.5a | 1.365 | 1.435 | 15.780 |
| Firefox 2 | 306.737 | 9.295 | 250.235 |
| Firefox 3 | 104.038 | 3.433 | 83.708 |
| Firefox 3.5 | 2.196 | 1.984 | 29.819 |
| Firefox 3.6 | 1.856 | 1.734 | 26.197 |
| Chrome 4 | 0.379 | 0.500 | 12.066 |
| Safari 4 | 0.829 | 0.930 | 12.406 |
| IE 8 | 110.151 | 10.996 | 180.315 |
И если раньше я говорил, что jQuery быстрее работает в старых браузерах, хотя Carbon.JS обгонял и его, и Prototype в современных браузерах с поддержкой document.querySelectorAll(), то теперь я могу с уверенностью сказать: Carbon.JS Core работает быстрее всех остальных библиотек (ну да, кроме YASS, про который я уже писал) во всех браузерах! Ура, товарищи!
Версия 2.1.8 будет скорее всего последней в ветке 2.1.x. На очереди будет новая ветка 2.2.x, в которой я надеюсь пересмотреть свою модульную систему, в частности хочу оставить всего 5 из 6 полноценных модулей, а модуль UI разбить на отдельные плагины.
Но это будет позже, а пока надо заняться другими модулями, за которые я не брался уже больше четырёх месяцев. Также начну, наконец, наполнять раздел демок.
