Руководитель: Алексей Кладов
Презентации из описания проекта
Написать библиотеку строки для языка Rust, интерфейс которой аналогичен std::string.
При этом реализация должна включать такие оптимизации как SSO (короткие строки хранятся на стеке) и COW (копирование представляет из себя просто увеличение счетчика ссылок на строку, modify операции, если счетчик не равен 1 сначала копируют строку).
Ожидается хорошее тестирование, иначе этим нельзя пользоваться, и бенчмарки, если будет работать медленее std::string, то зачем мы вообще это делали.
К сожалению, единственная хорошая библиотека на Rust для SSO строк это smartstring обладает специфичной лицензией MPL-2.0 и нетривиальным интерфейсом, хочется иметь аналогичную библиотеку с более приятным интерфейсом и MIT лицензией. Возможно с некоторыми иными техническими решениями.
Написана упрощенная реализация строки на Rust с SSO и COW.
- Реализованы трейты сравнения, принта
- Геттеры для длины и содержимого
- Методы push, push_str, remove
- Тесты и quickcheck тесты
- CI для убунту для тестов и форматирования
Rust новый для меня язык, поэтому в основном трудности связаны с тем что я не знаю нужных библиотек, инструментов, принятых в языке, идиоматичных подходов.
- Бенчмарки, которые сравнивают с std::string и smartstring.
- Имплементировать оставшиеся методы и трейты std::string.
- Заменить enum на c-union с флагом в размере.
- Написать свой вектор байт со счетчиком ссылок, для того что бы уменьшить косвенность и количсетво аллокаций.
- Тестов много не бывает...
Rust, quickcheck, random.
Созвониваюсь с руководителем практически каждую неделю. Это помогает быстрее разобраться с возникающими трудностями, которые описаны выше. Также засчет этого получается развивать проект достаточно итеративно.