<!--toc-->
|
|
|
# CppCMS 1.1.0 - Next Release
|
|
## More content filters
|
|
- json filter
|
|
## Provide Plugin Framework
|
|
Allow applications and other tools to be loaded dynamically.
|
|
## Implement Virtual Hosts support
|
|
Required for embedded environments.
|
|
|
## Implement Pre-Upload file validation, Upload file meter support
|
|
In CppCMS application is created only once the request
|
is fully ready. And after that use can validate
|
the uploaded files.
|
|
This is quite bad in case of big ones.
|
|
Possible solution is store the validation requirements
|
in the session and let `cppcms::impl::cgi_api`
|
fetch this session data and use rules to validate
|
uploaded files.
|
|
Problems:
|
|
- Session fetch may be not so cheap, it may be done over network or require DB access.
|
- Session API allows only synchronous requests.
|
- File uploading is done in even loop where all operations
|
should be non-blocking.
|
|
Possible solutions:
|
|
- Store this data in signed cookies.
|
- Add asynchronous api to sessions.
|
- Send session fetch to thread pool till and get
|
session data this way.
|
|
|
# CppCMS 1.3.0 and later
|
|
## Implementing UDP Support for `booster::aio::socket`
|
|
Booster.Aio socket supports stream sockets well, but
|
has very poor (if any) support of data-gram sockets.
|
|
You can open them and use them but there are no operations
|
like `sendto` or `recvfrom` that are data-gram oriented.
|
|
Add their implementations to Booster analogously to
|
implementations of async/sync read/write operations.
|
|
## Add Support of multiple event loops
|
|
Today, asynchronous applications do not scale
|
well on multi-core systems.
|
|
Add required support of multiple event loops
|
so different asynchronous applications would
|
be able to use them.
|
|
## Cache Improvements
|
|
### Contention
|
|
When an entry is invalidated many requests
|
may try to generate it and create significant load.
|
|
Solution, delay "fetch" if some other fetching.
|
|
### Active Invalidation
|
|
Distributed Cache system implements L1/L2 cache
|
allowing a cache client to check if the data is
|
has is still up-to-date without reading it back.
|
|
However each access to cache still require TCP-ping-pong.
|
|
So instead active cache invalidation may be done: when
|
trigger is risen or new data is stored a sort of
|
a message that causes all clients to drop invalid
|
cache is broad-casted.
|
|
Need to be implemented.
|
|
|
### Object invalidation
|
|
Use cache to invalidate general object
|
|
### Enable O(1) invalidation and lazy collection
|
|
- Make triggers refcounted - and keep generation
|
- Invalidation options:
|
1. Triggers keep spliceable list of objects that moved to kill list and deleted on demand O(1) operation
|
2. Triggers do not have list of objects at all but rather have limited access to
|
|
|
## Improve Support of RESTful services
|
|
Provide friendly API for RESTful applications in similar
|
way it is done today for JSON-RPC
|
## Implement SSL socket for `booster::aio`
|
|
Implementation of SSL sockets.
|
|
## Booster.Filesystem
|
|
Implement Directory Iterator.
|
|
## Implement Locale sensitive Date-Time Form Widgets
|
|
ICU provides good features for parsing and formatting
|
dates and times, implement Date-Time Widget
|
for this purpose.
|
|
It is not so-straightforward as user should know the
|
format he/she enters the data, such information
|
is not supplied by any existing widgets.
|
|
Think what to do in case of no-icu builds.
|
|
## Replace LRU with 2Q scan resistant algorithm
|
|
Check possibility of changing this.
|
|
## Provide WebSockets support
|
|
Implement Web Sockets support and transparent
|
fallback to some long-polling based protocol
|
comet
|
|
## Degraded Mode of work
|
|
Problem:
|
|
What happens when one of cache/session servers fails?
|
|
Solution:
|
|
Provide automatic servers fail-detection procedures and continue to work in degraded mode.
|
|
## Implement Connection Forwarding over unix-sockets
|
|
CppCMS forwarding framework allows to forward any connection
|
to other network node over SCGI API.
|
|
Is is very useful to be able to forward connections
|
between forked processes of same application.
|
|
It can be done in much cheaper between forked processes
|
by forwarding a file descriptor over Unix domain socket and
|
passing already read information via shared memory.
|
|
|
## Implement HTTPS support
|
|
Embedded web server should support HTTPS to make
|
it even more usable for embedded environments
|
|
---
|
|
← [Plugin Architecture][prev]
|
| [Top](#maincontent)
|
| [Internals of CppCMS 1.x.x][next] →
|
|
[prev]: /wikipp/en/page/cppcms_1x_plugin_architecture
|
[next]: /wikipp/en/page/cppcms_1x_internals |