Gnet Versions Save

πŸš€ gnet is a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go./ gnet ζ˜―δΈ€δΈͺι«˜ζ€§θƒ½γ€θ½»ι‡ηΊ§γ€ιžι˜»ε‘žηš„δΊ‹δ»Άι©±εŠ¨ Go η½‘η»œζ‘†ζžΆγ€‚

v2.5.0

3 weeks ago

Visit also Announcing gnet v2.5.0

πŸš€ Features

  • feat: support multiple network addresses binding (#578)
  • feat: support edge-triggered I/O (#576)

πŸ›© Enhancements

  • opt: reduce duplicate code of I/O processing (#587)
  • opt: refine the code of I/O handlers (#586)
  • opt: enable ET mode on listener event-loop by default (#585)
  • opt: disable SO_REUSEPORT on Unix domain sockets (#584)
  • opt: don't disable SO_REUSEPORT on DragonFlyBSD (#583)
  • opt: only enable SO_REUSEPORT on Linux and FreeBSD (#580)

πŸ› Bugfixes

  • bug: fix the EEXIST of epoll_ctl in eventloop.open (#572)
  • bug: return 0 instead of -1 when error occurred on a write (#569)

Thanks to all these contributors: @daynobug and @panjf2000 for making this release possible.

What's Changed

New Contributors

Full Changelog: https://github.com/panjf2000/gnet/compare/v2.4.0...v2.5.0

v2.4.0

1 month ago

πŸš€ Features

  • opt: mitigate the latency issue by prioritizing asynchronous writes (#563)
  • feat: enable OnOpen for connected UDP socket (#554)
  • feat: add DialContext and EnrollContext for Client (#543)

πŸ›© Enhancements

  • opt: mitigate the latency issue by prioritizing asynchronous writes (#563)
  • feat: enable OnOpen for connected UDP socket (#554)
  • opt: use accept4 where available (#535)
  • bug: read the remaining data after the peer wrote and closed on BSD (#531)
  • opt: make TCP Keep-Alives settings practicable (#522)
  • opt: eliminate error logs when the service exits normally (#500)

πŸ› Bugfixes

  • bug: fix the memory leaks of localAddr and remoteAddr in conn (#547) a3a2b7af26a3a9a4d98b0fe48ba2f32b8a2ec918
  • bug: read the remaining data after the peer wrote and closed on BSD (#531)
  • bug: fix the inconsistent behaviors on Windows (#510)
  • bug: make logging package concurrent-safe (#487)

πŸ“š Documentation

  • doc: update to the latest Round 22 of TechEmpower Benchmark 6d01da7dca7dcbf4348195ee1d5c7dce2a4e7020
  • bug: fix the inconsistent behaviors on Windows (#510)
  • chore: add a TODO about removing the callback in Conn.AsyncWrite with UDP (#494)

πŸ—ƒ Misc

  • ci: add a bot that translates non-English issues 6e3e0c33ec609d2cad50f5630130f4ff274c550e f7cfb5b7992e038dc0d9dd45a33e18ac1d9d3ac0
  • chore: switch from Gitter to Discord 5d1cf9ebd4a67205ddd34a03f307f72ed425aa2e
  • mod: bump up a few modules 1bf7af470a92967915431f83f74a67ac4244c118
  • dep: bump up a few dependencies and enable more auto-labelers in CI (#504)
  • chore: consolidate the import declarations of the internal error package (#501)
  • chore: do some chores on tests and comments (#499)
  • chore: add a TODO about removing the callback in Conn.AsyncWrite with UDP (#494)
  • chore: bump up modules (#493)

Full Changelog: https://github.com/panjf2000/gnet/compare/v2.3.0...v2.4.0

Thanks to all these contributors: @leslie-fei and @panjf2000 for making this release possible.

What's Changed

New Contributors

Full Changelog: https://github.com/panjf2000/gnet/compare/v2.3.0...v2.4.0

v2.3.0

10 months ago

πŸš€ Features

  • feat: implement gnet on Windows (#461)

πŸ›© Enhancements

  • build: add NetBSD and OpenBSD supports 9790927c31313d945d39866fba6fc1aa448138c4
  • opt: make use of the inheritance of file status flags on BSD-like OS d98706e6175d9f547d57d4f1a295173328483876
  • opt: rearrange the matrix and map of connections e3083990fb327198e2de3f17f1b6f1acfda73538
  • internal/math: fix a corner case for IsPowerOfTwo (#476)
  • opt: improve comments on Conn and test cases (#471)
  • opt: mitigate big map issue of connections when garbage collecting (#460)
  • opt: use the std math/bits routine to count the bit length (#437)
  • opt: refine the SockaddrToTCPOrUnixAddr and SockaddrToUDPAddr abcc0315dceef8418bb451306f1ade47d3de370d
  • opt: prepend [gnet] prefix to every log entry 650f731a92f128a3b16f05c24615dc4f25ca2ab8
  • opt: set up the PanicHandler and Logger for pkg/pool/goroutine 222a3952e25e500a089f07f7242b3e7211a1d9c4

πŸ› Bugfixes

  • bug: fix the data race among asynchronous methods daffb4efa39923be6ee1d6b00c6d21f69cd3b079
  • bug: fix the data race in test on Windows (#472)
  • bug: replace the global logger with custom logger for client on Windows dd46b082ea0cb200b6bfa76790a35001c710fd9e
  • bug: invoke the callback whether the connection is open or not (#466)
  • bug: clean up the inner buffer after read event (#445)
  • bug: fix the nil panic in conn.Flush() and increase the code coverage 0f41b37dc7a28d0546cd542fa392fe409bfb3667
  • bug: fix the memory leak of linked-list-buffer 4b6dfdc6f26514cd288b18cbb4f7a659f93c9df5
  • bug: fix the compile error on FreeBSD with 32-bit 72b6e726ce32f6bc3aeb22fb9bb153ff469e9ffa
  • bug & feat: replace the global default logger with custom logger 3c66bced864ee4ff6d6f68cb76f9fbd6b4e6e32a

πŸ“š Documentation

  • chore: update the info of techempower.com b3411039e619844a56aa7986cbef68c1bf59e1c0
  • doc: update the minimum required version of Go a9c26387627c29d98c5fbb1d42172851fa894b76
  • doc: update READMEs about supported platforms 88ed242adae730cbb20949d20dcb2dc1daa252fb

🧳 Misc

  • chore: delete the unused code in pkg/buffer/ring bdbb661682104076216de19ff743e2d327de5dc2
  • chore: code cleanup 9ff529b8438b60b6580576349f4993db2c46386f
  • opt: rename eventloop.closeConn to eventloop.close 7c9a61a5736c244fca14346e8b10f7dc83b81af1
  • chore: add test for Engine.CountConnections b4931079ba57206971681fa292b088b80bac86c1
  • chore: print a debugging log about logging level when client starts bdda3bfbd8a5e2e2ad55706facef035797301912
  • chore: update copyright info ebc191ee2f130d21bef444e8fe20b4e219affc97
  • chore: bump ants to v2.7.3 edb9318f91697817b71791b691ba9a763c63672f
  • chore: fix the lint issues edffef890e0ab47fde4b6eec669eb0fc93fb559c
  • chore: add more test cases for custom protocol testing deea03f14661366fc112da74b7df89fe889f67d7

❇️ Notices

The two major updates in this release candidate are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
                                    β”‚     old      β”‚                 new                  β”‚
                                    β”‚    sec/op    β”‚    sec/op     vs base                β”‚
GC4El100k/Run-4-eventloop-100000-10    30.74m Β± 3%   19.68m Β± 10%  -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10    63.64m Β± 3%   38.16m Β± 11%  -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10   177.28m Β± 8%   95.21m Β±  4%  -46.29% (p=0.000 n=10)
geomean                                70.26m        41.51m        -40.92%

                                    β”‚     old     β”‚                new                 β”‚
                                    β”‚    B/op     β”‚    B/op      vs base               β”‚
GC4El100k/Run-4-eventloop-100000-10   27.50 Β± 35%   25.50 Β± 33%       ~ (p=0.423 n=10)
GC4El200k/Run-4-eventloop-200000-10   27.50 Β± 53%   20.50 Β± 66%       ~ (p=0.642 n=10)
GC4El500k/Run-4-eventloop-500000-10   16.00 Β±   ?   18.00 Β±   ?       ~ (p=0.357 n=10)
geomean                               22.96         21.11        -8.04%

                                    β”‚     old      β”‚                 new                 β”‚
                                    β”‚  allocs/op   β”‚ allocs/op   vs base                 β”‚
GC4El100k/Run-4-eventloop-100000-10   0.000 Β± 0%     0.000 Β± 0%       ~ (p=1.000 n=10) ΒΉ
GC4El200k/Run-4-eventloop-200000-10   0.000 Β± 0%     0.000 Β± 0%       ~ (p=1.000 n=10) ΒΉ
GC4El500k/Run-4-eventloop-500000-10   0.000 Β± 0%     0.000 Β± 0%       ~ (p=1.000 n=10) ΒΉ
geomean                                          Β²               +0.00%                Β²
ΒΉ all samples are equal
Β² summaries must be >0 to compute geomean

The more connections there are, the more pronounced the effect.

While we have performed sufficient testing on matrix, we are still using map as the default connection storage in this RC version for the sake of caution, but you can enable the new data structure by specifying build tags: -tags=gc_opt. This can be considered as a precautionary measure so that in case matrix has any unexpected bugs, you can quickly fall back to the default map. We will consider promoting matrix to be the default storage for connections in a subsequent official release.

Another significant leap is #461, you can now run gnet on Windows, it should be noted that the Windows version of gnet is intended for development purposes and is not recommended for use in production.

Full Changelog: https://github.com/panjf2000/gnet/compare/v2.2.0...v2.3.0

Thanks to all these contributors: @0-haha, @GXKe, @gocurr, @jinxing3114 and @panjf2000 for making this release possible.

v2.3.0-rc.1

11 months ago

πŸš€ Features

  • feat: implement gnet on Windows (#461)

πŸ›© Enhancements

  • opt: set up the PanicHandler and Logger for pkg/pool/goroutine 222a3952e25e500a089f07f7242b3e7211a1d9c4
  • opt: prepend [gnet] prefix to every log entry 650f731a92f128a3b16f05c24615dc4f25ca2ab8
  • opt: mitigate big map issue of connections when garbage collecting (#460)
  • opt: use the std math/bits routine to count the bit length (#437)
  • opt: refine the SockaddrToTCPOrUnixAddr and SockaddrToUDPAddr abcc0315dceef8418bb451306f1ade47d3de370d

πŸ› Bugfixes

  • bug & feat: replace the global default logger with custom logger 3c66bced864ee4ff6d6f68cb76f9fbd6b4e6e32a
  • bug: invoke the callback whether the connection is open or not (#466)
  • bug: clean up the inner buffer after read event (#445)
  • bug: fix the nil panic in conn.Flush() and increase the code coverage 0f41b37dc7a28d0546cd542fa392fe409bfb3667
  • bug: fix the memory leak of linked-list-buffer 4b6dfdc6f26514cd288b18cbb4f7a659f93c9df5
  • bug: fix the compile error on freeBSD with 32-bit 72b6e726ce32f6bc3aeb22fb9bb153ff469e9ffa

πŸ“š Documentation

  • doc: update the minimum required version of Go a9c26387627c29d98c5fbb1d42172851fa894b76
  • doc: update READMEs about supported platforms 88ed242adae730cbb20949d20dcb2dc1daa252fb

🧳 Misc

  • chore: add test for Engine.CountConnections b4931079ba57206971681fa292b088b80bac86c1
  • chore: print a debugging log about logging level when client starts bdda3bfbd8a5e2e2ad55706facef035797301912
  • chore: update copyright info ebc191ee2f130d21bef444e8fe20b4e219affc97
  • chore: bump ants to v2.7.3 edb9318f91697817b71791b691ba9a763c63672f
  • chore: fix the lint issues edffef890e0ab47fde4b6eec669eb0fc93fb559c
  • chore: add more test cases for custom protocol testing deea03f14661366fc112da74b7df89fe889f67d7

❇️ Notices

The two major updates in this release candidate are #460 and #461.

We introduced a new data structure matrix in #460 to displace the default map for managing connections internally, with the help of this new data structure, we can eliminate the pointers in map and store connections in the form of a matrix (an array of slices), which will significantly reduce GC (Garbage Collection) latency:

goos: darwin
goarch: arm64
pkg: github.com/panjf2000/gnet/v2
                                    β”‚     old      β”‚                 new                  β”‚
                                    β”‚    sec/op    β”‚    sec/op     vs base                β”‚
GC4El100k/Run-4-eventloop-100000-10    30.74m Β± 3%   19.68m Β± 10%  -35.98% (p=0.000 n=10)
GC4El200k/Run-4-eventloop-200000-10    63.64m Β± 3%   38.16m Β± 11%  -40.04% (p=0.000 n=10)
GC4El500k/Run-4-eventloop-500000-10   177.28m Β± 8%   95.21m Β±  4%  -46.29% (p=0.000 n=10)
geomean                                70.26m        41.51m        -40.92%

                                    β”‚     old     β”‚                new                 β”‚
                                    β”‚    B/op     β”‚    B/op      vs base               β”‚
GC4El100k/Run-4-eventloop-100000-10   27.50 Β± 35%   25.50 Β± 33%       ~ (p=0.423 n=10)
GC4El200k/Run-4-eventloop-200000-10   27.50 Β± 53%   20.50 Β± 66%       ~ (p=0.642 n=10)
GC4El500k/Run-4-eventloop-500000-10   16.00 Β±   ?   18.00 Β±   ?       ~ (p=0.357 n=10)
geomean                               22.96         21.11        -8.04%

                                    β”‚     old      β”‚                 new                 β”‚
                                    β”‚  allocs/op   β”‚ allocs/op   vs base                 β”‚
GC4El100k/Run-4-eventloop-100000-10   0.000 Β± 0%     0.000 Β± 0%       ~ (p=1.000 n=10) ΒΉ
GC4El200k/Run-4-eventloop-200000-10   0.000 Β± 0%     0.000 Β± 0%       ~ (p=1.000 n=10) ΒΉ
GC4El500k/Run-4-eventloop-500000-10   0.000 Β± 0%     0.000 Β± 0%       ~ (p=1.000 n=10) ΒΉ
geomean                                          Β²               +0.00%                Β²
ΒΉ all samples are equal
Β² summaries must be >0 to compute geomean

The more connections there are, the more pronounced the effect.

While we have performed sufficient testing on matrix, we are still using map as the default connection storage in this RC version for the sake of caution, but you can enable the new data structure by specifying build tags: -tags=gc_opt. This can be considered as a precautionary measure so that in case matrix has any unexpected bugs, you can quickly fall back to the default map. We will consider promoting matrix to be the default storage for connections in a subsequent official release.

Another significant leap is #461, you can now run gnet on Windows, it should be noted that the Windows version of gnet is intended for development purposes and is not recommended for use in production.

Full Changelog: https://github.com/panjf2000/gnet/compare/v2.2.0...v2.3.0-rc.1

Thanks to all these contributors: @panjf2000, @0-haha, @GXKe, and @jinxing3114 for making this release possible.

v2.2.0

1 year ago

Changelogs

  • allow creation of multiple engines on the same protocol and port (#419)
  • opt: byte alignment, optimization from 144 to 136 byte (#369)
  • fix, unix socket bind should be only used in passive mode (#373)
  • Fix gnet.Conn not compatible with net.Conn on method Close (#348)
  • fix the bug of the return value of conn.WriteTo (#344)

🧨 Breaking changes

  • opt: redefine AsyncCallback, pass in the error message 691e07747d11e3be90fb3b2996deb19448aa1e0e

πŸš€ Features

  • opt: implement Close() for gnet.Conn to make it compatible with net.Conn (#348)
  • feat: implement a new API to convert and add net.Conn into gnet.Client c296922d171e64bcd0a97b1bf7eeb7adc747dad6
  • allow creation of multiple engines on the same protocol and port (#419)
  • feat: add multicast UDP listener support (#412)

πŸ›© Enhancements

  • opt: reduce the memory allocation when a connection is idle 27667f3caad72fed296f86a2a5f624253ce01a56

πŸ› Bugfixes

  • bug: set the correct number of bytes written by conn.WriteTo() (#344)
  • bug: fix the issue of discarding bytes in buffer mistakenly in Conn.Read() 02820252e2e2a74ece265379386441dd1d4df2d9
  • bug: bind socket only when it's in passive mode (#373)
  • bug: fix the compile error on linux/mips f2e2fa31adc7694bc45b62aec261ccbe6d77819f
  • bug: return io.EOF in Read(), comply with io.Reader and io.Writer 3c3c519b8c57e750231db3d191e7257b5a3cf51d
  • bug: fix the issue failing to listen on 0.0.0.0 on linux/arm64 c9eeca1ee0a2d4cce1702d6c529f523fd3786e43
  • opt: avoid the long hanging when the peer crashes c138ac53b732540dcff6364d12823f5b6a8f10a8
  • opt: put the bytes of net.Addr.Zone back to pool when connection is closed 50406b34552ef6fb86795a9ee6c0e54ad71ae322

πŸ—ƒ Misc

  • opt: refine the logic of eventfd in poller 38aa2e0a03ca438c91100c16029ee0b7e6859c07
  • opt: fieldalignment, optimization from 144 to 104 byte f70489f555c7f627fcd268907f316dd02425da61
  • opt: improve the internal packages of math and bytes f1727999f277e995e8a33319a8e772d9b17b75c9

Full Changelog: https://github.com/panjf2000/gnet/compare/v2.0.0...v2.2.0

Thanks to all these contributors: @0-haha, @JemmyH, @ccssrryy, @jdamick, @leki75, @panjf2000, @zhongweikang and zhongweikang for making this release possible.

v2.0.0

2 years ago

Today, I'm thrilled to announce the release of gnet v2.0.0, in which we've made plenty of significant improvements and optimizations: added and removed some APIs, redesigned and reimplemented the buffer, optimized the memory pool, etc.

Please visit the blog post of announcing gnet v2.0.0 for more details.

v1.6.0

2 years ago

Gnet client is now available for production!

Features

  • Add a new event handler: AfterWrite() #242
  • Implement the gnet client 2295e8c6f3394341d28318cb6ea33f0799d52c45 a5ac95a5057fb82e2f71cb6a7f4ffed83c967efb 4db46da43d5defd5da71213c0abaebb174af642c 802fa358f2c8ac95414e36cb0afd53f6dd57bfa0 7159b95cd9ebc8fe2f9bea909844eb8c8bb37bf7
  • Implement writev and readv on BSD-like OS's 60ba6d30b04351e26c3f7c9cc496b1b849936731
  • Implement a mixed buffer of ring-buffer and list-buffer edbdf4b54b7439bfb2ac4ba9652ec6a1764e0659
  • Invoke OnClosed() when a UDP socket is closed 7be4b2a758e32af489450b6b62d8da48e471ba00
  • Implement the gnet.Conn.AsyncWritev() 9a2032f876cd8f41c554545bcbb63d3043f4946f #245

Enhancements

  • Prevent the event-list from expanding or shrinking endlessly b220dfd3f3ff9b8ecee4a09170d4db3760393fc0
  • Reduce the potential system calls for waking pollers up 9ce41f3b921a9341081506629185e733f97defa4
  • Eliminate the code for preventing false-sharing 0bfade3aea015a7932b0e45b646a6c85a620a205
  • Support so_reuseaddr (#280)
  • Make several improvements for logger 58d2031440b1c9725e2d12aeb651aa8bc78d3489
  • Optimize the buffer management and network I/O 6aba6d7a3fc31cf749b0001dcb1c82f01c816f65
  • Improve the project layout 2e172bde78bcdb56dbec9a57d95dfa4b6213b1f2
  • Improve the logic of reading data from socket into ring-buffer a7f07b3d4eaa70a9b5c8b389d73b72ddb06b8c16
  • Get as much data read from socket per loop as possible 148ee163fb3ddd0fcd7919ab17390a3cd910933f
  • Improve the network read with ring-buffer and readv 0dcf599fd0673bc712b5409fd9a0711cb90606c0
  • Avoid memory allocations when calling readv 15611b482f50f1333fcee47b02d6ec04b4d2ede5
  • Refactor the logic of handling UDP sockets d72d3de70a0cb31c6059820dbd4ba6db6c4e23eb
  • Make the mixed-buffer more flexible 4ac906cae698b1a4483c583d0267f86f05ce595b
  • Improve the management logic of the mixed-buffer b8d571dd762cb79c2c685f16d36886f6edb40195

Bugfixes

  • Resolve the data race of stdConn on Windows (#235)
  • Fix the data corruption in some default codecs a56d2f3f50981107ae6b2bd2653fe19dc75d4e18
  • Fix the issue of panic: runtime error: slice bounds out of range 30311e936869d8685c8c06ff98170f0adb68bc8b

Docs

  • Update the benchmark data 21f55a6832d82b88073c51ccfbed8a0e627399c3 24e4ce06a4c4e1d3990eec9945c98175763c027f 1b4ae56edf45bb3bc165c183a089fb0a8144ca67 81d984236401fb42d2f75c8989b87321804f4503
  • Add the echo benchmarks on macOS f429e7afaf3745574c95bf03d60baeaec2ecd9c1
  • Change the license from MIT to Apache 2.0 a900c8f21958eb8096443125afafb672d9f1218e

Misc

  • Add a new patron 0c9f965f24a6a706ddcfbcc2ba2dd8339e611e8e
  • Create FUNDING.yml 1989eda4cc668e548f8572ac9fb07cef8c8f612d 7b29795db5fe184da0939490f8bf4ec39d3c27db
  • Remove the irrelevant articles bbdc1bcc76138feb3529d639e63ebe9374c22165
  • Correct the wrong logging function 10c619f3a42c4f8397464a7a45daff24bfa873ea

v1.5.0

2 years ago

Features

  • Move the logging module out of the internal package and refactor to make it serviceable for users d566061586adfda7efbf58feec0bd8ebf7534479 b6b1cfb53400540000efb0f858d001437bc3d4f9 8837a92308f41805d38a2377da32530c6c79646d

Enhancements

  • Support writev and readv in eventloop f299a8e39a1d5601afc3ddca6eec149e6aa3cf7b
  • Reduce GC pause frequency for Conn.AsyncWrite (#218) 477bb4fe46c38accf993fb11a9ba816bfa9fdc0b
  • Improve logging module 8837a92308f41805d38a2377da32530c6c79646d b6b1cfb53400540000efb0f858d001437bc3d4f9
  • Refactor the inside AsyncTaskQueue to make it more generic 2d1a4639d18dbd8faeb43649a3e4859378cc95e6
  • Reduce GC pause frequency for accepting connections 2d1a4639d18dbd8faeb43649a3e4859378cc95e6

Docs

  • Add a new user case: Tencent Games b7ea839d959face861aca90ea493e5d3f8dfb205
  • Add a new donor ee965a1453d07300bf14749ea874a5d06ffc660e

Misc

  • Add debugging log when error occurs in Accept() (#222)
  • Make some trivial changes to ring-buffer 1bdd3aa77da3827268e1145a07443460e1f01bd5

v1.4.0

3 years ago

Features

  • Support TCP_NODELAY socket option 525df8ed1e734ac8d9a8f7fc4d28853a3f1e9cb3
  • Implement the lock-free queue for dispatching tasks faster (#181)

Enhancements

  • Shrink the ring-buffer for saving memory 14fd04a041994e35393a2abf5c039db4e9f29f60
  • Improve event poll fc042ccde2d57697eafe278b2d6d9c056246e251
  • Improve the buffered channels 83b96eda98cb0ea311d776537a502151a029dab6
  • Shrink the poll event list when it need to 158763823c0c155bd3750c18d58cf887c7f2a813
  • Improve the I/O in event-loop c554f4ec298f76c6bb5710a62db710161189d239
  • Prioritize writable events 0f08c8f351c1cb60e83db1b6edf1babdb853767d
  • Make it more robust when running async jobs 6509b85eca7847abf8919829857e05851a408d0c
  • Improve the poller waking logic 4d8accba64f9c8e9da621409c5fa42d1aa3bea51

Bugfixes

  • Re-enqueue the subsequent jobs when a error occurs 1af3f6c4734f41f424de4b929407ed401ddbc830
  • Close and release a socket when error occurs 9d86c92a224a3ce0b670070dd4256099c0dedcff
  • Check outbound buffer in case the socket has been released 035f6140a187f58c62d3d9e023f22fbdb81cd66f
  • Avoid starving sockets e3152523da481e8e59f1ac137e89b5c669287010

Docs

  • Enrich the doc about using UDP packets 0047c15c6ccf98fddf985bbb254ab22abd2463ce
  • Add more user cases of gnet 076b16c68f52de65fb059ec9b81d03f0e7ef06f4
  • Update benchmark results 028bab284f63babd203b44dc59e2e0bde3ee2691
  • Update the description about ring-buffer 38b086af35cf57e9bc08f3655eefacab7985dd5a

Misc

  • Add one more donor 12bfa5cfa7742859ad75f8117d3deadebeb7f12c
  • Refine code 2aee5a9ea2d86d2eabf2964be96cbf8ce643bc48
  • Add comments on those core code 2404edde0031ac52bf1dcb803708e347080b9e47
  • Refine code and add comments 4ecbc501c2cfa05773e338cd07d967bb1d0afad5
  • Add a warning comment for OnOpened 0bddd003d7d8934df7ab65389c8975e155c72440

v1.3.0

3 years ago

Features

  • Determine logging mode by environment variable 2a7977feb33ba18f0c9d788dc611e85154df8548
  • Support locking each I/O event-loop goroutine to an OS thread 6fd6413920618f8cd9906923bd5768a43ce1c3b7

Enhancements

  • Improve the implementation of Least-Connections load-balancing b6a5f564a9eea9c3fbb977c5ef3c8163689a63d0
  • Speed up the Least-Connections load-balancing b5fbbdac59588572b4a6e8c26bb6049cfd9b7211
  • Leverage system calls instead of net package to create listeners ccc8c649f380c546242251911040c8935a2cbb57
  • Refine the logging module f46da440d6435831558a1e8cbbd3f20a5ed2d773
  • Reorg errors in gnet 1c2f4b0c5127a4f40b5f635d604212a33e45a220
  • Move logging module into internal package 00af504ed00ab0ecb6477956ef4fe81f1dadd66e
  • Take off the codec from eventloop bc85c34e5f347fa055b5fea1ecb84fbbdf85ef91
  • Refactor for buffer in Conn 455c5ae5241e0875fc79a9338fefc38b4a5c17bc
  • Refactor the load-balancing algorithm of source addr hash abbf5820c1d264fa22e8bf8d00755d6093a86767
  • Make channel buffered if necessary 43f93ca57010dbb9b87f07928400301e487af65e

Bugfixes

  • Fix a bug that led to negative counter of sync.WaitGroup on Windows 16ed4ab6719b70b396b47d5d51c1f70f44e1205a
  • Add "windows" build tag under SO_REUSEPORT mode 7862f3e2cb60554928c2d22f66213916dd69dbee
  • Supplement all the formal protocol formats of TCP and UDP 258253c7813a6577e338561f0c3da1bd7c5e57da
  • Resolve the issue of closing one fd twice b5a5c715ca07f8b4e3c371a8460274e77953bbdf
  • Fix concurrent loopCloseConn causes panic (#111)
  • Eliminate duplicate calls to loopCloseConn a72f5fd30757fa51cad4ad10c9583468c450b68e

Docs

  • Add a customized codec example (#90)
  • Add placeholder for user cases and new relevant article 5197f186792670851ddcfdbe94b5317196e3ef6a
  • Renew results of techempower benchmark 61eee8fa29105002d2e1af17d2c1afc54001c6be
  • Add the list of donors 42e04ddc6ba2299ab89d107d2731725dacb31dcf
  • Add xs:code 33a3e5744e0c3c6c3ac1d3d965eabc5c5a93307d
  • Build an official website for gnet 49363cd41c73852bf52807a59b980ff2968f2e46
  • Move the majority of content to website and simplify READMEs 903ff8433d2d635f86b366b79eb304915c3fa662

Misc

  • Fix a typo and improve code comments 37d75cce99609c9c17f25df2f6cfbfd3cf212ef8
  • Use SyscallError to wrap system calls errors c3907e00e2bb725cc4616587fb2e52f1c74c5999
  • Refine go build tags of operating systems 637144b487d4fa4f0a3ef40a2dada40586e188b5
  • Format copyright info 6872c20ab7c97342512149843322ff6111003ec3
  • Remove all examples from the source-code repo a704e0683e9c261c9f1e49c7443086068160fed2
  • refine the usage of os.NewSyscallError 2d54d80f42a6fa8e293db63a35033e1daa60cd56