<!--toc-->
|
|
|
# CppCMS 1.4.0
|
|
## HTTP Server improvements
|
|
- Implement HTTP/1.1
|
- Implement HTTPS
|
- Provide WebSockets support
|
- Implement Virtual Hosts support
|
|
## 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.
|
|
|
# CppCMS 2.0 and later
|
|
Break ABI to fix some design issues. API change should be transparent or almost transparent.
|
|
## Moving to C++11 + Design Cleanup
|
|
Remove deprecated C++03 API (auto_ptr) require C++11 as minimal, replace some of booster tools with C++11 std equivalents where possible.
|
|
|
## 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
|
|
|
|
## 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.
|
|
|
## 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.
|
|
|
## 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.
|
|
|
|
----
|
|
← [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 |