-
Notifications
You must be signed in to change notification settings - Fork 485
Roadmap
mloskot edited this page Mar 28, 2013
·
43 revisions
This is a tentative roadmap or wish list with no specific dates attached yet shown below. For detailed roadmap discussion and agreed tasks assigned to future releases, refer to the Issues Milestones.
If you'd like to discuss anything listed below or anything new, you are welcome to do so and post to SOCI mailing lists.
- Migration to C++11
- Implies SOCI would be no longer backward compatible with C++03 or previous versions.
- New API for DDL operations to provide unified way to
CREATE
,DROP
andALTER
database objects. - New backend for Microsoft SQL Server (native, not based on ODBC, see FreeTDS)
- New backend for Sybase (see FreeTDS)
-
New backend for DB2.(already in 3.2). -
NoSQL support?
- New backend for Apache CouchDB
- v4.0.0 milestone
- #18 - create v4.0.0-bugfix maintenance branch.
-
#25 - Buried headers - install SOCI headers in a dedicated subdirectory
{includedir}/soci
, similarly to Boost headers.- This may be a good opportunity to switch headers extension from
.h
to.hpp
and replace-
with_
in all file names. 8 Complete support for C++ integer types (see RFC1)
- This may be a good opportunity to switch headers extension from
- #51 - Throw on truncation if no indicator if provided instead of silently ignoring it, virtually guaranteeing bugs in the code.
- Create backend-specific namespaces and drop backend name prefix from names (i.e.
odbc_soci_error
would becomeodbc::soci_error
) - Refactor public API to Non-Virtual Interface Idiom (NVI).
- Documentation:
- Maintain and host for each release separately (old docs for SOCI 3.x.y, new docs for SOCI 4.0.0, etc.)
- Use simple unobtrusive plain-text format: Markdown, reStructured-Text, Boost QuickBook.
- Generate end-user documentation in various HTML and other formats: Sphinx or Boost QuickBook
- The LLVM thread on Moving to Sphinx for LLVM and friends documentation gives very good insights on QuickBook vs Sphinx, and why it's worth to make producing docs easy!
- Examples: cpp-netlib website and docs based on Sphinx (see rationale explained)
- Add BOOLEAN data type support.
- Add NUMERIC/DECIMAL data type support (prototype for
soci::numeric
in mloskot/postgresql, alternative is Boost.Multiprecision) - Add BINARY data transfer support
- Critical if we would like to support features like (geometry, raster or point cloud data types) and geometry data available in most DBMS.
-
New tests:
- Unit tests with mocking
- Integration tests against real databases
- Modular maintainable implementationbased on one of popular frameworks like big fully-featured (Boost.UTF, googletest) or lightweight (C++ TUT or CATCH)
- Alex Ott's article on Test-driven development and unit testing with brief discussion with Alex on Boost.Test and Turtle (Boost-oriented library, might be proposed).
- Style unification
- ClangFormat could make it easy.
- Bug fixes reported to SOCI 3.1.0 and earlier versions will be released with SOCI 3.2.0 or SOCI 4.0.0.
- If you use SOCI 2.X.Y, you should update ASAP.