changes.rst 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739
  1. .. _changes:
  2. =======
  3. Changes
  4. =======
  5. .. _release_2.0_rc.3:
  6. ----------------
  7. Version 2.0-rc.3
  8. ----------------
  9. *Release Date: 2016-11-01*
  10. 1. Change the three modules(Presence, Retainer, Subscription) to standalone plugins:
  11. +----------------------------+--------------------------------------------+
  12. | `emq_mod_retainer`_ | Retained Message Storage |
  13. +----------------------------+--------------------------------------------+
  14. | `emq_mod_presence`_ | Publish presence message to $SYS topics |
  15. | | when client connected or disconnected |
  16. +----------------------------+--------------------------------------------+
  17. | `emq_mod_subscription`_ | Subscribe topics automatically when client |
  18. | | connected |
  19. +----------------------------+--------------------------------------------+
  20. 2. Update the SSL certificates under the etc/certs/ folder.
  21. 3. Bugfix: Fixed a typo (#716)
  22. 4. Bugfix: emqttd_http can not use emq_auth_http? #739
  23. 5. Bugfix: emq_auth_redis cannot use hostname as server address (#741)
  24. 6. Upgrade Redis, MySQL, Postgre and MongoDB plugins to support hostname.
  25. .. _release_2.0_rc.2:
  26. ----------------
  27. Version 2.0-rc.2
  28. ----------------
  29. *Release Date: 2016-10-19*
  30. 1. A more user-friendly configuration for the EMQ broker. Integrate with `cuttlefish` library and adopt `K = V` syntax::
  31. node.name = emqttd@127.0.0.1
  32. ...
  33. mqtt.listener.tcp = 1883
  34. ...
  35. 2. Support OS Environments::
  36. EMQ_NODE_NAME
  37. EMQ_NODE_COOKIE
  38. EMQ_MAX_PORTS
  39. EMQ_TCP_PORT
  40. EMQ_SSL_PORT
  41. EMQ_HTTP_PORT
  42. EMQ_HTTPS_PORT
  43. 3. Refactor all the modules and plugins, and adopt new configuration syntax.
  44. TODO: issues closed.
  45. .. _release_2.0_rc.1:
  46. ----------------
  47. Version 2.0-rc.1
  48. ----------------
  49. *Release Date: 2016-10-03*
  50. 1. `mqtt/superuser` POST called two times in `emqtt_auth_http` (#696)
  51. 2. Close MQTT TCP connection if authentication failed (#707)
  52. 3. Improve the plugin management. Developer don't need to add plugin's config to rel/sys.config
  53. 4. Add `BUILD_DEPS` in the plugin's Makefile::
  54. BUILD_DEPS = emqttd
  55. dep_emqttd = git https://github.com/emqtt/emqttd emq20
  56. 5. Improve the design of Redis ACL.
  57. .. _release_2.0_beta.3:
  58. ------------------
  59. Version 2.0-beta.3
  60. ------------------
  61. *Release Date: 2016-09-18*
  62. New Features
  63. ------------
  64. Shared Suscriptions (#639, #416)::
  65. mosquitto_sub -t '$queue/topic'
  66. mosquitto_sub -t '$share/group/topic'
  67. Local Subscriptions that will not create global routes::
  68. mosquitto_sub -t '$local/topic'
  69. Bugfix
  70. ------
  71. Error on Loading `emqttd_auth_http` (#691)
  72. Remove 'emqttd' application from dependencies (emqttd_coap PR#3)
  73. .. _release_2.0_beta.2:
  74. ------------------
  75. Version 2.0-beta.2
  76. ------------------
  77. *Release Date: 2016-09-10*
  78. CoAP Support
  79. ------------
  80. Release an experimental CoAP Gateway: https://github.com/emqtt/emqttd_coap
  81. API Breaking Changes
  82. --------------------
  83. '$u', '$c' variables in emqttd.conf and modules/acl.conf changed to '%u', '%c'
  84. Improve the design of mqtt retained message, replace emqttd_retainer with emqttd_mod_retainer.
  85. Add 'session.subscribed', 'session.unsubscribed' hooks, remove 'client.subscribe.after' hook
  86. Tab 'retained_message' -> 'mqtt_retained'
  87. Bugfix
  88. ------
  89. [2.0 beta1] FORMAT ERROR: "~s PUBLISH to ~s: ~p" (PR #671)
  90. Fixing issues in cluster mode. (PR #681)
  91. Fixing issues with unsubscribe hook (PR #673)
  92. .. _release_2.0_beta.1:
  93. ------------------
  94. Version 2.0-beta.1
  95. ------------------
  96. *Release Date: 2016-08-30*
  97. *Release Name: West of West Lake*
  98. EMQ - Shortened Project Name
  99. ----------------------------
  100. Adopt a shortened project name: EMQ(Erlang/Enterprise/Elastic MQTT Broker),E means Erlang/OTP, Enterprise and Elastic.
  101. Improve the Release Management
  102. ------------------------------
  103. In order to iterate the project fast, we will adopt a new release management strategy since 2.0. There will be two or three 'Preview Release' named beta1, beta2 or beta3, and then one or two 'Release Candidate' named rc1, rc2 before a Major version is production ready.
  104. Seperate Rel from Application
  105. -----------------------------
  106. We split the emqttd 1.x project into two projects since 2.0-beta1 release to resolve the plugins' dependency issue.
  107. A new project named `emqttd-relx`_ is created and responsible for buiding the emqttd application and the plugins::
  108. git clone https://github.com/emqtt/emqttd-relx.git
  109. cd emqttd-relx && make
  110. cd _rel/emqttd && ./bin/emqttd console
  111. erlang.mk and relx
  112. ------------------
  113. The rebar which is used in 1.x release is replaced by `erlang.mk`_ and `relx`_ tools since 2.0-beta1 release.
  114. You can check the 'Makefile' and 'relx.config' in the release project of the borker: `emqttd-relx`_ .
  115. Improve Git Branch Management
  116. -----------------------------
  117. +------------+-------------------------------------------+
  118. | stable | 1.x Stable Branch |
  119. +------------+-------------------------------------------+
  120. | master | 2.x Master Branch |
  121. +------------+-------------------------------------------+
  122. | emq10 | 1.x Developement Branch |
  123. +------------+-------------------------------------------+
  124. | emq20 | 2.x Development Branch |
  125. +------------+-------------------------------------------+
  126. | emq30 | 3.x Development Branch |
  127. +------------+-------------------------------------------+
  128. | issue#{id} | BugFix Branch |
  129. +------------+-------------------------------------------+
  130. New Config Syntax
  131. -----------------
  132. Since 2.0-beta1 release the configuration file of the broker and plugins adopt a new syntax like rebar.config and relx.config:
  133. etc/emqttd.conf for example::
  134. %% Max ClientId Length Allowed.
  135. {mqtt_max_clientid_len, 512}.
  136. %% Max Packet Size Allowed, 64K by default.
  137. {mqtt_max_packet_size, 65536}.
  138. %% Client Idle Timeout.
  139. {mqtt_client_idle_timeout, 30}. % Second
  140. MQTT-SN Protocol Plugin
  141. -----------------------
  142. The MQTT-SN Protocol Plugin `emqttd_sn`_ has been ready in 2.0-beta1 release. The default UDP port of MQTT-SN is 1884.
  143. Load the plugin::
  144. ./bin/emqttd_ctl plugins load emqttd_sn
  145. Improve the PubSub Design
  146. -------------------------
  147. .. image:: _static/images/publish.png
  148. Improve the Plugin Management
  149. -----------------------------
  150. The plugin of EMQ 2.0 broker is a normal erlang application which depends on and extends 'emqttd'. You can create a standalone plugin application project, and add it to `emqttd-relx`_ Makefile as a DEP.
  151. All the plugins' config files will be copied to emqttd/etc/plugins/ folder when making emqttd brinary packages in `emqttd-relx`_ project::
  152. ▾ emqttd/
  153. ▾ etc/
  154. ▸ modules/
  155. ▾ plugins/
  156. emqtt_coap.conf
  157. emqttd.conf
  158. emqttd_auth_http.conf
  159. emqttd_auth_mongo.conf
  160. emqttd_auth_mysql.conf
  161. emqttd_auth_pgsql.conf
  162. emqttd_auth_redis.conf
  163. emqttd_coap.conf
  164. emqttd_dashboard.conf
  165. emqttd_plugin_template.conf
  166. emqttd_recon.conf
  167. emqttd_reloader.conf
  168. emqttd_sn.conf
  169. emqttd_stomp.conf
  170. EMQ 2.0 Documentation
  171. ---------------------
  172. http://emqtt.io/docs/v2/index.html
  173. .. _release_1.1.3:
  174. -------------
  175. Version 1.1.3
  176. -------------
  177. *Release Date: 2016-08-19*
  178. Support './bin/emqttd_ctl users list' CLI (#621)
  179. Cannot publish payloads with a size of the order 64K using WebSockets (#643)
  180. Optimize the procedures that retrieve the Broker version and Borker description in the tick timer (PR#627)
  181. Fix SSL certfile, keyfile config (#651)
  182. -------------
  183. Version 1.1.2
  184. -------------
  185. .. _release_1.1.2:
  186. -------------
  187. Version 1.1.2
  188. -------------
  189. *Release Date: 2016-06-30*
  190. Upgrade mysql-otp driver to 1.2.0 (#564, #523, #586, #596)
  191. Fix WebSocket Client Leak (PR #612)
  192. java.io.EOFException using paho java client (#551)
  193. Send message from paho java client to javascript client (#552)
  194. Compatible with the Qos0 PUBREL packet (#575)
  195. Empty clientId with non-clean session accepted (#599)
  196. Update docs to fix typos (#601, #607)
  197. .. _release_1.1.1:
  198. -------------
  199. Version 1.1.1
  200. -------------
  201. *Release Date: 2016-06-04*
  202. Compatible with the Qos0 PUBREL packet (#575)
  203. phpMqtt Client Compatibility (#572)
  204. java.io.EOFException using paho java client (#551)
  205. .. _release_1.1:
  206. -----------
  207. Version 1.1
  208. -----------
  209. *Release Date: 2016-06-01*
  210. Highlights
  211. ----------
  212. Upgrade eSockd library to 4.0 and Support IPv6
  213. Support to listen on specific IP Address::
  214. {mqtt, {"192.168.1.20", 1883}, [
  215. ...
  216. ]},
  217. Add MongoDB, HTTP Authentication/ACL Plugins
  218. Upgrade MySQL, PostgreSQL, Redis Plugins to support superuser authentication and avoid SQL Injection
  219. Enhancements
  220. ------------
  221. Allow human-friendly IP addresses (PR#395)
  222. File operation error: emfile (#445)
  223. emqttd_plugin_mongo not found in emqttd (#489)
  224. emqttd_plugin_mongo Error While Loading in emqttd (#505)
  225. Feature request: HTTP Authentication (#541)
  226. Compatible with the Qos0 PUBREL packet (#575)
  227. Bugfix
  228. ------
  229. Bugfix: function_clause exception occurs when registering a duplicated authentication module (#542)
  230. Bugfix: ./emqttd_top msg_q result: {"init terminating in do_boot",{undef,[{etop,start,[],[]},{init,start_it,1,[]},{init,start_em,1,[]}]}} (#557)
  231. Tests
  232. -----
  233. 111 common test cases.
  234. Dashboard Plugin
  235. ----------------
  236. WebSocket Page: Support 'Clean Session', Qos, Retained parameters (emqttd_dashboard#52)
  237. Upgrade eSockd library to 4.0, Show OTP Release on Overview Page (emqttd_dashboard#61)
  238. Changing dashboard credentials for username authentication (emqttd_dashboard#56)
  239. Add './bin/emqttd_ctl admins' CLI,support to add/delete admins
  240. HTTP Auth Plugin
  241. ----------------
  242. Authentication/ACL by HTTP API: https://github.com/emqtt/emqttd_auth_http
  243. MongoDB Plugin
  244. --------------
  245. Upgrade Erlang MongoDB driver to v1.0.0
  246. Support superuser authentication
  247. Support ACL (emqttd_plugin_mongo#3)
  248. MySQL Plugin
  249. ------------
  250. Support superuser authentication
  251. Use parameterized query to avoid SQL Injection
  252. Postgre Plugin
  253. --------------
  254. Support superuser authentication
  255. Use parameterized query to avoid SQL Injection
  256. Redis Plugin
  257. ------------
  258. Support superuser authentication
  259. Support ClientId authentication by '%c' variable
  260. Reloader Plugin
  261. ---------------
  262. Reload modified modules during development automatically.
  263. .. _release_1.0.3:
  264. -------------
  265. Version 1.0.3
  266. -------------
  267. *Release Date: 2016-05-23*
  268. eSockd 3.2
  269. MochiWeb 4.0.1
  270. .. _release_1.0.2:
  271. -------------
  272. Version 1.0.2
  273. -------------
  274. *Release Date: 2016-05-04*
  275. Issue#534 - './bin/emqttd_ctl vm' - add 'port/count', 'port/limit' statistics
  276. Issue#535 - emqttd_client should be terminated properly even if exception happened when sending data
  277. PR#519 - The erlang '-name' requires the fully qualified host name
  278. emqttd_reloader plugin - help reload modified modules during development.
  279. .. _release_l.0.1:
  280. -------------
  281. Version 1.0.1
  282. -------------
  283. *Release Date: 2016-04-16*
  284. PR#515 - Fix '$queue' pubsub, add 'pubsub_queue' test and update docs
  285. .. _release_1.0:
  286. ------------------------------------
  287. Version 1.0 (The Seven Mile Journey)
  288. ------------------------------------
  289. *Release Date: 2016-04-13*
  290. *Release Name: The Seven Mile Journey*
  291. We finally released Version 1.0 (The Seven Mile Journey) with full documentation after two years' development and more than fifty iterations.
  292. The emqttd 1.0 implements a fully-featured, scalable, distributed and extensible open-source MQTT broker for IoT, M2M and Mobile applications:
  293. 1. Full MQTT V3.1/3.1.1 Protocol Specifications Support
  294. 2. Massively scalable - Scaling to 1 million connections on a single server
  295. 3. Distributed - Route MQTT Messages among clustered or bridged broker nodes
  296. 4. Extensible - LDAP, MySQL, PostgreSQL, Redis Authentication/ACL Plugins
  297. Bugfix and Enhancements
  298. -----------------------
  299. Possible race condition using emqttd_cm (#486)
  300. Improve the design of retained message expiration (#503)
  301. Do not expire the retained messages from $SYS/# topics (#500)
  302. Documentation
  303. --------------
  304. http://emqtt.io/docs
  305. http://docs.emqtt.com/
  306. Thanks
  307. ------
  308. Thank Ericsson for the Great Erlang/OTP Platform (http://erlang.org/)!
  309. Contributors on GitHub: @callbay @lsxredrain @hejin1026 @desoulter @turtleDeng @Hades32 @huangdan @phanimahesh @dvliman @Prots @joaohf
  310. Partners: EACG (http://eacg.de/)
  311. Favorite Band: The Seven Mile Journey (http://www.thesevenmilejourney.dk/)
  312. .. _release_0.17.1:
  313. -------------------
  314. Version 0.17.1-beta
  315. -------------------
  316. *Release Date: 2016-03-22*
  317. Enhancements
  318. ------------
  319. Time unit of session 'expired_after' changed to minute. (#479)
  320. Dashboard
  321. ---------
  322. Code Review and improve the design of Dashboard.
  323. .. _release_0.17.0:
  324. -------------------
  325. Version 0.17.0-beta
  326. -------------------
  327. *Release Date: 2016-03-15*
  328. Highlights
  329. ----------
  330. Installation and Configuration Guide released on http://docs.emqtt.com
  331. Improve and Consolidate the design of Hook, Server, PubSub and Router
  332. Upgrade the [Web Dashboard](https://github.com/emqtt/emqttd_dashboard) to support pagination
  333. Bridge emqttd broker to another emqttd broker & emqttd to mosquitto bridge (#438)
  334. Enhancements
  335. ------------
  336. emqttd_ctl: better error message (#450)
  337. ./bin/emqttd_ctl: add 'routes' command::
  338. routes list # List all routes
  339. routes show <Topic> # Show a route
  340. Add 'backend_subscription' table and support static subscriptions (emqttd_backend)
  341. Add 'retained_message' table and refactor emqttd_retainer module (emqttd_backend)
  342. A New Hook and Callback Design (emqttd_hook)
  343. Add PubSub, Hooks APIs to emqttd module (emqttd)
  344. Move start_listeners/0, stop_listeners/0 APIs to emqttd_app module (emqttd_app)
  345. Tests
  346. -----
  347. Add 100+ common test cases.
  348. Plugins
  349. -------
  350. Upgrade Dashboard, Redis, Stomp and Template Plugins
  351. .. _release_0.16.0:
  352. -------------------
  353. Version 0.16.0-beta
  354. -------------------
  355. *Release Date: 2016-02-16*
  356. Highlights
  357. ----------
  358. Licensed under the Apache License, Version 2.0 Now.
  359. Improve the design of cluster, support to join or leave the cluster (#449)::
  360. $ ./bin/emqttd_ctl cluster
  361. cluster join <Node> #Join the cluster
  362. cluster leave #Leave the cluster
  363. cluster remove <Node> #Remove the node from cluster
  364. cluster status #Cluster status
  365. Improve the design of Trie and Route, only the wildcard topics stored in Trie.
  366. Common Test to replace EUnit.
  367. Enhancements
  368. ------------
  369. mqtt_message record: add 'sender' field (#440)
  370. refactor the emqttd, emqttd_time, emqttd_opts, emqttd_node modules.
  371. Bugfix
  372. ------
  373. noproc error when call to gen_server2:call(false, {add_route,Topic,<0.685.0>}, infinity) (#446)
  374. Plugins
  375. -------
  376. Changed the license of all plugins.
  377. .. _release_0.15.0:
  378. -------------------
  379. Version 0.15.0-beta
  380. -------------------
  381. *Release Date: 2016-01-31*
  382. Highlights
  383. ----------
  384. Optimize for Push Application, 500K+ Subscribers to a Topic.
  385. Optimization for Route ETS insertion (#427)
  386. Priority Message Queue for Persistent Session (#432)
  387. Add Redis, MongoDB Plugins (#417)
  388. Enhancements
  389. ------------
  390. Username/Password Authentication: Support to configure default users (#428)
  391. Improve CLI Commands: pubsub, bridges, trace (#429)
  392. emqttd_mod_subscription: fix client_connected/3
  393. emqttd_auth_mod: add passwd_hash/2 function
  394. priority_queue: add plen/2, out/2 functions
  395. Bugfix
  396. ------
  397. Fix dequeue/1 of emqttd_bridge...
  398. Add emqttd:seed_now/0 function
  399. Plugins
  400. -------
  401. emqttd_plubin_mysql: Changed mysql driver to mysql-otp
  402. emqttd_plugin_pgsql: Integrate with ecpool
  403. emqttd_plugin_redis: First release
  404. emqttd_plugin_mongo: First release
  405. .. _release_0.14.1:
  406. -------------------
  407. Version 0.14.1-beta
  408. -------------------
  409. *Release Date: 2015-12-28*
  410. Bugfix: emqttd_ws_client.erl: Unexpected Info: {'EXIT',<0.27792.18>,{shutdown,destroy}} (#413)
  411. Improve: fix spec errors found by dialyzer
  412. .. _release_0.14.0:
  413. -------------------
  414. Version 0.14.0-beta
  415. -------------------
  416. *Release Date: 2015-12-18*
  417. Highlights
  418. ----------
  419. Scaling to 1.3 Million Concurrent MQTT Connections on a 12 Core, 32G CentOS server.
  420. New PubSub, Router Design (#402). Prepare for scaling to 10 millions on one cluster.
  421. Enhancements
  422. ------------
  423. Improve the gproc_pool usage with a general emqttd_pool_sup
  424. Improve the design of emqttd_pubsub, add a new emqttd_router module
  425. Improve the design of the whole supervisor tree
  426. Route aging mechanism to remove the topics that have no subscriptions
  427. Improve the dashboard, mysql, pgsql, stomp, sockjs plugins
  428. Add 'topics', 'subscriptions' admin commands
  429. Avoid using mnesia table index and mnesia:index_read API to lower CPU usage
  430. Subscribe timeout exception (#366)
  431. Long Delay on Multiple Topic Subscription (#365)
  432. Subscriptions persistence (#344)
  433. emqttd_ctl: 'subscriptions' command to force clients to subscribe some topics (#361)
  434. Bugfix
  435. ------
  436. emqttd_sm: spec of lookup_session/1 is not right BUG (#411)
  437. Observer application should be removed from reltool.config for 'wx' app is not available (#410)
  438. Benchmark
  439. ---------
  440. 1.3 million concurrent MQTT connections on a 12 Core, 32G CentOS Server, consume about 15G Memory and 200% CPU.
  441. .. _release_0.13.1:
  442. -------------------
  443. Version 0.13.1-beta
  444. -------------------
  445. *Release Date: 2015-11-28*
  446. Bugfix: Plugin pathes error under windows (#387)
  447. Improve: Too many error logs "[error] Session ..... Unexpected EXIT: client_pid=<0.14137.35>, exit_pid=<0.30829.22>, reason=nop..." (#383)
  448. Improve: Define QOS0/1/2, Pooler Error (PR#382)
  449. Improve: High CPU load when 400K unstable mobile connections (#377)
  450. BugFix: emqttd_plugin_pgsql - error using same query with latest update plugin (pgsql#5)
  451. .. _release_0.13.0:
  452. -------------------
  453. Version 0.13.0-beta
  454. -------------------
  455. *Release Date: 2015-11-08*
  456. Highlights
  457. ----------
  458. 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
  459. Upgrade eSockd and MochiWeb libraries to support Parameterized Connection Module
  460. Improve emqttd_client to support fully asynchronous socket networking
  461. Enhancements
  462. ------------
  463. Protocol Compliant - Session Present Flag (#163)
  464. Compilation fails if repo is cloned with a different name (#348)
  465. emqttd_client: replace gen_tcp:send with port_command (#358)
  466. TCP sndbuf, recbuf, buffer tuning (#359)
  467. emqttd_client.erl to handle 'inet_async', 'inet_reply' properly (#360)
  468. Refator the [client/session management design](https://github.com/emqtt/emqttd/blob/master/doc/design/ClientSession.md)
  469. Bugfix
  470. ------
  471. Cannot kick transient client out when clientId collision (#357)
  472. Fix the order of emqttd_app:start_server/1 (#367)
  473. emqttd_session:subscribe/2 will crash (#374)
  474. Benchmark
  475. ---------
  476. [benchmark for 0.13.0 release](https://github.com/emqtt/emqttd/wiki/benchmark-for-0.13.0-release)
  477. 3.1G memory and 50+ CPU/core:
  478. .. code-block:: bash
  479. Connections: 250K
  480. Subscribers: 250K
  481. Topics: 50K
  482. Qos1 Messages/Sec In: 4K
  483. Qos1 Messages/Sec Out: 20K
  484. Traffic In(bps): 12M+
  485. Traffic Out(bps): 56M+
  486. .. _release_0.12.3:
  487. -------------------
  488. Version 0.12.3-beta
  489. -------------------
  490. *Release Date: 2015-10-22*
  491. Bugfix: emqttd_sysmon crasher for 'undefined' process_info (#350)
  492. Bugfix: emqttd_client: catch parser exception (#353)
  493. .. _release_0.12.2:
  494. -------------------
  495. Version 0.12.2-beta
  496. -------------------
  497. *Release Date: 2015-10-16*
  498. Bugfix: Retained messages should not be expired if 'broker.retained.expired_after = 0' (#346)
  499. .. _release_0.12.1:
  500. -------------------
  501. Version 0.12.1-beta
  502. -------------------
  503. *Release Date: 2015-10-15*
  504. Highlight: Release for Bugfix and Code Refactor.
  505. Feature: Retained message expiration (#182)
  506. Improve: '$SYS/#' publish will not match '#' or '+/#' (#68)
  507. Improve: Add more metrics and ignore '$SYS/#' publish (#266)
  508. Improve: emqttd_sm should be optimized for clustered nodes may be crashed (#282)
  509. Improve: Refactor emqttd_sysmon and suppress 'monitor' messages (#328)
  510. Task: benchmark for 0.12.0 release (#225)
  511. Benchmark: About 900K concurrent connections established on a 20Core, 32G CentOS server.
  512. .. _release_0.12.0:
  513. -------------------
  514. Version 0.12.0-beta
  515. -------------------
  516. *Release Date: 2015-10-08*
  517. Highlights
  518. ----------
  519. Enhance the **emqttd_ctl** module to allow plugins to register new commands (#256)
  520. Add [emqttd_recon plugin](https://github.com/emqtt/emqttd_recon) to debug/optimize the broker (#235)
  521. Add **'./bin/emqttd_ctl broker pubsub'** command to check the status of core pubsub processes
  522. Add **'./bin/emqttd_top'** command(like etop) to show the top 'msg_q', 'reductions', 'memory' or 'runtime' processes
  523. 'rel/files/emqttd.config.production' for production deployment(default)
  524. 'rel/files/emqttd.config.development' for development deployment
  525. Enhancements
  526. ------------
  527. Qos1/2 messages will not be dropped under unstable mobile network (#264)
  528. **emqttd_session:subscribe/2, emqttd_session:unsubscribe/2** APIs should be asynchronous (#292)
  529. **etc/emqttd.config**: 'idle_timeout' option to close the idle client(socket connected but no 'CONNECT' frame received)
  530. **etc/emqttd.config**: 'unack_retry_interval' option for redelivering Qos1/2 messages
  531. How to monitor large 'message_queue_len' (#283)
  532. Bugfix
  533. ------
  534. Behaviour emqttd_auth_mod is missing init callback (#318)
  535. Benchmark
  536. ---------
  537. Write a new [benchmark tool](https://github.com/emqtt/emqtt_benchmark) to benchmark this release
  538. Hw requirements - 5K users, 25-50 msgs/sec, QoS=1 (#209)
  539. Supported Number of Connections Greatly Reduced When Clients are Subscribing (#324)
  540. .. _release_0.11.0:
  541. -------------------
  542. Version 0.11.0-beta
  543. -------------------
  544. *Release Date: 2015-09-25*
  545. Highlight: Rebar to manage plugin dependencies.
  546. Highlight: [Stomp](https://github.com/emqtt/emqttd_stomp) and [SockJS](https://github.com/emqtt/emqttd_sockjs) Plugins!
  547. Improve: add rel/files/emqttd.config.development|production.
  548. Improve: rel/reltool.config.script to release deps of plugin.
  549. Improve: persist mnesia schema on slave nodes.
  550. Improve: use timer:seconds/1 api.
  551. Improve: The binary release will be compiled with R18.1 now.
  552. Bugfix: issue#306 - emqttd_cm should unregister the duplicated client
  553. Bugfix: issue#310 - usage of emqttd_ctl error: 'session list' should be 'sessions list'
  554. Bugfix: issue#311 - './bin/emqttd_ctl sessions list' error
  555. Bugfix: issue#312 - unsubcribe will lead to crash if emqttd_plugin_template plugin loaded
  556. .. _release_0.10.4:
  557. -------------------
  558. Version 0.10.4-beta
  559. -------------------
  560. *Release Date: 2015-09-18*
  561. Optimize session management and upgrade eSockd library to 2.7.1
  562. [Benchmark for 0.10.4 release](https://github.com/emqtt/emqttd/wiki/benchmark-for-0.10.4-release)
  563. Improve: issue#294 - [error] failed to start connection on 0.0.0.0:1883 - enotconn
  564. Improve: issue#297 - How do I allow user with some pattern to access topic with some pattern?
  565. Bugfix: issue#291 - "./bin/emqttd attach ..." cannot work
  566. Bugfix: issue#284 - Should not use erlang:list_to_atom/1 in emqttd_vm.erl
  567. .. _release_0.10.3:
  568. -------------------
  569. Version 0.10.3-beta
  570. -------------------
  571. *Release Date: 2015-08-30*
  572. Bugfix: issue#271 - add emqttd_ws_client:subscribe/2 function
  573. Bugfix: issue#269 - bin/emqttd Syntax error on ubuntu
  574. Improve: issue#265 - client under unstable mobile network generate a lot of logs
  575. .. _release_0.10.2:
  576. -------------------
  577. Version 0.10.2-beta
  578. -------------------
  579. *Release Date: 2015-08-26*
  580. Improve: issue#257 - After the node name changed, the broker cannot restart for mnesia schema error.
  581. .. _release_0.10.1:
  582. -------------------
  583. Version 0.10.1-beta
  584. -------------------
  585. *Release Date: 2015-08-25*
  586. Bugfix: issue#259 - when clustered the emqttd_dashboard port is close, and the 'emqttd' application cannot stop normally.
  587. Feature: issue#262 - Add 'http://host:8083/mqtt/status' Page for health check
  588. .. _release_0.10.0:
  589. -------------------
  590. Version 0.10.0-beta
  591. -------------------
  592. *Release Date: 2015-08-20*
  593. [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!
  594. Highlight: Web Dashboard to monitor Statistics, Metrics, Clients, Sessions and Topics of the broker.
  595. Highlight: JSON/HTTP API to query all clients connected to broker.
  596. 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.
  597. Highlight: Authentication/ACL with MySQL, PostreSQl databases (#194, #172)
  598. Feature: Session Statistics including inflight_queue, message_queue, message_dropped, awaiting_rel, awaiting_ack, awaiting_comp (#213)
  599. Feature: Cookie based authentication for MQTT over websocket connections (#231)
  600. Feature: Get all clients connected to the broker (#228, #230, #148, #129)
  601. Feature: "./bin/emqttd_ctl clients show ClientId" to query client status (#226)
  602. Feature: "./bin/emqttd_ctl clients kick ClientId" to kick out a client
  603. Feature: "./bin/emqttd_ctl sessions list" to show all sessions
  604. Feature: "./bin/emqttd_ctl sessions show ClientId" to show a session
  605. Feature: Erlang VM metrics monitor with Web Dashboard (#59)
  606. Improve: Too many "inflight queue is full!" log when session is overloaded (#247)
  607. Improve: There are two many "MQueue(~s) drop ~s" logs if the message queue of session is small (#244)
  608. Improve: gen_server2(from RabbitMQ) to improve emqttd_session, emqttd_pubsub
  609. Improve: Makefile to build plugins
  610. Bugfix: emqttd_broker:unhook/2 cannot work (#238)
  611. Bugfix: emqttd plugin cannot include_lib("emqttd/include/emqttd.hrl") (#233)
  612. Bugfix: Too many 'Session ~s cannot find PUBACK' logs (#212)
  613. Bugfix: emqttd_pooler cannot work
  614. .. _release_0.9.3:
  615. -------------------
  616. Version 0.9.3-alpha
  617. -------------------
  618. *Release Date: 2015-07-25*
  619. Wiki: [Bridge](https://github.com/emqtt/emqttd/wiki/Bridge)
  620. Improve: emqttd_protocol.hrl to define 'QOS_I'
  621. Improve: emqttd_pubsub to add subscribe/2 API
  622. Improve: ./bin/emqttd_ctl to support new bridges command
  623. Bugfix: issue #206 - Cannot bridge two nodes
  624. .. _release_0.9.2:
  625. -------------------
  626. Version 0.9.2-alpha
  627. -------------------
  628. *Release Date: 2015-07-18*
  629. Improve: issue #196 - Add New Hook 'client.subscribe.after'
  630. .. _release_0.9.1:
  631. -------------------
  632. Version 0.9.1-alpha
  633. -------------------
  634. *Release Date: 2015-07-10*
  635. Bugfix: issue #189 - MQTT over WebSocket(SSL) cannot work?
  636. Bugfix: issue #193 - 'client.ack' hook should be renamed to 'message.acked', and called by emqttd_broker:foreach_hooks
  637. .. _release_0.9.0:
  638. -------------------
  639. Version 0.9.0-alpha
  640. -------------------
  641. *Release Date: 2015-07-09*
  642. [Session, Queue, Inflight Window, Hooks, Global MessageId and More Protocol Compliant](https://github.com/emqtt/emqttd/releases/tag/0.9.0-alpha) Now!
  643. Feature: Session/Queue/Inflight Window Design (#145).
  644. Feature: Support to resume a persistent session on other clustered node.
  645. Feature: Support alarm management.
  646. Feature: emqttd_guid to generate global unique message id.
  647. Feature: Hooks for message pub/ack.
  648. Feature: Protocol compliant - message ordering, timeout and retry.
  649. Improve: Every client will start_link a session process, whether or not the client is persistent.
  650. Improve: etc/emqttd.config to support more session, queue configuration.
  651. Improve: issue #179 - Max offline message queue {max_queue, 100} meaning.
  652. Improve: issue #180 - Should change project structure for other projects maybe depend on 'emqttd'. Merge emqtt, emqttd apps.
  653. Improve: issue #185 - PacketId and MessageId: the broker should generate global unique message id.
  654. Improve: issue #187 - etc/emqttd.config to support https listener
  655. Improve: issue #186 - emqttd_cm to store client details
  656. Improve: issue #174 - add 'from' field to mqtt_message record.
  657. Improve: issue #170 - $SYS Topics should support alarms.
  658. Improve: issue #169 - Add More [Hooks](https://github.com/emqtt/emqttd/wiki/Hooks-Design)
  659. Improve: issue #167 - Inflight window to assure message ordering.
  660. Improve: issue #166 - Message delivery timeout and retry.
  661. Improve: issue #143 - Qos1, Qos2 PubSub message timeout.
  662. Improve: issue #122 - Labeling message with unique id. emqttd_guid module to generate global unique msgid.
  663. Improve: emqttd_bridge to support pending message queue, and fix the wrong Qos design.
  664. Improve: mqtt_message record to add 'msgid', 'from' and 'sys' fields.
  665. Change: Add emqttd_mqueue, emqttd_guid, emqttd_alarm modules.
  666. Bugfix: issue #184 - emqttd_stats:setstats is not right.
  667. Bugfix: Closed issues #181, #119.
  668. Tests: fix the parser, acl test cases.
  669. .. _release_0.8.6:
  670. ------------------
  671. Version 0.8.6-beta
  672. ------------------
  673. *Release Date: 2015-06-17*
  674. Bugfix: issue #175 - publish Will message when websocket is closed without 'DISCONNECT' packet
  675. .. _release_0.8.5:
  676. ------------------
  677. Version 0.8.5-beta
  678. ------------------
  679. *Release Date: 2015-06-10*
  680. Bugfix: issue #53 - client will receive duplicate messages when overlapping subscription
  681. .. _release_0.8.4:
  682. ------------------
  683. Version 0.8.4-beta
  684. ------------------
  685. *Release Date: 2015-06-08*
  686. Bugfix: issue #165 - duplicated message when publish 'retained' message to persistent client
  687. .. _release_0.8.3:
  688. ------------------
  689. Version 0.8.3-beta
  690. ------------------
  691. *Release Date: 2015-06-05*
  692. Bugfix: issue #158 - should queue:in new message after old one dropped
  693. Bugfix: issue #155 - emqtt_parser.erl: parse_topics/3 should reverse topics
  694. Bugfix: issue #149 - Forget to merge plugins/emqttd_auth_mysql from 'dev' branch to 'master' in 0.8.x release
  695. .. _release_0.8.2:
  696. -------------------
  697. Version 0.8.2-alpha
  698. -------------------
  699. *Release Date: 2015-06-01*
  700. Bugfix: issue #147 - WebSocket client cannot subscribe queue '$Q/queue/${clientId}'
  701. Bugfix: issue #146 - emqttd_auth_ldap: fill(Username, UserDn) is not right
  702. .. _release_0.8.1:
  703. -------------------
  704. Version 0.8.1-alpha
  705. -------------------
  706. *Release Date: 2015-05-28*
  707. Client [Presence](https://github.com/emqtt/emqttd/wiki/Presence) Support and [$SYS Topics](https://github.com/emqtt/emqttd/wiki/$SYS-Topics) Redesigned!
  708. Bugfix: issue #138 - when client disconnected normally, broker will not publish disconnected $SYS message
  709. Bugfix: fix websocket url in emqttd/priv/www/websocket.html
  710. Improve: etc/emqttd.config to allow websocket connections from any hosts
  711. Improve: rel/reltool.config to exclude unnecessary apps.
  712. .. _release_0.8.0:
  713. -------------------
  714. Version 0.8.0-alpha
  715. -------------------
  716. *Release Date: 2015-05-25*
  717. [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!
  718. Plugin: emqttd_auth_mysql - MySQL authentication plugin (issues #116, #120)
  719. Plugin: emqttd_auth_ldap - LDAP authentication plugin
  720. Feature: emqttd_broker to support Hooks API
  721. Feature: issue #111 - Support 'Forced Subscriptions' by emqttd_mod_autosub module
  722. Feature: issue #126 - Support 'Rewrite rules' by emqttd_mod_rewrite module
  723. Improve: Support hooks, modules to extend the broker
  724. Improve: issue #76 - dialyzer check
  725. Improve: 'Get Started', 'User Guide', 'Developer Guide' Wiki
  726. Improve: emqtt_topic to add join/1, feed_var/3, is_queue/1
  727. Improve: emqttd_pooler to execute common tasks
  728. Improve: add emqttd_sm_sup module, and use 'hash' gproc_pool to manage sessions
  729. Tests: add more test cases for 'emqttd' app
  730. .. _release_0.7.1:
  731. -------------------
  732. Version 0.7.1-alpha
  733. -------------------
  734. *Release Date: 2015-05-04*
  735. Add doc/design/* and merge doc/* to github Wiki
  736. Bugfix: issue #121 - emqttd cluster issuse
  737. Bugfix: issue #123 - emqttd:unload_all_plugins/0 cannot unload any plugin
  738. Bugfix: fix errors found by dialyzer
  739. .. _release_0.7.0:
  740. -------------------
  741. Version 0.7.0-alpha
  742. -------------------
  743. *Release Date: 2015-05-02*
  744. [MQTT over WebSocket(SSL)](https://github.com/emqtt/emqttd/wiki/MQTT-Over-WebSocket) Now!
  745. [Plugin Achitecture](https://github.com/emqtt/emqttd/wiki/Plugin%20Design) based on OTP application
  746. [Trace MQTT Packets or Messages](https://github.com/emqtt/emqttd/wiki/Trace%20Design) to log files
  747. Feature: issue #40, #115 - WebSocket/SSL Support
  748. Feature: issue #49, #105 - Plugin Architecture Support
  749. Feature: issue #93 - Trace API Design
  750. Improve: issue #109 - emqttd_broker should add subscribe, notify API
  751. Improve: update README.md to add 'Goals', 'Contributors' chapters
  752. Change: rename etc/app.config to etc/emqttd.config
  753. Change: etc/emqttd.config changed
  754. Bugfix: critical issue #54 - error when resume session!
  755. Bugfix: issue #118 - error report when UNSUBSCRIBE with no topics
  756. Bugfix: issue #117 - sys_interval = 0 config cannot work
  757. Bugfix: issue #112 - Makefile to support build plugins
  758. Bugfix: issue #96 - "make clean" cannot work
  759. .. _release_0.6.2:
  760. -------------------
  761. Version 0.6.2-alpha
  762. -------------------
  763. *Release Date: 2015-04-24*
  764. Bugfix: critical issue #54, #104, #106 - error when resume session
  765. Improve: add emqttd_cm_sup module, and use 'hash' gproc_pool to register/unregister client ids
  766. Improve: kick old client out when session is duplicated.
  767. Improve: move mnesia dir config from etc/app.config to etc/vm.args
  768. .. _release_0.6.1:
  769. -------------------
  770. Version 0.6.1-alpha
  771. -------------------
  772. *Release Date: 2015-04-20*
  773. Integrate with [gproc library](https://github.com/uwiger/gproc) to support pool
  774. Feature: issues#91 - should use worker_pool to handle some async work?
  775. Feature: issues#95 - Topic filters in ACL rule should support 'eq' tag
  776. Improve: issues#84 - emqttd_pubsub is redesigned again to protect mnesia transaction
  777. Improve: issues#74 - ACL Support and update [ACL Design Wiki](https://github.com/emqtt/emqttd/wiki/ACL-Design)
  778. .. _release_0.6.0:
  779. -------------------
  780. Version 0.6.0-alpha
  781. -------------------
  782. *Release Date: 2015-04-17*
  783. ACL Support Now: [ACL-Design Wiki](https://github.com/emqtt/emqttd/wiki/ACL-Design)
  784. Authentication with username, clientid Now: [Authentication Wiki](https://github.com/emqtt/emqttd/wiki/Authentication)
  785. Seperate common MQTT library to 'emqtt' application
  786. Redesign message pubsub, route and retain modules
  787. Redesign mnesia database cluster
  788. Feature: issues#47 - authentication, authorization support
  789. Feature: issues#92 - merge emqttd_acl and emqttd_auth to emqttd_access_control
  790. Feature: emqttd_acl_mod, emqttd_auth_mod behaviour to extend ACL, authentication
  791. Feature: issues#85 - lager:info to log subscribe, unsubscribe actions
  792. Feature: issues#77 - authentication with clientid, ipaddress
  793. Improve: issues#90 - fix lager_file_backend log format, and rotate 10 log files
  794. Improve: issues#88 - use '-mneisa_create', '-mnesia_replicate' attributes to init mneisa
  795. Improve: issues#87 - record mqtt_user and mqtt_client is duplicated
  796. Improve: issues#81 - redesign nodes cluster to support disc_copies mnesia tables
  797. Improve: issues#80 - redesign emqttd_cm to handle more concurrent connections
  798. Improve: issues#70 - how to handle connection flood? Now could support 2K+ CONNECT/sec
  799. Change: redesign mnesia tables: message, topic, subscriber, trie, trie_node
  800. Bugfix: issues#83 - emqttd_broker stats cannot work
  801. Bugfix: issues#75 - careless about function name when emqttd_pubsub handle getstats message
  802. .. _release_0.5.5:
  803. ------------------
  804. Version 0.5.5-beta
  805. ------------------
  806. *Release Date: 2015-04-09*
  807. Bugfix: issue #75 - careless about function name when emqttd_pubsub handle getstats message.
  808. Bugfix: issue #79 - cannot find topic_subscriber table after cluster with other nodes.
  809. .. _release_0.5.4:
  810. -------------------
  811. Version 0.5.4-alpha
  812. -------------------
  813. *Release Date: 2015-03-22*
  814. Benchmark this release on a ubuntu/14.04 server with 8 cores, 32G memory from QingCloud.com::
  815. 200K Connections,
  816. 30K Messages/Sec,
  817. 20Mbps In/Out Traffic,
  818. 200K Topics,
  819. 200K Subscribers,
  820. Consumed 7G memory, 40% CPU/core
  821. Benchmark code: https://github.com/emqtt/emqttd_benchmark
  822. Change: rewrite emqttd_pubsub to handle more concurrent subscribe requests.
  823. Change: ./bin/emqttd_ctl add 'stats', 'metrics' commands.
  824. Bugfix: issue #71, #72
  825. .. _release_0.5.3:
  826. -------------------
  827. Version 0.5.3-alpha
  828. -------------------
  829. *Release Date: 2015-03-19*
  830. Bugfix: issues#72 - emqttd_cm, emqtt_sm ets:match_delete/2 with wrong pattern
  831. .. _release_0.5.2:
  832. -------------------
  833. Version 0.5.2-alpha
  834. -------------------
  835. *Release Date: 2015-03-18*
  836. Change: upgrade esockd to 2.1.0-alpha, do not tune socket buffer for mqtt connection.
  837. .. _release_0.5.1:
  838. -------------------
  839. Version 0.5.1-alpha
  840. -------------------
  841. *Release Date: 2015-03-13*
  842. Change: upgrade esockd to v1.2.0-beta, rename 'acceptor_pool' to 'acceptors'
  843. .. _release_0.5.0:
  844. -------------------
  845. Version 0.5.0-alpha
  846. -------------------
  847. *Release Date: 2015-03-12*
  848. RENAME 'emqtt' to 'emqttd'!
  849. Support [Broker Bridge](https://github.com/emqtt/emqttd/wiki/Bridge-Design) Now!
  850. Change: rename project from 'emqtt' to 'emqttd'
  851. Change: lager:debug to dump RECV/SENT packets
  852. Feature: emqttd_bridge, emqttd_bridge_sup to support broker bridge
  853. Feature: emqtt_event to publish client connected/disconnected message to $SYS topics
  854. Feature: ./bin/emqttd_ctl add more commands: listeners, broker, bridges, start_bridge, stop_bridge...
  855. Feature: issue#57 - support to configure max packet size
  856. Feature: issue#68 - if sys_interval = 0, emqttd_broker will not publish messages to $SYS/brokers/#
  857. Bugfix: issue#67 - subscribe '#' to receive all messages
  858. Bugfix: issue#64 - emqtt_app start/2: should wait_for_databases
  859. Test: emqttd_topic_tests add more '_match_test'
  860. .. _release_0.4.0:
  861. -------------------
  862. Version 0.4.0-alpha
  863. -------------------
  864. *Release Date: 2015-03-10*
  865. Support [$SYS Topics of Broker](https://github.com/emqtt/emqttd/wiki/$SYS-Topics-of-Broker) Now!
  866. Feature: emqtt_broker to publish version, uptime, datetime to $SYS/brokers/# topics
  867. Feature: emqtt_broker to publish count of clients, sessions, suscribers to $SYS/brokers/# topics
  868. Feature: emqtt_metrics to publish bytes, packets, messages metrics to $SYS/brokers/# topics
  869. Feature: add include/emqtt_systop.hrl
  870. Change: emqtt_cm to count current clients
  871. Change: emqtt_sm to count current sessions
  872. Change: emqtt_pubsub to count current topics and suscribers
  873. Change: emqtt_pubsub to add create/1 API
  874. Change: emqtt_pubsub dispatch/2 to return number of subscribers
  875. Change: emqtt_pubsub to count 'dropped' messages
  876. Change: emqtt_opts to add merge/2 function
  877. Test: add emqtt_serialiser_tests.erl
  878. .. _release_0.3.4:
  879. ------------------
  880. Version 0.3.4-beta
  881. ------------------
  882. *Release Date: 2015-03-08*
  883. Bugfix: emqtt_serialiser.erl cannot serialise UNSUBACK packets
  884. .. _release_0.3.3:
  885. ------------------
  886. Version 0.3.3-beta
  887. ------------------
  888. *Release Date: 2015-03-07*
  889. Bugfix: emqtt_serialiser.erl cannot serialise PINGRESP issue#60
  890. .. _release_0.3.2:
  891. ------------------
  892. Version 0.3.2-beta
  893. ------------------
  894. *Release Date: 2015-03-05*
  895. Improve: merge emqttc serialiser, parser, packet
  896. Add: emqtt_opts to merge socket options
  897. .. _release_0.3.1:
  898. ------------------
  899. Version 0.3.1-beta
  900. ------------------
  901. *Release Date: 2015-03-02*
  902. Feature: SSL Socket Support
  903. Feature: issue#44 HTTP API should add Qos parameter
  904. Bugfix: issue#52 emqtt_session crash
  905. Bugfix: issue#53 sslsocket keepalive error
  906. Upgrade: esockd to v0.2.0
  907. Upgrade: mochiweb to v3.0.0
  908. .. _release_0.3.0:
  909. ------------------
  910. Version 0.3.0-beta
  911. ------------------
  912. *Release Date: 2015-01-19*
  913. Feature: HTTP POST API to support 'qos', 'retain' parameters
  914. Feature: $SYS system topics support
  915. Change: Rewrite emqtt_topic.erl, use '', '#', '+' to replace <<"">>, <<"#">>, <<"+">>
  916. Change: fix emqtt_pubsub.erl to match '#', '+'
  917. Tests: emqtt_topic_tests.erl add more test cases
  918. -------------------
  919. Version 0.3.0-alpha
  920. -------------------
  921. *Release Date: 2015-01-08*
  922. NOTICE: Full MQTT 3.1.1 support now!
  923. Feature: Passed org.eclipse.paho.mqtt.testing/interoperability tests
  924. Feature: Qos0, Qos1 and Qos2 publish and suscribe
  925. Feature: session(clean_sess=false) management and offline messages
  926. Feature: redeliver awaiting puback/pubrec messages(doc: Chapter 4.4)
  927. Feature: retain messages, add emqtt_server module
  928. Feature: MQTT 3.1.1 null client_id support
  929. Bugfix: keepalive timeout to send will message
  930. Improve: overlapping subscription support
  931. Improve: add emqtt_packet:dump to dump packets
  932. Test: passed org.eclipse.paho.mqtt.testing/interoperability
  933. Test: simple cluster test
  934. Closed Issues: #22, #24, #27, #28, #29, #30, #31, #32, #33, #34, #36, #37, #38, #39, #41, #42, #43
  935. .. _release_0.2.1:
  936. ------------------
  937. Version 0.2.1-beta
  938. ------------------
  939. *Release Date: 2015-01-08*
  940. pull request 26: Use binaries for topic paths and fix wildcard topics
  941. emqtt_pubsub.erl: fix wildcard topic match bug caused by binary topic in 0.2.0
  942. Makefile: deps -> get-deps
  943. rebar.config: fix mochiweb git url
  944. tag emqtt release accoding to [Semantic Versioning](http://semver.org/)
  945. max clientId length is 1024 now.
  946. .. _release_0.2.0:
  947. -------------
  948. Version 0.2.0
  949. -------------
  950. *Release Date: 2014-12-07*
  951. rewrite the project, integrate with esockd, mochiweb
  952. support MQTT 3.1.1
  953. support HTTP to publish message
  954. .. _release_0.1.5:
  955. -------------
  956. Version 0.1.5
  957. -------------
  958. *Release Date: 2013-01-05*
  959. Bugfix: remove QOS_1 match when handle PUBREL request
  960. Bugfix: reverse word in emqtt_topic:words/1 function
  961. .. _release_0.1.4:
  962. -------------
  963. Version 0.1.4
  964. -------------
  965. *Release Date: 2013-01-04*
  966. Bugfix: fix "mosquitto_sub -q 2 ......" bug
  967. Bugfix: fix keep alive bug
  968. .. _release_0.1.3:
  969. -------------
  970. Version 0.1.3
  971. -------------
  972. *Release Date: 2013-01-04*
  973. Feature: Support QOS2 PUBREC, PUBREL, PUBCOMP messages
  974. Bugfix: fix emqtt_frame to encode/decoe PUBREC/PUBREL messages
  975. .. _release_0.1.2:
  976. -------------
  977. Version 0.1.2
  978. -------------
  979. *Release Date: 2012-12-27*
  980. Feature: release support like riak
  981. Bugfix: use ?INFO/?ERROR to print log in tcp_listener.erl
  982. .. _release_0.1.1:
  983. -------------
  984. Version 0.1.1
  985. -------------
  986. *Release Date: 2012-09-24*
  987. Feature: use rebar to generate release
  988. Feature: support retained messages
  989. Bugfix: send will msg when network error
  990. .. _release_0.1.0:
  991. -------------
  992. Version 0.1.0
  993. -------------
  994. *Release Date: 2012-09-21*
  995. The first public release.
  996. .. _erlang.mk_: https://erlang.mk
  997. .. _relx_: https://github.com/erlware/relx
  998. .. _emqttd_: https://github.com/emqtt/emqttd
  999. .. _emqttd_relx: https://github.com/emqtt/emqttd-relx
  1000. .. _emqttd_sn: http://github.com/emqtt/emqttd_sn
  1001. .. _emq_mod_retainer: https://github.com/emqtt/emq_mod_retainer
  1002. .. _emq_mod_presence: https://github.com/emqtt/emq_mod_presence
  1003. .. _emq_mod_subscription: https://github.com/emqtt/emq_mod_subscription