Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| summerofcode2014:unicode [2014/05/19 21:08] – DmitrySelyutin | summerofcode2014:unicode [2015/06/05 16:48] (current) – Add Code Review link PedroGiffuni | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| * Mentor: [[/ | * Mentor: [[/ | ||
| - | ===== Project description | + | ===== Description |
| There are lot of functions in libc that are ethier unimplemented or buggy or may be significantly improved. The most known functions that need an implementation are strcoll and strcoll_l (being the reason why some projects use external libraries like %%PostgreSQL%% uses ICU). Functions that may need reimplementation are for example wc/mb and uchar.h-related functions; their support can be significantly improved to be at least as fast as they are in glibc or ICU library. | There are lot of functions in libc that are ethier unimplemented or buggy or may be significantly improved. The most known functions that need an implementation are strcoll and strcoll_l (being the reason why some projects use external libraries like %%PostgreSQL%% uses ICU). Functions that may need reimplementation are for example wc/mb and uchar.h-related functions; their support can be significantly improved to be at least as fast as they are in glibc or ICU library. | ||
| - | ===== Approach | + | ===== Approach ===== |
| Implement string collation algorithm as discussed in UTS#10. | Implement string collation algorithm as discussed in UTS#10. | ||
| Fix various bugs in libc Unicode support. | Fix various bugs in libc Unicode support. | ||
| Line 13: | Line 13: | ||
| Implement strcoll and strcoll_l functions, improve wc/mb functions as well as C11 and POSIX standart functions. One of the goals of this project is to let some projects like %%PostgreSQL%% to be built without ICU as dependency (thus strcoll and strcoll_l are the absolutely necessary functions). However, I personally treat this project as a possibility to provide better Unicode support everywhere where we can. | Implement strcoll and strcoll_l functions, improve wc/mb functions as well as C11 and POSIX standart functions. One of the goals of this project is to let some projects like %%PostgreSQL%% to be built without ICU as dependency (thus strcoll and strcoll_l are the absolutely necessary functions). However, I personally treat this project as a possibility to provide better Unicode support everywhere where we can. | ||
| - | ===== Milestones | + | ===== Checkpoints |
| - | * 26 March – 15 May: investigate strcoll implementation that was written by Konrad Jankowski; if it works, it must be modified according current library, since it predates xlocale.h; if it is unusable, we have to implement it from scratch, so during this period I propose mainly reading documentation and existing sources. | + | Functions for normalization and canonicalization are implemented in source files under lib/ |
| - | * 15 May – 27 June: actual strcoll and strcoll_l implementation that is correct following Unicode standart. It must work for at least UTF-8 encoding; probably it would be better to make strcoll convert byte sequence to UCS-4 sequence and only then perform actual comparison. We must also decide if we want to support diacritics, ligatures, etc.; since I think that we must follow the latest Unicode standart we have to support | + | New collation database interface |
| - | * 27 June – 22 August: fix broken or buggy Unicode functions; improve perfomance everywhere where possible. | + | Right now source code is placed under lib/ |
| - | + | ||
| - | ===== Test Plan ===== | + | |
| ===== The Code ===== | ===== The Code ===== | ||
| https:// | https:// | ||
| + | |||
| + | https:// | ||
| ===== Useful links ===== | ===== Useful links ===== | ||