changes.rst 31 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273
  1. .. _changes:
  2. =======
  3. Changes
  4. =======
  5. .. _release_1.0:
  6. ------------------------------------
  7. Version 1.0 (The Seven Mile Journey)
  8. ------------------------------------
  9. *Release Date: 2016-04-13*
  10. *Release Name: The Seven Mile Journey*
  11. We finally released Version 1.0 (The Seven Mile Journey) with full documentation after two years' development and more than fifty iterations.
  12. The emqttd 1.0 implements a fully-featured, scalable, distributed and extensible open-source MQTT broker for IoT, M2M and Mobile applications:
  13. 1. Full MQTT V3.1/3.1.1 Protocol Specifications Support
  14. 2. Massively scalable - Scaling to 1 million connections on a single server
  15. 3. Distributed - Route MQTT Messages among clustered or bridged broker nodes
  16. 4. Extensible - LDAP, MySQL, PostgreSQL, Redis Authentication/ACL Plugins
  17. Bugfix and Enhancements
  18. -----------------------
  19. Possible race condition using emqttd_cm (#486)
  20. Improve the design of retained message expiration (#503)
  21. Do not expire the retained messages from $SYS/# topics (#500)
  22. Documentation
  23. --------------
  24. http://emqtt.io/docs
  25. http://docs.emqtt.com/
  26. Thanks
  27. ------
  28. Thank Ericsson for the Great Erlang/OTP Platform (http://erlang.org/)!
  29. Contributors on GitHub: @callbay @lsxredrain @hejin1026 @desoulter @turtleDeng @Hades32 @huangdan @phanimahesh @dvliman @Prots @joaohf
  30. Partners: EACG (http://eacg.de/)
  31. Favorite Band: The Seven Mile Journey (http://www.thesevenmilejourney.dk/)
  32. .. _release_0.17.1:
  33. -------------------
  34. Version 0.17.1-beta
  35. -------------------
  36. *Release Date: 2016-03-22*
  37. Enhancements
  38. ------------
  39. Time unit of session 'expired_after' changed to minute. (#479)
  40. Dashboard
  41. ---------
  42. Code Review and improve the design of Dashboard.
  43. .. _release_0.17.0:
  44. -------------------
  45. Version 0.17.0-beta
  46. -------------------
  47. *Release Date: 2016-03-15*
  48. Highlights
  49. ----------
  50. Installation and Configuration Guide released on http://docs.emqtt.com
  51. Improve and Consolidate the design of Hook, Server, PubSub and Router
  52. Upgrade the [Web Dashboard](https://github.com/emqtt/emqttd_dashboard) to support pagination
  53. Bridge emqttd broker to another emqttd broker & emqttd to mosquitto bridge (#438)
  54. Enhancements
  55. ------------
  56. emqttd_ctl: better error message (#450)
  57. ./bin/emqttd_ctl: add 'routes' command::
  58. routes list # List all routes
  59. routes show <Topic> # Show a route
  60. Add 'backend_subscription' table and support static subscriptions (emqttd_backend)
  61. Add 'retained_message' table and refactor emqttd_retainer module (emqttd_backend)
  62. A New Hook and Callback Design (emqttd_hook)
  63. Add PubSub, Hooks APIs to emqttd module (emqttd)
  64. Move start_listeners/0, stop_listeners/0 APIs to emqttd_app module (emqttd_app)
  65. Tests
  66. -----
  67. Add 100+ common test cases.
  68. Plugins
  69. -------
  70. Upgrade Dashboard, Redis, Stomp and Template Plugins
  71. .. _release_0.16.0:
  72. -------------------
  73. Version 0.16.0-beta
  74. -------------------
  75. *Release Date: 2016-02-16*
  76. Highlights
  77. ----------
  78. Licensed under the Apache License, Version 2.0 Now.
  79. Improve the design of cluster, support to join or leave the cluster (#449)::
  80. $ ./bin/emqttd_ctl cluster
  81. cluster join <Node> #Join the cluster
  82. cluster leave #Leave the cluster
  83. cluster remove <Node> #Remove the node from cluster
  84. cluster status #Cluster status
  85. Improve the design of Trie and Route, only the wildcard topics stored in Trie.
  86. Common Test to replace EUnit.
  87. Enhancements
  88. ------------
  89. mqtt_message record: add 'sender' field (#440)
  90. refactor the emqttd, emqttd_time, emqttd_opts, emqttd_node modules.
  91. Bugfix
  92. ------
  93. noproc error when call to gen_server2:call(false, {add_route,Topic,<0.685.0>}, infinity) (#446)
  94. Plugins
  95. -------
  96. Changed the license of all plugins.
  97. .. _release_0.15.0:
  98. -------------------
  99. Version 0.15.0-beta
  100. -------------------
  101. *Release Date: 2016-01-31*
  102. Highlights
  103. ----------
  104. Optimize for Push Application, 500K+ Subscribers to a Topic.
  105. Optimization for Route ETS insertion (#427)
  106. Priority Message Queue for Persistent Session (#432)
  107. Add Redis, MongoDB Plugins (#417)
  108. Enhancements
  109. ------------
  110. Username/Password Authentication: Support to configure default users (#428)
  111. Improve CLI Commands: pubsub, bridges, trace (#429)
  112. emqttd_mod_subscription: fix client_connected/3
  113. emqttd_auth_mod: add passwd_hash/2 function
  114. priority_queue: add plen/2, out/2 functions
  115. Bugfix
  116. ------
  117. Fix dequeue/1 of emqttd_bridge...
  118. Add emqttd:seed_now/0 function
  119. Plugins
  120. -------
  121. emqttd_plubin_mysql: Changed mysql driver to mysql-otp
  122. emqttd_plugin_pgsql: Integrate with ecpool
  123. emqttd_plugin_redis: First release
  124. emqttd_plugin_mongo: First release
  125. .. _release_0.14.1:
  126. -------------------
  127. Version 0.14.1-beta
  128. -------------------
  129. *Release Date: 2015-12-28*
  130. Bugfix: emqttd_ws_client.erl: Unexpected Info: {'EXIT',<0.27792.18>,{shutdown,destroy}} (#413)
  131. Improve: fix spec errors found by dialyzer
  132. .. _release_0.14.0:
  133. -------------------
  134. Version 0.14.0-beta
  135. -------------------
  136. *Release Date: 2015-12-18*
  137. Highlights
  138. ----------
  139. Scaling to 1.3 Million Concurrent MQTT Connections on a 12 Core, 32G CentOS server.
  140. New PubSub, Router Design (#402). Prepare for scaling to 10 millions on one cluster.
  141. Enhancements
  142. ------------
  143. Improve the gproc_pool usage with a general emqttd_pool_sup
  144. Improve the design of emqttd_pubsub, add a new emqttd_router module
  145. Improve the design of the whole supervisor tree
  146. Route aging mechanism to remove the topics that have no subscriptions
  147. Improve the dashboard, mysql, pgsql, stomp, sockjs plugins
  148. Add 'topics', 'subscriptions' admin commands
  149. Avoid using mnesia table index and mnesia:index_read API to lower CPU usage
  150. Subscribe timeout exception (#366)
  151. Long Delay on Multiple Topic Subscription (#365)
  152. Subscriptions persistence (#344)
  153. emqttd_ctl: 'subscriptions' command to force clients to subscribe some topics (#361)
  154. Bugfix
  155. ------
  156. emqttd_sm: spec of lookup_session/1 is not right BUG (#411)
  157. Observer application should be removed from reltool.config for 'wx' app is not available (#410)
  158. Benchmark
  159. ---------
  160. 1.3 million concurrent MQTT connections on a 12 Core, 32G CentOS Server, consume about 15G Memory and 200% CPU.
  161. .. _release_0.13.1:
  162. -------------------
  163. Version 0.13.1-beta
  164. -------------------
  165. *Release Date: 2015-11-28*
  166. Bugfix: Plugin pathes error under windows (#387)
  167. Improve: Too many error logs "[error] Session ..... Unexpected EXIT: client_pid=<0.14137.35>, exit_pid=<0.30829.22>, reason=nop..." (#383)
  168. Improve: Define QOS0/1/2, Pooler Error (PR#382)
  169. Improve: High CPU load when 400K unstable mobile connections (#377)
  170. BugFix: emqttd_plugin_pgsql - error using same query with latest update plugin (pgsql#5)
  171. .. _release_0.13.0:
  172. -------------------
  173. Version 0.13.0-beta
  174. -------------------
  175. *Release Date: 2015-11-08*
  176. Highlights
  177. ----------
  178. 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
  179. Upgrade eSockd and MochiWeb libraries to support Parameterized Connection Module
  180. Improve emqttd_client to support fully asynchronous socket networking
  181. Enhancements
  182. ------------
  183. Protocol Compliant - Session Present Flag (#163)
  184. Compilation fails if repo is cloned with a different name (#348)
  185. emqttd_client: replace gen_tcp:send with port_command (#358)
  186. TCP sndbuf, recbuf, buffer tuning (#359)
  187. emqttd_client.erl to handle 'inet_async', 'inet_reply' properly (#360)
  188. Refator the [client/session management design](https://github.com/emqtt/emqttd/blob/master/doc/design/ClientSession.md)
  189. Bugfix
  190. ------
  191. Cannot kick transient client out when clientId collision (#357)
  192. Fix the order of emqttd_app:start_server/1 (#367)
  193. emqttd_session:subscribe/2 will crash (#374)
  194. Benchmark
  195. ---------
  196. [benchmark for 0.13.0 release](https://github.com/emqtt/emqttd/wiki/benchmark-for-0.13.0-release)
  197. 3.1G memory and 50+ CPU/core:
  198. .. code-block:: bash
  199. Connections: 250K
  200. Subscribers: 250K
  201. Topics: 50K
  202. Qos1 Messages/Sec In: 4K
  203. Qos1 Messages/Sec Out: 20K
  204. Traffic In(bps): 12M+
  205. Traffic Out(bps): 56M+
  206. .. _release_0.12.3:
  207. -------------------
  208. Version 0.12.3-beta
  209. -------------------
  210. *Release Date: 2015-10-22*
  211. Bugfix: emqttd_sysmon crasher for 'undefined' process_info (#350)
  212. Bugfix: emqttd_client: catch parser exception (#353)
  213. .. _release_0.12.2:
  214. -------------------
  215. Version 0.12.2-beta
  216. -------------------
  217. *Release Date: 2015-10-16*
  218. Bugfix: Retained messages should not be expired if 'broker.retained.expired_after = 0' (#346)
  219. .. _release_0.12.1:
  220. -------------------
  221. Version 0.12.1-beta
  222. -------------------
  223. *Release Date: 2015-10-15*
  224. Highlight: Release for Bugfix and Code Refactor.
  225. Feature: Retained message expiration (#182)
  226. Improve: '$SYS/#' publish will not match '#' or '+/#' (#68)
  227. Improve: Add more metrics and ignore '$SYS/#' publish (#266)
  228. Improve: emqttd_sm should be optimized for clustered nodes may be crashed (#282)
  229. Improve: Refactor emqttd_sysmon and suppress 'monitor' messages (#328)
  230. Task: benchmark for 0.12.0 release (#225)
  231. Benchmark: About 900K concurrent connections established on a 20Core, 32G CentOS server.
  232. .. _release_0.12.0:
  233. -------------------
  234. Version 0.12.0-beta
  235. -------------------
  236. *Release Date: 2015-10-08*
  237. Highlights
  238. ----------
  239. Enhance the **emqttd_ctl** module to allow plugins to register new commands (#256)
  240. Add [emqttd_recon plugin](https://github.com/emqtt/emqttd_recon) to debug/optimize the broker (#235)
  241. Add **'./bin/emqttd_ctl broker pubsub'** command to check the status of core pubsub processes
  242. Add **'./bin/emqttd_top'** command(like etop) to show the top 'msg_q', 'reductions', 'memory' or 'runtime' processes
  243. 'rel/files/emqttd.config.production' for production deployment(default)
  244. 'rel/files/emqttd.config.development' for development deployment
  245. Enhancements
  246. ------------
  247. Qos1/2 messages will not be dropped under unstable mobile network (#264)
  248. **emqttd_session:subscribe/2, emqttd_session:unsubscribe/2** APIs should be asynchronous (#292)
  249. **etc/emqttd.config**: 'idle_timeout' option to close the idle client(socket connected but no 'CONNECT' frame received)
  250. **etc/emqttd.config**: 'unack_retry_interval' option for redelivering Qos1/2 messages
  251. How to monitor large 'message_queue_len' (#283)
  252. Bugfix
  253. ------
  254. Behaviour emqttd_auth_mod is missing init callback (#318)
  255. Benchmark
  256. ---------
  257. Write a new [benchmark tool](https://github.com/emqtt/emqtt_benchmark) to benchmark this release
  258. Hw requirements - 5K users, 25-50 msgs/sec, QoS=1 (#209)
  259. Supported Number of Connections Greatly Reduced When Clients are Subscribing (#324)
  260. .. _release_0.11.0:
  261. -------------------
  262. Version 0.11.0-beta
  263. -------------------
  264. *Release Date: 2015-09-25*
  265. Highlight: Rebar to manage plugin dependencies.
  266. Highlight: [Stomp](https://github.com/emqtt/emqttd_stomp) and [SockJS](https://github.com/emqtt/emqttd_sockjs) Plugins!
  267. Improve: add rel/files/emqttd.config.development|production.
  268. Improve: rel/reltool.config.script to release deps of plugin.
  269. Improve: persist mnesia schema on slave nodes.
  270. Improve: use timer:seconds/1 api.
  271. Improve: The binary release will be compiled with R18.1 now.
  272. Bugfix: issue#306 - emqttd_cm should unregister the duplicated client
  273. Bugfix: issue#310 - usage of emqttd_ctl error: 'session list' should be 'sessions list'
  274. Bugfix: issue#311 - './bin/emqttd_ctl sessions list' error
  275. Bugfix: issue#312 - unsubcribe will lead to crash if emqttd_plugin_template plugin loaded
  276. .. _release_0.10.4:
  277. -------------------
  278. Version 0.10.4-beta
  279. -------------------
  280. *Release Date: 2015-09-18*
  281. Optimize session management and upgrade eSockd library to 2.7.1
  282. [Benchmark for 0.10.4 release](https://github.com/emqtt/emqttd/wiki/benchmark-for-0.10.4-release)
  283. Improve: issue#294 - [error] failed to start connection on 0.0.0.0:1883 - enotconn
  284. Improve: issue#297 - How do I allow user with some pattern to access topic with some pattern?
  285. Bugfix: issue#291 - "./bin/emqttd attach ..." cannot work
  286. Bugfix: issue#284 - Should not use erlang:list_to_atom/1 in emqttd_vm.erl
  287. .. _release_0.10.3:
  288. -------------------
  289. Version 0.10.3-beta
  290. -------------------
  291. *Release Date: 2015-08-30*
  292. Bugfix: issue#271 - add emqttd_ws_client:subscribe/2 function
  293. Bugfix: issue#269 - bin/emqttd Syntax error on ubuntu
  294. Improve: issue#265 - client under unstable mobile network generate a lot of logs
  295. .. _release_0.10.2:
  296. -------------------
  297. Version 0.10.2-beta
  298. -------------------
  299. *Release Date: 2015-08-26*
  300. Improve: issue#257 - After the node name changed, the broker cannot restart for mnesia schema error.
  301. .. _release_0.10.1:
  302. -------------------
  303. Version 0.10.1-beta
  304. -------------------
  305. *Release Date: 2015-08-25*
  306. Bugfix: issue#259 - when clustered the emqttd_dashboard port is close, and the 'emqttd' application cannot stop normally.
  307. Feature: issue#262 - Add 'http://host:8083/mqtt/status' Page for health check
  308. .. _release_0.10.0:
  309. -------------------
  310. Version 0.10.0-beta
  311. -------------------
  312. *Release Date: 2015-08-20*
  313. [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!
  314. Highlight: Web Dashboard to monitor Statistics, Metrics, Clients, Sessions and Topics of the broker.
  315. Highlight: JSON/HTTP API to query all clients connected to broker.
  316. 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.
  317. Highlight: Authentication/ACL with MySQL, PostreSQl databases (#194, #172)
  318. Feature: Session Statistics including inflight_queue, message_queue, message_dropped, awaiting_rel, awaiting_ack, awaiting_comp (#213)
  319. Feature: Cookie based authentication for MQTT over websocket connections (#231)
  320. Feature: Get all clients connected to the broker (#228, #230, #148, #129)
  321. Feature: "./bin/emqttd_ctl clients show ClientId" to query client status (#226)
  322. Feature: "./bin/emqttd_ctl clients kick ClientId" to kick out a client
  323. Feature: "./bin/emqttd_ctl sessions list" to show all sessions
  324. Feature: "./bin/emqttd_ctl sessions show ClientId" to show a session
  325. Feature: Erlang VM metrics monitor with Web Dashboard (#59)
  326. Improve: Too many "inflight queue is full!" log when session is overloaded (#247)
  327. Improve: There are two many "MQueue(~s) drop ~s" logs if the message queue of session is small (#244)
  328. Improve: gen_server2(from RabbitMQ) to improve emqttd_session, emqttd_pubsub
  329. Improve: Makefile to build plugins
  330. Bugfix: emqttd_broker:unhook/2 cannot work (#238)
  331. Bugfix: emqttd plugin cannot include_lib("emqttd/include/emqttd.hrl") (#233)
  332. Bugfix: Too many 'Session ~s cannot find PUBACK' logs (#212)
  333. Bugfix: emqttd_pooler cannot work
  334. .. _release_0.9.3:
  335. -------------------
  336. Version 0.9.3-alpha
  337. -------------------
  338. *Release Date: 2015-07-25*
  339. Wiki: [Bridge](https://github.com/emqtt/emqttd/wiki/Bridge)
  340. Improve: emqttd_protocol.hrl to define 'QOS_I'
  341. Improve: emqttd_pubsub to add subscribe/2 API
  342. Improve: ./bin/emqttd_ctl to support new bridges command
  343. Bugfix: issue #206 - Cannot bridge two nodes
  344. .. _release_0.9.2:
  345. -------------------
  346. Version 0.9.2-alpha
  347. -------------------
  348. *Release Date: 2015-07-18*
  349. Improve: issue #196 - Add New Hook 'client.subscribe.after'
  350. .. _release_0.9.1:
  351. -------------------
  352. Version 0.9.1-alpha
  353. -------------------
  354. *Release Date: 2015-07-10*
  355. Bugfix: issue #189 - MQTT over WebSocket(SSL) cannot work?
  356. Bugfix: issue #193 - 'client.ack' hook should be renamed to 'message.acked', and called by emqttd_broker:foreach_hooks
  357. .. _release_0.9.0:
  358. -------------------
  359. Version 0.9.0-alpha
  360. -------------------
  361. *Release Date: 2015-07-09*
  362. [Session, Queue, Inflight Window, Hooks, Global MessageId and More Protocol Compliant](https://github.com/emqtt/emqttd/releases/tag/0.9.0-alpha) Now!
  363. Feature: Session/Queue/Inflight Window Design (#145).
  364. Feature: Support to resume a persistent session on other clustered node.
  365. Feature: Support alarm management.
  366. Feature: emqttd_guid to generate global unique message id.
  367. Feature: Hooks for message pub/ack.
  368. Feature: Protocol compliant - message ordering, timeout and retry.
  369. Improve: Every client will start_link a session process, whether or not the client is persistent.
  370. Improve: etc/emqttd.config to support more session, queue configuration.
  371. Improve: issue #179 - Max offline message queue {max_queue, 100} meaning.
  372. Improve: issue #180 - Should change project structure for other projects maybe depend on 'emqttd'. Merge emqtt, emqttd apps.
  373. Improve: issue #185 - PacketId and MessageId: the broker should generate global unique message id.
  374. Improve: issue #187 - etc/emqttd.config to support https listener
  375. Improve: issue #186 - emqttd_cm to store client details
  376. Improve: issue #174 - add 'from' field to mqtt_message record.
  377. Improve: issue #170 - $SYS Topics should support alarms.
  378. Improve: issue #169 - Add More [Hooks](https://github.com/emqtt/emqttd/wiki/Hooks-Design)
  379. Improve: issue #167 - Inflight window to assure message ordering.
  380. Improve: issue #166 - Message delivery timeout and retry.
  381. Improve: issue #143 - Qos1, Qos2 PubSub message timeout.
  382. Improve: issue #122 - Labeling message with unique id. emqttd_guid module to generate global unique msgid.
  383. Improve: emqttd_bridge to support pending message queue, and fix the wrong Qos design.
  384. Improve: mqtt_message record to add 'msgid', 'from' and 'sys' fields.
  385. Change: Add emqttd_mqueue, emqttd_guid, emqttd_alarm modules.
  386. Bugfix: issue #184 - emqttd_stats:setstats is not right.
  387. Bugfix: Closed issues #181, #119.
  388. Tests: fix the parser, acl test cases.
  389. .. _release_0.8.6:
  390. ------------------
  391. Version 0.8.6-beta
  392. ------------------
  393. *Release Date: 2015-06-17*
  394. Bugfix: issue #175 - publish Will message when websocket is closed without 'DISCONNECT' packet
  395. .. _release_0.8.5:
  396. ------------------
  397. Version 0.8.5-beta
  398. ------------------
  399. *Release Date: 2015-06-10*
  400. Bugfix: issue #53 - client will receive duplicate messages when overlapping subscription
  401. .. _release_0.8.4:
  402. ------------------
  403. Version 0.8.4-beta
  404. ------------------
  405. *Release Date: 2015-06-08*
  406. Bugfix: issue #165 - duplicated message when publish 'retained' message to persistent client
  407. .. _release_0.8.3:
  408. ------------------
  409. Version 0.8.3-beta
  410. ------------------
  411. *Release Date: 2015-06-05*
  412. Bugfix: issue #158 - should queue:in new message after old one dropped
  413. Bugfix: issue #155 - emqtt_parser.erl: parse_topics/3 should reverse topics
  414. Bugfix: issue #149 - Forget to merge plugins/emqttd_auth_mysql from 'dev' branch to 'master' in 0.8.x release
  415. .. _release_0.8.2:
  416. -------------------
  417. Version 0.8.2-alpha
  418. -------------------
  419. *Release Date: 2015-06-01*
  420. Bugfix: issue #147 - WebSocket client cannot subscribe queue '$Q/queue/${clientId}'
  421. Bugfix: issue #146 - emqttd_auth_ldap: fill(Username, UserDn) is not right
  422. .. _release_0.8.1:
  423. -------------------
  424. Version 0.8.1-alpha
  425. -------------------
  426. *Release Date: 2015-05-28*
  427. Client [Presence](https://github.com/emqtt/emqttd/wiki/Presence) Support and [$SYS Topics](https://github.com/emqtt/emqttd/wiki/$SYS-Topics) Redesigned!
  428. Bugfix: issue #138 - when client disconnected normally, broker will not publish disconnected $SYS message
  429. Bugfix: fix websocket url in emqttd/priv/www/websocket.html
  430. Improve: etc/emqttd.config to allow websocket connections from any hosts
  431. Improve: rel/reltool.config to exclude unnecessary apps.
  432. .. _release_0.8.0:
  433. -------------------
  434. Version 0.8.0-alpha
  435. -------------------
  436. *Release Date: 2015-05-25*
  437. [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!
  438. Plugin: emqttd_auth_mysql - MySQL authentication plugin (issues #116, #120)
  439. Plugin: emqttd_auth_ldap - LDAP authentication plugin
  440. Feature: emqttd_broker to support Hooks API
  441. Feature: issue #111 - Support 'Forced Subscriptions' by emqttd_mod_autosub module
  442. Feature: issue #126 - Support 'Rewrite rules' by emqttd_mod_rewrite module
  443. Improve: Support hooks, modules to extend the broker
  444. Improve: issue #76 - dialyzer check
  445. Improve: 'Get Started', 'User Guide', 'Developer Guide' Wiki
  446. Improve: emqtt_topic to add join/1, feed_var/3, is_queue/1
  447. Improve: emqttd_pooler to execute common tasks
  448. Improve: add emqttd_sm_sup module, and use 'hash' gproc_pool to manage sessions
  449. Tests: add more test cases for 'emqttd' app
  450. .. _release_0.7.1:
  451. -------------------
  452. Version 0.7.1-alpha
  453. -------------------
  454. *Release Date: 2015-05-04*
  455. Add doc/design/* and merge doc/* to github Wiki
  456. Bugfix: issue #121 - emqttd cluster issuse
  457. Bugfix: issue #123 - emqttd:unload_all_plugins/0 cannot unload any plugin
  458. Bugfix: fix errors found by dialyzer
  459. .. _release_0.7.0:
  460. -------------------
  461. Version 0.7.0-alpha
  462. -------------------
  463. *Release Date: 2015-05-02*
  464. [MQTT over WebSocket(SSL)](https://github.com/emqtt/emqttd/wiki/MQTT-Over-WebSocket) Now!
  465. [Plugin Achitecture](https://github.com/emqtt/emqttd/wiki/Plugin%20Design) based on OTP application
  466. [Trace MQTT Packets or Messages](https://github.com/emqtt/emqttd/wiki/Trace%20Design) to log files
  467. Feature: issue #40, #115 - WebSocket/SSL Support
  468. Feature: issue #49, #105 - Plugin Architecture Support
  469. Feature: issue #93 - Trace API Design
  470. Improve: issue #109 - emqttd_broker should add subscribe, notify API
  471. Improve: update README.md to add 'Goals', 'Contributors' chapters
  472. Change: rename etc/app.config to etc/emqttd.config
  473. Change: etc/emqttd.config changed
  474. Bugfix: critical issue #54 - error when resume session!
  475. Bugfix: issue #118 - error report when UNSUBSCRIBE with no topics
  476. Bugfix: issue #117 - sys_interval = 0 config cannot work
  477. Bugfix: issue #112 - Makefile to support build plugins
  478. Bugfix: issue #96 - "make clean" cannot work
  479. .. _release_0.6.2:
  480. -------------------
  481. Version 0.6.2-alpha
  482. -------------------
  483. *Release Date: 2015-04-24*
  484. Bugfix: critical issue #54, #104, #106 - error when resume session
  485. Improve: add emqttd_cm_sup module, and use 'hash' gproc_pool to register/unregister client ids
  486. Improve: kick old client out when session is duplicated.
  487. Improve: move mnesia dir config from etc/app.config to etc/vm.args
  488. .. _release_0.6.1:
  489. -------------------
  490. Version 0.6.1-alpha
  491. -------------------
  492. *Release Date: 2015-04-20*
  493. Integrate with [gproc library](https://github.com/uwiger/gproc) to support pool
  494. Feature: issues#91 - should use worker_pool to handle some async work?
  495. Feature: issues#95 - Topic filters in ACL rule should support 'eq' tag
  496. Improve: issues#84 - emqttd_pubsub is redesigned again to protect mnesia transaction
  497. Improve: issues#74 - ACL Support and update [ACL Design Wiki](https://github.com/emqtt/emqttd/wiki/ACL-Design)
  498. .. _release_0.6.0:
  499. -------------------
  500. Version 0.6.0-alpha
  501. -------------------
  502. *Release Date: 2015-04-17*
  503. ACL Support Now: [ACL-Design Wiki](https://github.com/emqtt/emqttd/wiki/ACL-Design)
  504. Authentication with username, clientid Now: [Authentication Wiki](https://github.com/emqtt/emqttd/wiki/Authentication)
  505. Seperate common MQTT library to 'emqtt' application
  506. Redesign message pubsub, route and retain modules
  507. Redesign mnesia database cluster
  508. Feature: issues#47 - authentication, authorization support
  509. Feature: issues#92 - merge emqttd_acl and emqttd_auth to emqttd_access_control
  510. Feature: emqttd_acl_mod, emqttd_auth_mod behaviour to extend ACL, authentication
  511. Feature: issues#85 - lager:info to log subscribe, unsubscribe actions
  512. Feature: issues#77 - authentication with clientid, ipaddress
  513. Improve: issues#90 - fix lager_file_backend log format, and rotate 10 log files
  514. Improve: issues#88 - use '-mneisa_create', '-mnesia_replicate' attributes to init mneisa
  515. Improve: issues#87 - record mqtt_user and mqtt_client is duplicated
  516. Improve: issues#81 - redesign nodes cluster to support disc_copies mnesia tables
  517. Improve: issues#80 - redesign emqttd_cm to handle more concurrent connections
  518. Improve: issues#70 - how to handle connection flood? Now could support 2K+ CONNECT/sec
  519. Change: redesign mnesia tables: message, topic, subscriber, trie, trie_node
  520. Bugfix: issues#83 - emqttd_broker stats cannot work
  521. Bugfix: issues#75 - careless about function name when emqttd_pubsub handle getstats message
  522. .. _release_0.5.5:
  523. ------------------
  524. Version 0.5.5-beta
  525. ------------------
  526. *Release Date: 2015-04-09*
  527. Bugfix: issue #75 - careless about function name when emqttd_pubsub handle getstats message.
  528. Bugfix: issue #79 - cannot find topic_subscriber table after cluster with other nodes.
  529. .. _release_0.5.4:
  530. -------------------
  531. Version 0.5.4-alpha
  532. -------------------
  533. *Release Date: 2015-03-22*
  534. Benchmark this release on a ubuntu/14.04 server with 8 cores, 32G memory from QingCloud.com::
  535. 200K Connections,
  536. 30K Messages/Sec,
  537. 20Mbps In/Out Traffic,
  538. 200K Topics,
  539. 200K Subscribers,
  540. Consumed 7G memory, 40% CPU/core
  541. Benchmark code: https://github.com/emqtt/emqttd_benchmark
  542. Change: rewrite emqttd_pubsub to handle more concurrent subscribe requests.
  543. Change: ./bin/emqttd_ctl add 'stats', 'metrics' commands.
  544. Bugfix: issue #71, #72
  545. .. _release_0.5.3:
  546. -------------------
  547. Version 0.5.3-alpha
  548. -------------------
  549. *Release Date: 2015-03-19*
  550. Bugfix: issues#72 - emqttd_cm, emqtt_sm ets:match_delete/2 with wrong pattern
  551. .. _release_0.5.2:
  552. -------------------
  553. Version 0.5.2-alpha
  554. -------------------
  555. *Release Date: 2015-03-18*
  556. Change: upgrade esockd to 2.1.0-alpha, do not tune socket buffer for mqtt connection.
  557. .. _release_0.5.1:
  558. -------------------
  559. Version 0.5.1-alpha
  560. -------------------
  561. *Release Date: 2015-03-13*
  562. Change: upgrade esockd to v1.2.0-beta, rename 'acceptor_pool' to 'acceptors'
  563. .. _release_0.5.0:
  564. -------------------
  565. Version 0.5.0-alpha
  566. -------------------
  567. *Release Date: 2015-03-12*
  568. RENAME 'emqtt' to 'emqttd'!
  569. Support [Broker Bridge](https://github.com/emqtt/emqttd/wiki/Bridge-Design) Now!
  570. Change: rename project from 'emqtt' to 'emqttd'
  571. Change: lager:debug to dump RECV/SENT packets
  572. Feature: emqttd_bridge, emqttd_bridge_sup to support broker bridge
  573. Feature: emqtt_event to publish client connected/disconnected message to $SYS topics
  574. Feature: ./bin/emqttd_ctl add more commands: listeners, broker, bridges, start_bridge, stop_bridge...
  575. Feature: issue#57 - support to configure max packet size
  576. Feature: issue#68 - if sys_interval = 0, emqttd_broker will not publish messages to $SYS/brokers/#
  577. Bugfix: issue#67 - subscribe '#' to receive all messages
  578. Bugfix: issue#64 - emqtt_app start/2: should wait_for_databases
  579. Test: emqttd_topic_tests add more '_match_test'
  580. .. _release_0.4.0:
  581. -------------------
  582. Version 0.4.0-alpha
  583. -------------------
  584. *Release Date: 2015-03-10*
  585. Support [$SYS Topics of Broker](https://github.com/emqtt/emqttd/wiki/$SYS-Topics-of-Broker) Now!
  586. Feature: emqtt_broker to publish version, uptime, datetime to $SYS/brokers/# topics
  587. Feature: emqtt_broker to publish count of clients, sessions, suscribers to $SYS/brokers/# topics
  588. Feature: emqtt_metrics to publish bytes, packets, messages metrics to $SYS/brokers/# topics
  589. Feature: add include/emqtt_systop.hrl
  590. Change: emqtt_cm to count current clients
  591. Change: emqtt_sm to count current sessions
  592. Change: emqtt_pubsub to count current topics and suscribers
  593. Change: emqtt_pubsub to add create/1 API
  594. Change: emqtt_pubsub dispatch/2 to return number of subscribers
  595. Change: emqtt_pubsub to count 'dropped' messages
  596. Change: emqtt_opts to add merge/2 function
  597. Test: add emqtt_serialiser_tests.erl
  598. .. _release_0.3.4:
  599. ------------------
  600. Version 0.3.4-beta
  601. ------------------
  602. *Release Date: 2015-03-08*
  603. Bugfix: emqtt_serialiser.erl cannot serialise UNSUBACK packets
  604. .. _release_0.3.3:
  605. ------------------
  606. Version 0.3.3-beta
  607. ------------------
  608. *Release Date: 2015-03-07*
  609. Bugfix: emqtt_serialiser.erl cannot serialise PINGRESP issue#60
  610. .. _release_0.3.2:
  611. ------------------
  612. Version 0.3.2-beta
  613. ------------------
  614. *Release Date: 2015-03-05*
  615. Improve: merge emqttc serialiser, parser, packet
  616. Add: emqtt_opts to merge socket options
  617. .. _release_0.3.1:
  618. ------------------
  619. Version 0.3.1-beta
  620. ------------------
  621. *Release Date: 2015-03-02*
  622. Feature: SSL Socket Support
  623. Feature: issue#44 HTTP API should add Qos parameter
  624. Bugfix: issue#52 emqtt_session crash
  625. Bugfix: issue#53 sslsocket keepalive error
  626. Upgrade: esockd to v0.2.0
  627. Upgrade: mochiweb to v3.0.0
  628. .. _release_0.3.0:
  629. ------------------
  630. Version 0.3.0-beta
  631. ------------------
  632. *Release Date: 2015-01-19*
  633. Feature: HTTP POST API to support 'qos', 'retain' parameters
  634. Feature: $SYS system topics support
  635. Change: Rewrite emqtt_topic.erl, use '', '#', '+' to replace <<"">>, <<"#">>, <<"+">>
  636. Change: fix emqtt_pubsub.erl to match '#', '+'
  637. Tests: emqtt_topic_tests.erl add more test cases
  638. -------------------
  639. Version 0.3.0-alpha
  640. -------------------
  641. *Release Date: 2015-01-08*
  642. NOTICE: Full MQTT 3.1.1 support now!
  643. Feature: Passed org.eclipse.paho.mqtt.testing/interoperability tests
  644. Feature: Qos0, Qos1 and Qos2 publish and suscribe
  645. Feature: session(clean_sess=false) management and offline messages
  646. Feature: redeliver awaiting puback/pubrec messages(doc: Chapter 4.4)
  647. Feature: retain messages, add emqtt_server module
  648. Feature: MQTT 3.1.1 null client_id support
  649. Bugfix: keepalive timeout to send will message
  650. Improve: overlapping subscription support
  651. Improve: add emqtt_packet:dump to dump packets
  652. Test: passed org.eclipse.paho.mqtt.testing/interoperability
  653. Test: simple cluster test
  654. Closed Issues: #22, #24, #27, #28, #29, #30, #31, #32, #33, #34, #36, #37, #38, #39, #41, #42, #43
  655. .. _release_0.2.1:
  656. ------------------
  657. Version 0.2.1-beta
  658. ------------------
  659. *Release Date: 2015-01-08*
  660. pull request 26: Use binaries for topic paths and fix wildcard topics
  661. emqtt_pubsub.erl: fix wildcard topic match bug caused by binary topic in 0.2.0
  662. Makefile: deps -> get-deps
  663. rebar.config: fix mochiweb git url
  664. tag emqtt release accoding to [Semantic Versioning](http://semver.org/)
  665. max clientId length is 1024 now.
  666. .. _release_0.2.0:
  667. -------------
  668. Version 0.2.0
  669. -------------
  670. *Release Date: 2014-12-07*
  671. rewrite the project, integrate with esockd, mochiweb
  672. support MQTT 3.1.1
  673. support HTTP to publish message
  674. .. _release_0.1.5:
  675. -------------
  676. Version 0.1.5
  677. -------------
  678. *Release Date: 2013-01-05*
  679. Bugfix: remove QOS_1 match when handle PUBREL request
  680. Bugfix: reverse word in emqtt_topic:words/1 function
  681. .. _release_0.1.4:
  682. -------------
  683. Version 0.1.4
  684. -------------
  685. *Release Date: 2013-01-04*
  686. Bugfix: fix "mosquitto_sub -q 2 ......" bug
  687. Bugfix: fix keep alive bug
  688. .. _release_0.1.3:
  689. -------------
  690. Version 0.1.3
  691. -------------
  692. *Release Date: 2013-01-04*
  693. Feature: Support QOS2 PUBREC, PUBREL, PUBCOMP messages
  694. Bugfix: fix emqtt_frame to encode/decoe PUBREC/PUBREL messages
  695. .. _release_0.1.2:
  696. -------------
  697. Version 0.1.2
  698. -------------
  699. *Release Date: 2012-12-27*
  700. Feature: release support like riak
  701. Bugfix: use ?INFO/?ERROR to print log in tcp_listener.erl
  702. .. _release_0.1.1:
  703. -------------
  704. Version 0.1.1
  705. -------------
  706. *Release Date: 2012-09-24*
  707. Feature: use rebar to generate release
  708. Feature: support retained messages
  709. Bugfix: send will msg when network error
  710. .. _release_0.1.0:
  711. -------------
  712. Version 0.1.0
  713. -------------
  714. *Release Date: 2012-09-21*
  715. The first public release.