# Introduction Below is a list of project ideas for the 2014 GSoC Application for Nimrod. You will need to spend a considerable amount of time experimenting with the Nimrod programming language before you attempt these projects. # Projects ## Compiler **Add support for coroutines** **Fix bugs with iterators/generics** **Fix/Expand Compiler as a Service features** ## Standard Library **Integrate and expand new async io module** **Enhance the filesystem monitoring module "fsmonitor.nim"** * Allow the fsmonitor module to work on Windows by using native api's to gather information about changes in monitored files and directories. * Revise the fsmonitor module api to decouple unix/linux file handle paradigms (such as using sockets.poll) from the api, allowing easier implementations of native backends. * Integrate the fsmonitor module's polling mechanism into the new asynchronous io modules. **Add a cross-platform stat()-like procedure to the operating system module "os.nim"** * Implement a procedure which uses native stat-like calls on Linux, Mac, Windows, and other operating systems to gather detailed information about specific file system objects. Allow the bypassing of symlinks and hardlinks, where possible. **Enhance and expand standard library documentation** * Ensure that documentation exists for all public methods and modules * Create and design new CSS and HTML layouts for the documentation, to better fit with the main website * Add search capabilities to the documentation ## Tools & Infrastructure **Update and refactor nimrod builder** * Reduce the number of assumptions the nimrod builder makes about its host system, in order to reduce configuration restrictions. Assumptions include location and usage of external tools, such as git. **Implement re2nim, a lexer generator for nimrod** * Model it after re2c or the Ragel state machine generator **Implement a Nimrod backend for the Ragel state machine generator** * http://www.complang.org/ragel/