Вести с полей
Привет всем.
На сайт загружен новый триал IBProvider, сборку которого (3.45.0.26658) планируется довести до релиза.
В новой сборке откорректирована поддержка UTF8. Ранее, UTF8 символ отображался на два UTF16 (WCHAR) символа. Это обеспечивало поддержку всех допустимых символов UTF8, но создавало определенные трудности с определение максимального количества символов в колонке/параметре. Эти трудности начали приносить невыносимые страдания одному из наших последних клиентов, поэтому я решил вернуть отношение один UTF16 символ на один UTF8 символ и добавить свойство инициализации wchars_in_utf8_symbol, которое позволяет вернуться к двум UTF16 символам на один UTF8 символ.
Все остальные изменения в провайдере связанны с реорганизацией и ревизией кода.
Первое. Я изничтожил свои велосипеды (изобретенные в 2000-ом году) вокруг std::vector. И начал использовать этот класс как есть. Бинарники немного увеличились в размерах (максимум на 0.5%), производительность вроде не просела.
Второе. Некоторые внутренние объекты преобразованы из динамических в статические. Для такой махины как IBProvider, такая оптимизация мало на что повлияет. Но тем не менее.
И третье. Я тут начал читать (догреб до середины) «Эффективный и современный C++» Скотта Мейерса. Пришел к выводу, что в настоящий момент просто глупо беспокоиться за совместимость со старыми компиляторами (которые по факту я уже и не использую) и пора уже двигаться вперед. Move-трюки я уже давно начал использовать, хотя и прятал эти конструкции от старых компиляторов. Теперь начал использовать новые штуки (типа emplace_back) из STL. Без всяких условностей. Я рад что это произошло.