diff --git a/docs/source/index.rst b/docs/source/index.rst index 0ea7930a9..5cb5e4200 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -52,6 +52,7 @@ Contents: commands plugins tune + releases ------- License diff --git a/docs/source/releases.rst b/docs/source/releases.rst new file mode 100644 index 000000000..1d9dabec7 --- /dev/null +++ b/docs/source/releases.rst @@ -0,0 +1,1115 @@ + +.. _changes: + +======= +Changes +======= + +------------------- +Version 0.17.1-beta +------------------- + +*Release Date: 2016-03-22* + +Enhancements +------------ + +Time unit of session 'expired_after' changed to minute. (#479) + +Dashboard +--------- + +Code Review and improve the design of Dashboard. + +------------------- +Version 0.17.0-beta +------------------- + +*Release Date: 2016-03-15* + +Highlights +---------- + +Installation and Configuration Guide released on http://docs.emqtt.com + +Improve and Consolidate the design of Hook, Server, PubSub and Router + +Upgrade the [Web Dashboard](https://github.com/emqtt/emqttd_dashboard) to support pagination + +Bridge emqttd broker to another emqttd broker & emqttd to mosquitto bridge (#438) + +Enhancements +------------ + +emqttd_ctl: better error message (#450) + +./bin/emqttd_ctl: add 'routes' command:: + + routes list # List all routes + routes show # Show a route + +Add 'backend_subscription' table and support static subscriptions (emqttd_backend) + +Add 'retained_message' table and refactor emqttd_retainer module (emqttd_backend) + +A New Hook and Callback Design (emqttd_hook) + +Add PubSub, Hooks APIs to emqttd module (emqttd) + +Move start_listeners/0, stop_listeners/0 APIs to emqttd_app module (emqttd_app) + +Tests +----- + +Add 100+ common test cases. + +Plugins +------- + +Upgrade Dashboard, Redis, Stomp and Template Plugins + +------------------- +Version 0.16.0-beta +------------------- + +*Release Date: 2016-02-16* + +Highlights +---------- + +Licensed under the Apache License, Version 2.0 Now. + +Improve the design of cluster, support to join or leave the cluster (#449):: + + $ ./bin/emqttd_ctl cluster + cluster join #Join the cluster + cluster leave #Leave the cluster + cluster remove #Remove the node from cluster + cluster status #Cluster status + +Improve the design of Trie and Route, only the wildcard topics stored in Trie. + +Common Test to replace EUnit. + +Enhancements +------------ + +mqtt_message record: add 'sender' field (#440) + +refactor the emqttd, emqttd_time, emqttd_opts, emqttd_node modules. + +Bugfix +------ + +noproc error when call to gen_server2:call(false, {add_route,Topic,<0.685.0>}, infinity) (#446) + +#### Plugins + +Changed the license of all plugins. + +------------------- +Version 0.15.0-beta +------------------- + +*Release Date: 2016-01-31* + +Highlights +---------- + +Optimize for Push Application, 500K+ Subscribers to a Topic. + +Optimization for Route ETS insertion (#427) + +Priority Message Queue for Persistent Session (#432) + +Add Redis, MongoDB Plugins (#417) + +Enhancements +------------ + +Username/Password Authentication: Support to configure default users (#428) + +Improve CLI Commands: pubsub, bridges, trace (#429) + +emqttd_mod_subscription: fix client_connected/3 + +emqttd_auth_mod: add passwd_hash/2 function + +priority_queue: add plen/2, out/2 functions + +Bugfix +------ + +Fix dequeue/1 of emqttd_bridge... + +Add emqttd:seed_now/0 function + +Plugins +------- + +emqttd_plubin_mysql: Changed mysql driver to mysql-otp + +emqttd_plugin_pgsql: Integrate with ecpool + +emqttd_plugin_redis: First release + +emqttd_plugin_mongo: First release + +------------------- +Version 0.14.1-beta +------------------- + +*Release Date: 2015-12-28* + +Bugfix: emqttd_ws_client.erl: Unexpected Info: {'EXIT',<0.27792.18>,{shutdown,destroy}} (#413) + +Improve: fix spec errors found by dialyzer + +------------------- +Version 0.14.0-beta +------------------- + +*Release Date: 2015-12-18* + +Highlights +---------- + +Scaling to 1.3 Million Concurrent MQTT Connections on a 12 Core, 32G CentOS server. + +New PubSub, Router Design (#402). Prepare for scaling to 10 millions on one cluster. + +Enhancements +------------ + +Improve the gproc_pool usage with a general emqttd_pool_sup + +Improve the design of emqttd_pubsub, add a new emqttd_router module + +Improve the design of the whole supervisor tree + +Route aging mechanism to remove the topics that have no subscriptions + +Improve the dashboard, mysql, pgsql, stomp, sockjs plugins + +Add 'topics', 'subscriptions' admin commands + +Avoid using mnesia table index and mnesia:index_read API to lower CPU usage + +Subscribe timeout exception (#366) + +Long Delay on Multiple Topic Subscription (#365) + +Subscriptions persistence (#344) + +emqttd_ctl: 'subscriptions' command to force clients to subscribe some topics (#361) + +Bugfix +------ + +emqttd_sm: spec of lookup_session/1 is not right BUG (#411) + +Observer application should be removed from reltool.config for 'wx' app is not available (#410) + +Benchmark +--------- + +1.3 million concurrent MQTT connections on a 12 Core, 32G CentOS Server, consume about 15G Memory and 200% CPU. + +------------------- +Version 0.13.1-beta +------------------- + +*Release Date: 2015-11-28* + +Bugfix: Plugin pathes error under windows (#387) + +Improve: Too many error logs "[error] Session ..... Unexpected EXIT: client_pid=<0.14137.35>, exit_pid=<0.30829.22>, reason=nop..." (#383) + +Improve: Define QOS0/1/2, Pooler Error (PR#382) + +Improve: High CPU load when 400K unstable mobile connections (#377) + +BugFix: emqttd_plugin_pgsql - error using same query with latest update plugin (pgsql#5) + +------------------- +Version 0.13.0-beta +------------------- + +*Release Date: 2015-11-08* + +Highlights +---------- + +Rate Limiting based on [Token Bucket](https://en.wikipedia.org/wiki/Token_bucket) and [Leaky Bucket](https://en.wikipedia.org/wiki/Leaky_bucket#The_Leaky_Bucket_Algorithm_as_a_Meter) Algorithm + +Upgrade eSockd and MochiWeb libraries to support Parameterized Connection Module + +Improve emqttd_client to support fully asynchronous socket networking + +Enhancements +------------ + +Protocol Compliant - Session Present Flag (#163) + +Compilation fails if repo is cloned with a different name (#348) + +emqttd_client: replace gen_tcp:send with port_command (#358) + +TCP sndbuf, recbuf, buffer tuning (#359) + +emqttd_client.erl to handle 'inet_async', 'inet_reply' properly (#360) + +Refator the [client/session management design](https://github.com/emqtt/emqttd/blob/master/doc/design/ClientSession.md) + +Bugfix +------ + +Cannot kick transient client out when clientId collision (#357) + +Fix the order of emqttd_app:start_server/1 (#367) + +emqttd_session:subscribe/2 will crash (#374) + +Benchmark +--------- + +[benchmark for 0.13.0 release](https://github.com/emqtt/emqttd/wiki/benchmark-for-0.13.0-release) + +3.1G memory and 50+ CPU/core: + +.. code:: console + + Connections: 250K + Subscribers: 250K + Topics: 50K + Qos1 Messages/Sec In: 4K + Qos1 Messages/Sec Out: 20K + Traffic In(bps): 12M+ + Traffic Out(bps): 56M+ + +------------------- +Version 0.12.3-beta +------------------- + +*Release Date: 2015-10-22* + +Bugfix: emqttd_sysmon crasher for 'undefined' process_info (#350) + +Bugfix: emqttd_client: catch parser exception (#353) + +------------------- +Version 0.12.2-beta +------------------- + +*Release Date: 2015-10-16* + +Bugfix: Retained messages should not be expired if 'broker.retained.expired_after = 0' (#346) + +------------------- +Version 0.12.1-beta +------------------- + +*Release Date: 2015-10-15* + +Highlight: Release for Bugfix and Code Refactor. + +Feature: Retained message expiration (#182) + +Improve: '$SYS/#' publish will not match '#' or '+/#' (#68) + +Improve: Add more metrics and ignore '$SYS/#' publish (#266) + +Improve: emqttd_sm should be optimized for clustered nodes may be crashed (#282) + +Improve: Refactor emqttd_sysmon and suppress 'monitor' messages (#328) + +Task: benchmark for 0.12.0 release (#225) + +Benchmark: About 900K concurrent connections established on a 20Core, 32G CentOS server. + +------------------- +Version 0.12.0-beta +------------------- + +*Release Date: 2015-10-08* + +Highlights +---------- + +Enhance the **emqttd_ctl** module to allow plugins to register new commands (#256) + +Add [emqttd_recon plugin](https://github.com/emqtt/emqttd_recon) to debug/optimize the broker (#235) + +Add **'./bin/emqttd_ctl broker pubsub'** command to check the status of core pubsub processes + +Add **'./bin/emqttd_top'** command(like etop) to show the top 'msg_q', 'reductions', 'memory' or 'runtime' processes + +'rel/files/emqttd.config.production' for production deployment(default) + +'rel/files/emqttd.config.development' for development deployment + +Enhancements +------------ + +Qos1/2 messages will not be dropped under unstable mobile network (#264) + +**emqttd_session:subscribe/2, emqttd_session:unsubscribe/2** APIs should be asynchronous (#292) + +**etc/emqttd.config**: 'idle_timeout' option to close the idle client(socket connected but no 'CONNECT' frame received) + +**etc/emqttd.config**: 'unack_retry_interval' option for redelivering Qos1/2 messages + +How to monitor large 'message_queue_len' (#283) + +Bugfix +------ + +Behaviour emqttd_auth_mod is missing init callback (#318) + +Benchmark +--------- + +Write a new [benchmark tool](https://github.com/emqtt/emqtt_benchmark) to benchmark this release + +Hw requirements - 5K users, 25-50 msgs/sec, QoS=1 (#209) + +Supported Number of Connections Greatly Reduced When Clients are Subscribing (#324) + +------------------- +Version 0.11.0-beta +------------------- + +*Release Date: 2015-09-25* + +Highlight: Rebar to manage plugin dependencies. + +Highlight: [Stomp](https://github.com/emqtt/emqttd_stomp) and [SockJS](https://github.com/emqtt/emqttd_sockjs) Plugins! + +Improve: add rel/files/emqttd.config.development|production. + +Improve: rel/reltool.config.script to release deps of plugin. + +Improve: persist mnesia schema on slave nodes. + +Improve: use timer:seconds/1 api. + +Improve: The binary release will be compiled with R18.1 now. + +Bugfix: issue#306 - emqttd_cm should unregister the duplicated client + +Bugfix: issue#310 - usage of emqttd_ctl error: 'session list' should be 'sessions list' + +Bugfix: issue#311 - './bin/emqttd_ctl sessions list' error + +Bugfix: issue#312 - unsubcribe will lead to crash if emqttd_plugin_template plugin loaded + +------------------- +Version 0.10.4-beta +------------------- + +*Release Date: 2015-09-18* + +Optimize session management and upgrade eSockd library to 2.7.1 + +[Benchmark for 0.10.4 release](https://github.com/emqtt/emqttd/wiki/benchmark-for-0.10.4-release) + +Improve: issue#294 - [error] failed to start connection on 0.0.0.0:1883 - enotconn + +Improve: issue#297 - How do I allow user with some pattern to access topic with some pattern? + +Bugfix: issue#291 - "./bin/emqttd attach ..." cannot work + +Bugfix: issue#284 - Should not use erlang:list_to_atom/1 in emqttd_vm.erl + +------------------- +Version 0.10.3-beta +------------------- + +*Release Date: 2015-08-30* + +Bugfix: issue#271 - add emqttd_ws_client:subscribe/2 function + +Bugfix: issue#269 - bin/emqttd Syntax error on ubuntu + +Improve: issue#265 - client under unstable mobile network generate a lot of logs + +------------------- +Version 0.10.2-beta +------------------- + +*Release Date: 2015-08-26* + +Improve: issue#257 - After the node name changed, the broker cannot restart for mnesia schema error. + +------------------- +Version 0.10.1-beta +------------------- + +*Release Date: 2015-08-25* + +Bugfix: issue#259 - when clustered the emqttd_dashboard port is close, and the 'emqttd' application cannot stop normally. + +Feature: issue#262 - Add 'http://host:8083/mqtt/status' Page for health check + +------------------- +Version 0.10.0-beta +------------------- + +*Release Date: 2015-08-20* + +[Web Dashboard](https://github.com/emqtt/emqttd_dashboard) and [MySQL](https://github.com/emqtt/emqttd_plugin_mysql), [PostgreSQL](https://github.com/emqtt/emqttd_plugin_pgsql) Authentication/ACL Plugins! + +Highlight: Web Dashboard to monitor Statistics, Metrics, Clients, Sessions and Topics of the broker. + +Highlight: JSON/HTTP API to query all clients connected to broker. + +Highlight: A new [Plugin Design](https://github.com/emqtt/emqttd/wiki/Plugin%20Design) and a [Template project](https://github.com/emqtt/emqttd_plugin_template) for plugin development. + +Highlight: Authentication/ACL with MySQL, PostreSQl databases (#194, #172) + +Feature: Session Statistics including inflight_queue, message_queue, message_dropped, awaiting_rel, awaiting_ack, awaiting_comp (#213) + +Feature: Cookie based authentication for MQTT over websocket connections (#231) + +Feature: Get all clients connected to the broker (#228, #230, #148, #129) + +Feature: "./bin/emqttd_ctl clients show ClientId" to query client status (#226) + +Feature: "./bin/emqttd_ctl clients kick ClientId" to kick out a client + +Feature: "./bin/emqttd_ctl sessions list" to show all sessions + +Feature: "./bin/emqttd_ctl sessions show ClientId" to show a session + +Feature: Erlang VM metrics monitor with Web Dashboard (#59) + +Improve: Too many "inflight queue is full!" log when session is overloaded (#247) + +Improve: There are two many "MQueue(~s) drop ~s" logs if the message queue of session is small (#244) + +Improve: gen_server2(from RabbitMQ) to improve emqttd_session, emqttd_pubsub + +Improve: Makefile to build plugins + +Bugfix: emqttd_broker:unhook/2 cannot work (#238) + +Bugfix: emqttd plugin cannot include_lib("emqttd/include/emqttd.hrl") (#233) + +Bugfix: Too many 'Session ~s cannot find PUBACK' logs (#212) + +Bugfix: emqttd_pooler cannot work + +------------------- +Version 0.9.3-alpha +------------------- + +*Release Date: 2015-07-25* + +Wiki: [Bridge](https://github.com/emqtt/emqttd/wiki/Bridge) + +Improve: emqttd_protocol.hrl to define 'QOS_I' + +Improve: emqttd_pubsub to add subscribe/2 API + +Improve: ./bin/emqttd_ctl to support new bridges command + +Bugfix: issue #206 - Cannot bridge two nodes + +------------------- +Version 0.9.2-alpha +------------------- + +*Release Date: 2015-07-18* + +Improve: issue #196 - Add New Hook 'client.subscribe.after' + +------------------- +Version 0.9.1-alpha +------------------- + +*Release Date: 2015-07-10* + +Bugfix: issue #189 - MQTT over WebSocket(SSL) cannot work? + +Bugfix: issue #193 - 'client.ack' hook should be renamed to 'message.acked', and called by emqttd_broker:foreach_hooks + +------------------- +Version 0.9.0-alpha +------------------- + +*Release Date: 2015-07-09* + +[Session, Queue, Inflight Window, Hooks, Global MessageId and More Protocol Compliant](https://github.com/emqtt/emqttd/releases/tag/0.9.0-alpha) Now! + +Feature: Session/Queue/Inflight Window Design (#145). + +Feature: Support to resume a persistent session on other clustered node. + +Feature: Support alarm management. + +Feature: emqttd_guid to generate global unique message id. + +Feature: Hooks for message pub/ack. + +Feature: Protocol compliant - message ordering, timeout and retry. + +Improve: Every client will start_link a session process, whether or not the client is persistent. + +Improve: etc/emqttd.config to support more session, queue configuration. + +Improve: issue #179 - Max offline message queue {max_queue, 100} meaning. + +Improve: issue #180 - Should change project structure for other projects maybe depend on 'emqttd'. Merge emqtt, emqttd apps. + +Improve: issue #185 - PacketId and MessageId: the broker should generate global unique message id. + +Improve: issue #187 - etc/emqttd.config to support https listener + +Improve: issue #186 - emqttd_cm to store client details + +Improve: issue #174 - add 'from' field to mqtt_message record. + +Improve: issue #170 - $SYS Topics should support alarms. + +Improve: issue #169 - Add More [Hooks](https://github.com/emqtt/emqttd/wiki/Hooks-Design) + +Improve: issue #167 - Inflight window to assure message ordering. + +Improve: issue #166 - Message delivery timeout and retry. + +Improve: issue #143 - Qos1, Qos2 PubSub message timeout. + +Improve: issue #122 - Labeling message with unique id. emqttd_guid module to generate global unique msgid. + +Improve: emqttd_bridge to support pending message queue, and fix the wrong Qos design. + +Improve: mqtt_message record to add 'msgid', 'from' and 'sys' fields. + +Change: Add emqttd_mqueue, emqttd_guid, emqttd_alarm modules. + +Bugfix: issue #184 - emqttd_stats:setstats is not right. + +Bugfix: Closed issues #181, #119. + +Tests: fix the parser, acl test cases. + +------------------ +Version 0.8.6-beta +------------------ + +*Release Date: 2015-06-17* + +Bugfix: issue #175 - publish Will message when websocket is closed without 'DISCONNECT' packet + +------------------ +Version 0.8.5-beta +------------------ + +*Release Date: 2015-06-10* + +Bugfix: issue #53 - client will receive duplicate messages when overlapping subscription + +------------------ +Version 0.8.4-beta +------------------ + +*Release Date: 2015-06-08* + +Bugfix: issue #165 - duplicated message when publish 'retained' message to persistent client + +------------------ +Version 0.8.3-beta +------------------ + +*Release Date: 2015-06-05* + +Bugfix: issue #158 - should queue:in new message after old one dropped + +Bugfix: issue #155 - emqtt_parser.erl: parse_topics/3 should reverse topics + +Bugfix: issue #149 - Forget to merge plugins/emqttd_auth_mysql from 'dev' branch to 'master' in 0.8.x release + +------------------- +Version 0.8.2-alpha +------------------- + +*Release Date: 2015-06-01* + +Bugfix: issue #147 - WebSocket client cannot subscribe queue '$Q/queue/${clientId}' + +Bugfix: issue #146 - emqttd_auth_ldap: fill(Username, UserDn) is not right + +------------------- +Version 0.8.1-alpha +------------------- + +*Release Date: 2015-05-28* + +Client [Presence](https://github.com/emqtt/emqttd/wiki/Presence) Support and [$SYS Topics](https://github.com/emqtt/emqttd/wiki/$SYS-Topics) Redesigned! + +Bugfix: issue #138 - when client disconnected normally, broker will not publish disconnected $SYS message + +Bugfix: fix websocket url in emqttd/priv/www/websocket.html + +Improve: etc/emqttd.config to allow websocket connections from any hosts + +Improve: rel/reltool.config to exclude unnecessary apps. + +------------------- +Version 0.8.0-alpha +------------------- + +*Release Date: 2015-05-25* + +[Hooks](https://github.com/emqtt/emqttd/wiki/Hooks%20Design), Modules and [Plugins](https://github.com/emqtt/emqttd/wiki/Plugin%20Design) to extend the broker Now! + +Plugin: emqttd_auth_mysql - MySQL authentication plugin (issues #116, #120) + +Plugin: emqttd_auth_ldap - LDAP authentication plugin + +Feature: emqttd_broker to support Hooks API + +Feature: issue #111 - Support 'Forced Subscriptions' by emqttd_mod_autosub module + +Feature: issue #126 - Support 'Rewrite rules' by emqttd_mod_rewrite module + +Improve: Support hooks, modules to extend the broker + +Improve: issue #76 - dialyzer check + +Improve: 'Get Started', 'User Guide', 'Developer Guide' Wiki + +Improve: emqtt_topic to add join/1, feed_var/3, is_queue/1 + +Improve: emqttd_pooler to execute common tasks + +Improve: add emqttd_sm_sup module, and use 'hash' gproc_pool to manage sessions + +Tests: add more test cases for 'emqttd' app + +------------------- +Version 0.7.1-alpha +------------------- + +*Release Date: 2015-05-04* + +Add doc/design/* and merge doc/* to github Wiki + +Bugfix: issue #121 - emqttd cluster issuse + +Bugfix: issue #123 - emqttd:unload_all_plugins/0 cannot unload any plugin + +Bugfix: fix errors found by dialyzer + +------------------- +Version 0.7.0-alpha +------------------- + +*Release Date: 2015-05-02* + +[MQTT over WebSocket(SSL)](https://github.com/emqtt/emqttd/wiki/MQTT-Over-WebSocket) Now! + +[Plugin Achitecture](https://github.com/emqtt/emqttd/wiki/Plugin%20Design) based on OTP application + +[Trace MQTT Packets or Messages](https://github.com/emqtt/emqttd/wiki/Trace%20Design) to log files + +Feature: issue #40, #115 - WebSocket/SSL Support + +Feature: issue #49, #105 - Plugin Architecture Support + +Feature: issue #93 - Trace API Design + +Improve: issue #109 - emqttd_broker should add subscribe, notify API + +Improve: update README.md to add 'Goals', 'Contributors' chapters + +Change: rename etc/app.config to etc/emqttd.config + +Change: etc/emqttd.config changed + +Bugfix: critical issue #54 - error when resume session! + +Bugfix: issue #118 - error report when UNSUBSCRIBE with no topics + +Bugfix: issue #117 - sys_interval = 0 config cannot work + +Bugfix: issue #112 - Makefile to support build plugins + +Bugfix: issue #96 - "make clean" cannot work + +------------------- +Version 0.6.2-alpha +------------------- + +*Release Date: 2015-04-24* + +Bugfix: critical issue #54, #104, #106 - error when resume session + +Improve: add emqttd_cm_sup module, and use 'hash' gproc_pool to register/unregister client ids + +Improve: kick old client out when session is duplicated. + +Improve: move mnesia dir config from etc/app.config to etc/vm.args + +------------------- +Version 0.6.1-alpha +------------------- + +*Release Date: 2015-04-20* + +Integrate with [gproc library](https://github.com/uwiger/gproc) to support pool + +Feature: issues#91 - should use worker_pool to handle some async work? + +Feature: issues#95 - Topic filters in ACL rule should support 'eq' tag + +Improve: issues#84 - emqttd_pubsub is redesigned again to protect mnesia transaction + +Improve: issues#74 - ACL Support and update [ACL Design Wiki](https://github.com/emqtt/emqttd/wiki/ACL-Design) + +------------------- +Version 0.6.0-alpha +------------------- + +*Release Date: 2015-04-17* + +ACL Support Now: [ACL-Design Wiki](https://github.com/emqtt/emqttd/wiki/ACL-Design) + +Authentication with username, clientid Now: [Authentication Wiki](https://github.com/emqtt/emqttd/wiki/Authentication) + +Seperate common MQTT library to 'emqtt' application + +Redesign message pubsub, route and retain modules + +Redesign mnesia database cluster + +Feature: issues#47 - authentication, authorization support + +Feature: issues#92 - merge emqttd_acl and emqttd_auth to emqttd_access_control + +Feature: emqttd_acl_mod, emqttd_auth_mod behaviour to extend ACL, authentication + +Feature: issues#85 - lager:info to log subscribe, unsubscribe actions + +Feature: issues#77 - authentication with clientid, ipaddress + +Improve: issues#90 - fix lager_file_backend log format, and rotate 10 log files + +Improve: issues#88 - use '-mneisa_create', '-mnesia_replicate' attributes to init mneisa + +Improve: issues#87 - record mqtt_user and mqtt_client is duplicated + +Improve: issues#81 - redesign nodes cluster to support disc_copies mnesia tables + +Improve: issues#80 - redesign emqttd_cm to handle more concurrent connections + +Improve: issues#70 - how to handle connection flood? Now could support 2K+ CONNECT/sec + +Change: redesign mnesia tables: message, topic, subscriber, trie, trie_node + +Bugfix: issues#83 - emqttd_broker stats cannot work + +Bugfix: issues#75 - careless about function name when emqttd_pubsub handle getstats message + +------------------ +Version 0.5.5-beta +------------------ + +*Release Date: 2015-04-09* + +Bugfix: issue #75 - careless about function name when emqttd_pubsub handle getstats message. + +Bugfix: issue #79 - cannot find topic_subscriber table after cluster with other nodes. + +------------------- +Version 0.5.4-alpha +------------------- + +*Release Date: 2015-03-22* + +Benchmark this release on a ubuntu/14.04 server with 8 cores, 32G memory from QingCloud.com:: + + 200K Connections, + 30K Messages/Sec, + 20Mbps In/Out Traffic, + 200K Topics, + 200K Subscribers, + + Consumed 7G memory, 40% CPU/core + +Benchmark code: https://github.com/emqtt/emqttd_benchmark + +Change: rewrite emqttd_pubsub to handle more concurrent subscribe requests. + +Change: ./bin/emqttd_ctl add 'stats', 'metrics' commands. + +Bugfix: issue #71, #72 + +------------------- +Version 0.5.3-alpha +------------------- + +*Release Date: 2015-03-19* + +Bugfix: issues#72 - emqttd_cm, emqtt_sm ets:match_delete/2 with wrong pattern + +------------------- +Version 0.5.2-alpha +------------------- + +*Release Date: 2015-03-18* + +Change: upgrade esockd to 2.1.0-alpha, do not tune socket buffer for mqtt connection. + +------------------- +Version 0.5.1-alpha +------------------- + +*Release Date: 2015-03-13* + +Change: upgrade esockd to v1.2.0-beta, rename 'acceptor_pool' to 'acceptors' + +------------------- +Version 0.5.0-alpha +------------------- + +*Release Date: 2015-03-12* + +RENAME 'emqtt' to 'emqttd'! + +Support [Broker Bridge](https://github.com/emqtt/emqttd/wiki/Bridge-Design) Now! + +Change: rename project from 'emqtt' to 'emqttd' + +Change: lager:debug to dump RECV/SENT packets + +Feature: emqttd_bridge, emqttd_bridge_sup to support broker bridge + +Feature: emqtt_event to publish client connected/disconnected message to $SYS topics + +Feature: ./bin/emqttd_ctl add more commands: listeners, broker, bridges, start_bridge, stop_bridge... + +Feature: issue#57 - support to configure max packet size + +Feature: issue#68 - if sys_interval = 0, emqttd_broker will not publish messages to $SYS/brokers/# + +Bugfix: issue#67 - subscribe '#' to receive all messages + +Bugfix: issue#64 - emqtt_app start/2: should wait_for_databases + +Test: emqttd_topic_tests add more '_match_test' + +------------------- +Version 0.4.0-alpha +------------------- + +*Release Date: 2015-03-10* + +Support [$SYS Topics of Broker](https://github.com/emqtt/emqttd/wiki/$SYS-Topics-of-Broker) Now! + +Feature: emqtt_broker to publish version, uptime, datetime to $SYS/brokers/# topics + +Feature: emqtt_broker to publish count of clients, sessions, suscribers to $SYS/brokers/# topics + +Feature: emqtt_metrics to publish bytes, packets, messages metrics to $SYS/brokers/# topics + +Feature: add include/emqtt_systop.hrl + +Change: emqtt_cm to count current clients + +Change: emqtt_sm to count current sessions + +Change: emqtt_pubsub to count current topics and suscribers + +Change: emqtt_pubsub to add create/1 API + +Change: emqtt_pubsub dispatch/2 to return number of subscribers + +Change: emqtt_pubsub to count 'dropped' messages + +Change: emqtt_opts to add merge/2 function + +Test: add emqtt_serialiser_tests.erl + +------------------ +Version 0.3.4-beta +------------------ + +*Release Date: 2015-03-08* + +Bugfix: emqtt_serialiser.erl cannot serialise UNSUBACK packets + +------------------ +Version 0.3.3-beta +------------------ + +*Release Date: 2015-03-07* + +Bugfix: emqtt_serialiser.erl cannot serialise PINGRESP issue#60 + +------------------ +Version 0.3.2-beta +------------------ + +*Release Date: 2015-03-05* + +Improve: merge emqttc serialiser, parser, packet + +Add: emqtt_opts to merge socket options + +------------------ +Version 0.3.1-beta +------------------ + +*Release Date: 2015-03-02* + +Feature: SSL Socket Support + +Feature: issue#44 HTTP API should add Qos parameter + +Bugfix: issue#52 emqtt_session crash + +Bugfix: issue#53 sslsocket keepalive error + +Upgrade: esockd to v0.2.0 + +Upgrade: mochiweb to v3.0.0 + +------------------ +Version 0.3.0-beta +------------------ + +*Release Date: 2015-01-19* + +Feature: HTTP POST API to support 'qos', 'retain' parameters + +Feature: $SYS system topics support + +Change: Rewrite emqtt_topic.erl, use '', '#', '+' to replace <<"">>, <<"#">>, <<"+">> + +Change: fix emqtt_pubsub.erl to match '#', '+' + +Tests: emqtt_topic_tests.erl add more test cases + +------------------- +Version 0.3.0-alpha +------------------- + +*Release Date: 2015-01-08* + +NOTICE: Full MQTT 3.1.1 support now! + +Feature: Passed org.eclipse.paho.mqtt.testing/interoperability tests + +Feature: Qos0, Qos1 and Qos2 publish and suscribe + +Feature: session(clean_sess=false) management and offline messages + +Feature: redeliver awaiting puback/pubrec messages(doc: Chapter 4.4) + +Feature: retain messages, add emqtt_server module + +Feature: MQTT 3.1.1 null client_id support + +Bugfix: keepalive timeout to send will message + +Improve: overlapping subscription support + +Improve: add emqtt_packet:dump to dump packets + +Test: passed org.eclipse.paho.mqtt.testing/interoperability + +Test: simple cluster test + +Closed Issues: #22, #24, #27, #28, #29, #30, #31, #32, #33, #34, #36, #37, #38, #39, #41, #42, #43 + +------------------ +Version 0.2.1-beta +------------------ + +*Release Date: 2015-01-08* + +pull request 26: Use binaries for topic paths and fix wildcard topics + +emqtt_pubsub.erl: fix wildcard topic match bug caused by binary topic in 0.2.0 + +Makefile: deps -> get-deps + +rebar.config: fix mochiweb git url + +tag emqtt release accoding to [Semantic Versioning](http://semver.org/) + +max clientId length is 1024 now. + +------------- +Version 0.2.0 +------------- + +*Release Date: 2014-12-07* + +rewrite the project, integrate with esockd, mochiweb + +support MQTT 3.1.1 + +support HTTP to publish message + +------------- +Version 0.1.5 +------------- + +*Release Date: 2013-01-05* + +Bugfix: remove QOS_1 match when handle PUBREL request + +Bugfix: reverse word in emqtt_topic:words/1 function + +------------- +Version 0.1.4 +------------- + +*Release Date: 2013-01-04* + +Bugfix: fix "mosquitto_sub -q 2 ......" bug + +Bugfix: fix keep alive bug + +------------- +Version 0.1.3 +------------- + +*Release Date: 2013-01-04* + +Feature: support QOS2 PUBREC, PUBREL,PUBCOMP messages + +Bugfix: fix emqtt_frame to encode/decoe PUBREC/PUBREL messages + +------------- +Version 0.1.2 +------------- + +*Release Date: 2012-12-27* + +Feature: release support like riak + +Bugfix: use ?INFO/?ERROR to print log in tcp_listener.erl + +------------- +Version 0.1.1 +------------- + +*Release Date: 2012-09-24* + +Feature: use rebar to generate release + +Feature: support retained messages + +Bugfix: send will msg when network error + +------------- +Version 0.1.0 +------------- + +*Release Date: 2012-09-21* + +The first public release. +