Skip to content

Releases: xtaci/kcptun

Profile-guided optimization on client

07 Jan 09:05
Compare
Choose a tag to compare
  1. pgo file updated in client.
  2. Do not send FEC packets while previous packets are older than RTO, as a result, only in continuous streams, parities are sent along with.

$ go version
go version go1.21.5 linux/amd64

$ date
Sun Jan  7 17:02:20 CST 2024

$ ./build-release.sh
Setting GO111MODULE to on
1d52774a19dd013d0beee487444a2d399c8cb9d4  kcptun-linux-amd64-20240107.tar.gz
993a9e3097f12ab543959c04eab1778622be6862  kcptun-darwin-amd64-20240107.tar.gz
9386384990ae0a057170ab127911ae03342adf53  kcptun-windows-amd64-20240107.tar.gz
9c50f51ac2c672c16c1b7e6b91efbd8ec97fd161  kcptun-freebsd-amd64-20240107.tar.gz
08d4cb1adc58f71c26907a6cb73fa13123497c39  kcptun-linux-386-20240107.tar.gz
f92815da5d15c3f9c62ed8f5e803b5eebdde1146  kcptun-windows-386-20240107.tar.gz
9dd8b1ecda7ab2899111133143fdaf226f174fa6  kcptun-linux-arm5-20240107.tar.gz
e07a768a4179dfcac6d2edca022c58c0cb59dd04  kcptun-linux-arm6-20240107.tar.gz
192c512d2ba1ca6cefbc6486da09132ef778fab4  kcptun-linux-arm7-20240107.tar.gz
9743164b98413174a3587159e3fead911e521523  kcptun-linux-arm64-20240107.tar.gz
72369575e29c9b6da375ea4361314692b4e1e5a3  kcptun-darwin-arm64-20240107.tar.gz
b5b23913f196cd5173b7eba984553af37e118ca3  kcptun-windows-arm64-20240107.tar.gz
b85675fa17bfd47074f00041e718cb36fe98c0e4  kcptun-linux-mipsle-20240107.tar.gz
37b8402369306ac3fa9da8668ce92bd76c9f822a  kcptun-linux-mips-20240107.tar.gz

a bug fix in fec auto tuning

12 Oct 15:34
Compare
Choose a tag to compare
  1. fixed a bug in fec tuning when fec parameters on client & server side are set differently. xtaci/kcp-go@ceebe17

$ go version
go version go1.21.3 linux/amd64

$ date
Thu Oct 12 23:29:14 CST 2023

$ ./build-release.sh
Setting GO111MODULE to on
d274eb50ab0f8b3dda42d57198e009f6abfcc850  kcptun-linux-amd64-20231012.tar.gz
ecd4d86cd74eda7c6fc3483f90dcaf20a7780c51  kcptun-darwin-amd64-20231012.tar.gz
b370c50569b29c22b635f8e64a6d2b77b9a5974e  kcptun-windows-amd64-20231012.tar.gz
6c21e6ddf615b638ee829a2626248f94e30b3b53  kcptun-freebsd-amd64-20231012.tar.gz
decef69ae6c42ccd205746c1e29ec12024fa48a9  kcptun-linux-386-20231012.tar.gz
f800492ea1f53c328eda8d2ad9396a9f101e2519  kcptun-windows-386-20231012.tar.gz
db096a27b6240b027f6238f85ef8513188a87d32  kcptun-linux-arm5-20231012.tar.gz
7d357740aafe2b143d7d784efd1c44dc09f2d926  kcptun-linux-arm6-20231012.tar.gz
c2cdc7f67eb6d8a8fbf0aca07ec6ac8ae9feb44f  kcptun-linux-arm7-20231012.tar.gz
c495361807bfcb3533444423a2dfa41a54dcd3b8  kcptun-linux-arm64-20231012.tar.gz
95609a21306b92ed2755cb7177106f14d73f64c5  kcptun-darwin-arm64-20231012.tar.gz
cfa12cf0c8bfe52c2ad7223890cc326089d9683e  kcptun-windows-arm64-20231012.tar.gz
d52cb90291132efa40e4b36482efe5feecc5a272  kcptun-linux-mipsle-20231012.tar.gz
4f90cd0fbaf61ea2b4a97d4c8ea6b074eea3a753  kcptun-linux-mips-20231012.tar.gz

go1.21 rebuild

11 Aug 05:39
Compare
Choose a tag to compare
  1. use clear to zero slice in kcp-go.
  2. use default.pgo to optimize code generation in kcptun/client side
  3. compiler upgraded to go 1.21
  4. added an option -pprof on client side to support PGO
the default.pgo used in building.

(pprof) top
Showing nodes accounting for 1.34s, 65.05% of 2.06s total
Dropped 104 nodes (cum <= 0.01s)
Showing top 10 nodes out of 137
      flat  flat%   sum%        cum   cum%
     0.60s 29.13% 29.13%      0.60s 29.13%  runtime/internal/syscall.Syscall6
     0.42s 20.39% 49.51%      0.42s 20.39%  crypto/aes.encryptBlockGo
     0.08s  3.88% 53.40%      0.09s  4.37%  runtime.scanblock
     0.07s  3.40% 56.80%      0.07s  3.40%  runtime.futex
     0.04s  1.94% 58.74%      0.04s  1.94%  runtime.execute
     0.04s  1.94% 60.68%      0.07s  3.40%  runtime.selectgo
     0.03s  1.46% 62.14%      0.03s  1.46%  sync.(*Mutex).Unlock
     0.02s  0.97% 63.11%      0.02s  0.97%  container/heap.Pop
     0.02s  0.97% 64.08%      0.02s  0.97%  github.com/klauspost/reedsolomon.galMulSliceXor
     0.02s  0.97% 65.05%      0.02s  0.97%  github.com/templexxx/xorsimd.bytes16

$ go version
go version go1.21.0 linux/amd64

$ date
Fri Aug 11 13:04:30 CST 2023

$ ./build-release.sh
Setting GO111MODULE to on
a721f5027ce295c86378f0fbfd1136859f6e7547  kcptun-linux-amd64-20230811.tar.gz
20064f83eee28c825cb00805ecf2ce822a34253a  kcptun-darwin-amd64-20230811.tar.gz
9124aa40bcd69b723acb6cf19b35da7c69873593  kcptun-windows-amd64-20230811.tar.gz
02223d4f724107ba3b20abe2072c6f1cd3fd5976  kcptun-freebsd-amd64-20230811.tar.gz
eeeaa43088328043837bd00464c6a51be0501b56  kcptun-linux-386-20230811.tar.gz
27ac1d2fbdfeee3c21e6a63319d15acbeb3dbba8  kcptun-windows-386-20230811.tar.gz
964b47c9191d0fdb21d6580be3ec2678978d37c2  kcptun-linux-arm5-20230811.tar.gz
8860e4ee94562b05e9b1d4b129ae0259858be358  kcptun-linux-arm6-20230811.tar.gz
51214da760af3a1eed8919c82a488b54ad13b485  kcptun-linux-arm7-20230811.tar.gz
7738a68de048506f75202e6409ee0abb4123231b  kcptun-linux-arm64-20230811.tar.gz
9288bb844a121a2250bf26471e1c305ae22dee16  kcptun-darwin-arm64-20230811.tar.gz
08775d1289936443f9a76f93d78b73c5a3c79255  kcptun-windows-arm64-20230811.tar.gz
503a7d06feefe8eaad228f51827a09e092b968cb  kcptun-linux-mipsle-20230811.tar.gz
e5e76122970c9f9c939dbd08d262d5573c0a4202  kcptun-linux-mips-20230811.tar.gz

Fixed a bug that in rare case kcptun will hang

14 Feb 14:31
Compare
Choose a tag to compare
  1. Fixed a bug in smux that in rare case, kcptun will hang up forever in smux.stream.OpenStream() & smux.stream.Close()
$ go version
go version go1.20 linux/amd64

$ date
Tue Feb 14 22:27:58 CST 2023

$ ./build-release.sh
Setting GO111MODULE to on
1783047eba56c897a7f32a39fef0b6398593cc16  kcptun-linux-amd64-20230214.tar.gz
ac3b1aef1d5e3fb5cdfe4fcad6a8424ca7a18953  kcptun-darwin-amd64-20230214.tar.gz
b15f165a92b8754f7fc72160fec78ea992c647f5  kcptun-windows-amd64-20230214.tar.gz
7f192c2171c543789f33661dde1144c2b9e66bac  kcptun-freebsd-amd64-20230214.tar.gz
9aaaa19753a165276efdada10191a9c6d4f05d16  kcptun-linux-386-20230214.tar.gz
e169df4c8b9f95131e464a4cd171e8b2878ee2c4  kcptun-windows-386-20230214.tar.gz
b3a5b4cecd033b2921854bb09bf30141d089a6fa  kcptun-linux-arm5-20230214.tar.gz
38aed3cfaf7af2128e3fc623ce2447668c18d908  kcptun-linux-arm6-20230214.tar.gz
40432caa951a85b8094938548db232cb379bfcc9  kcptun-linux-arm7-20230214.tar.gz
270f0bbac8bdaf5475494d40318d1cbe013c552f  kcptun-linux-arm64-20230214.tar.gz
08d2e14702010a68bb0ffd2f769c71772af93336  kcptun-darwin-arm64-20230214.tar.gz
ba204001f743a0e870991a217fb4ffbdcc7db1c5  kcptun-windows-arm64-20230214.tar.gz
3bdaef986c882b262132b5909c1092850c5d604a  kcptun-linux-mipsle-20230214.tar.gz
fa7bfc667e490b2f0bba1c8241253a41d8338b2e  kcptun-linux-mips-20230214.tar.gz

possible bugfix in smux

07 Feb 14:20
Compare
Choose a tag to compare
  1. Fixed a possible bug over 4G download.
  2. Fixed a possible leak in kcp-go.
  3. Recompiled with go1.20.
  4. Added windows/arm64 binary release.
  5. updated '-h' display
$ go version
go version go1.20 linux/amd64

$ date
Tue Feb  7 22:19:46 CST 2023

$ ./build-release.sh
Setting GO111MODULE to on
1eb633cfb499b70dd6d61aac68e3ee2b3d34e9a3  kcptun-linux-amd64-20230207.tar.gz
fe8de8387c204e53b32941ad05b1a724f1e890fc  kcptun-darwin-amd64-20230207.tar.gz
db2108fe7c450f842e43fdb126daa05d3315268e  kcptun-windows-amd64-20230207.tar.gz
7937c7b719c80beb5611e799b6683c68a9f7bbbc  kcptun-freebsd-amd64-20230207.tar.gz
96ca06dc92eac7b25a9ce158748a79e09a04376c  kcptun-linux-386-20230207.tar.gz
c23af27e515eba2d05aa5b700fb47ff3711dd909  kcptun-windows-386-20230207.tar.gz
2d1a55c0d901e0ec5f93e9417d0d65de4c6a3599  kcptun-linux-arm5-20230207.tar.gz
6d0fb4a9ff8678a06a473af6892701fb66d527df  kcptun-linux-arm6-20230207.tar.gz
6c07765bc4cfdcfc68c4d68fba885d0ec41da9c2  kcptun-linux-arm7-20230207.tar.gz
dd9f1cc947f64976ebbaf7608d10e0634ebef0ff  kcptun-linux-arm64-20230207.tar.gz
806147f1d607a593d2847811f3c49ea914bf5dba  kcptun-darwin-arm64-20230207.tar.gz
4600c9dc5b20415763af2e6b741015a61c7ab65e  kcptun-windows-arm64-20230207.tar.gz
917b9adb34bf657df7bf4f222483c1b029f426d9  kcptun-linux-mipsle-20230207.tar.gz
a0c6d2bbf4d9061675e669a77e4c104b8c578dee  kcptun-linux-mips-20230207.tar.gz

Add support for port-range dialer, randomized remote port

15 Oct 05:53
Compare
Choose a tag to compare

Add support for port-range dialer , port-range listener, try to specify:

client: --remoteaddr IP:minport-maxport
server: --listen IP:minport-maxport

eg:
client: --remoteaddr IP:3000-4000
server: --listen 0.0.0.0:3000-4000

to test the feature. The client will switch to next randomized port in port range automatically when a connection has expired by '-autoexpire'.

$ go version
go version go1.19.2 linux/amd64

$ date
Sat Oct 15 13:49:53 CST 2022

$ ./build-release.sh
Setting GO111MODULE to on
4b482941ebde8a59e18cd161704d04f0e9814c31  kcptun-linux-amd64-20221015.tar.gz
cbda6c87606355fd6c4f3af644cad1126ca98865  kcptun-darwin-amd64-20221015.tar.gz
8d6231fff71daa818fd064ee0e594f1bdc8891d1  kcptun-windows-amd64-20221015.tar.gz
5df9f4034d1aa8883f6a34a66e8f776a7a995956  kcptun-freebsd-amd64-20221015.tar.gz
7d8287daff5011bbffc5f1c04dbe73891780b913  kcptun-linux-386-20221015.tar.gz
b7afed2eec47fbc7ac268bdb555cced38bafce8f  kcptun-windows-386-20221015.tar.gz
d8691d7e769a312e19dd573a1c87d4dcb1b0b2cb  kcptun-darwin-arm64-20221015.tar.gz
f4dd3d350430f7579ba327654effe55015db6675  kcptun-linux-arm5-20221015.tar.gz
2f699c0d934814689dcccd257f1304e4668bff1d  kcptun-linux-arm6-20221015.tar.gz
2c6f35641c8afbed4da7e37fe83f7cef2c2b0cbd  kcptun-linux-arm7-20221015.tar.gz
23dfdd553264d3b4f7ff2353fbef970759e8cdc0  kcptun-linux-arm64-20221015.tar.gz
69354b75910a7489596dce18eaab612d89d2b9bd  kcptun-linux-mipsle-20221015.tar.gz
0b1d7870baf08b3739bbf96458ed26755346a3e2  kcptun-linux-mips-20221015.tar.gz

Recompiled with golang 1.18.3

28 Jun 02:33
c5232c2
Compare
Choose a tag to compare
  1. Recompiled with golang 1.18.3
  2. Deps Updated
  3. Added missing vendor files
$ go version
go version go1.18.3 linux/amd64

$ date
Mon Jun 27 22:05:11 CST 2022

$ ./build-release.sh
Setting GO111MODULE to on
2c3793aafa5dd7ab3cccfc61fbe22a2677da26cf  kcptun-linux-amd64-20220628.tar.gz
7fe5a3a2218b9ca7c4ca69a0440f62a68c539089  kcptun-darwin-amd64-20220628.tar.gz
691aaa4070a6908834d7471569d7938d7af22277  kcptun-windows-amd64-20220628.tar.gz
57d414098d41778ccb901b1f62c37948583abf50  kcptun-freebsd-amd64-20220628.tar.gz
73ac8c15245515dfcbc01e3d1d90388c3877b47d  kcptun-linux-386-20220628.tar.gz
7de19bad0ad15a6f61b9051af86a74edf9dee10c  kcptun-windows-386-20220628.tar.gz
58f2f166c94d60d0bca34192c595c176b44dca24  kcptun-darwin-arm64-20220628.tar.gz
cd881ecc3b8aef6a97bc5e351fad6f95a0c16d1f  kcptun-linux-arm5-20220628.tar.gz
1af3acd78c900e90390a3e9c1ff896d8dd55cdef  kcptun-linux-arm6-20220628.tar.gz
6faf770aa6970f928b21bf38e00e90eac4273b88  kcptun-linux-arm7-20220628.tar.gz
915c27ba5b1a589f4e93c509777b373ee99b7984  kcptun-linux-arm64-20220628.tar.gz
6b6085fc021cbeb94b460d772f171a150621021c  kcptun-linux-mipsle-20220628.tar.gz
30758b70d3ac44aebc8a361173def20ed58f9d67  kcptun-linux-mips-20220628.tar.gz

Recompiled with golang 1.18.3

27 Jun 14:08
Compare
Choose a tag to compare
  1. Recompiled with golang 1.18.3
  2. Deps Updated
$ go version
go version go1.18.3 linux/amd64

$ date
Mon Jun 27 22:05:11 CST 2022

$ ./build-release.sh
Setting GO111MODULE to on
010eefef5ddad8733f53ec8bb3e7a9d1bfc890ed  kcptun-linux-amd64-20220627.tar.gz
af40a179049330fc9e76b3fe51eef4d365d5be4e  kcptun-darwin-amd64-20220627.tar.gz
4e8e62c6a4b43acd73b69665e88f37d2372d6362  kcptun-windows-amd64-20220627.tar.gz
7bbdefca3c4b833df3d7e3d85fd1109673ae8a61  kcptun-freebsd-amd64-20220627.tar.gz
dadd03cacb4e6d17e58878acfcf202d96849e755  kcptun-linux-386-20220627.tar.gz
ef8619f0e6aadc48dcace09692af2cd9aec4fe2a  kcptun-windows-386-20220627.tar.gz
9237640f4551cbbf548445fd31699e47ee32c6f0  kcptun-darwin-arm64-20220627.tar.gz
f3b96825d5cfb026b301726a22e2f571ed0c862c  kcptun-linux-arm5-20220627.tar.gz
f13275ebf465cf4a01fc379e9817c3b702379fdc  kcptun-linux-arm6-20220627.tar.gz
1ed4e05932abf7d8ede36361b7163de9794df2db  kcptun-linux-arm7-20220627.tar.gz
c89972dea6f44ba42287be0602ab8111c4af667c  kcptun-linux-arm64-20220627.tar.gz
befcebca293c830bd2f00d9f99493fecc5bab6c4  kcptun-linux-mipsle-20220627.tar.gz
65536e75c05499e3e9dcb329ff6a0da51fd40a27  kcptun-linux-mips-20220627.tar.gz

Bugfix in smux and Recompiled with go1.17

22 Sep 13:53
Compare
Choose a tag to compare
  1. Recompiled with golang 1.17.1
  2. Bugfix in smux xtaci/smux@09e2c01, which affects BIG data transfer.
$ go version
go version go1.17.1 linux/amd64

$ date
Wed Sep 22 21:48:58 CST 2021

$ ./build-release.sh
Setting GO111MODULE to on
2b39996bb12942f1a407723f1811b834ad9e625b  kcptun-linux-amd64-20210922.tar.gz
5ea39528d799d872f533cf1466d350ab630957db  kcptun-darwin-amd64-20210922.tar.gz
68b7ee324cc03497618533f7a0358c481e3de3f0  kcptun-windows-amd64-20210922.tar.gz
cc00da66eb533132d9e8fc87fec050ddc43e3492  kcptun-freebsd-amd64-20210922.tar.gz
3a94c60a7d348a95dc380697f836fb1888363166  kcptun-linux-386-20210922.tar.gz
d15d3262cbbcabdce7e121452787b52a5c141cf3  kcptun-windows-386-20210922.tar.gz
628231e42a8d2f17b2d0b37197fc67261835306c  kcptun-darwin-arm64-20210922.tar.gz
a02943e8127950f470a2b8175fd6e5cf9f0ec4e1  kcptun-linux-arm5-20210922.tar.gz
d41bf8b68e8266996596bf54d252477c0075ac85  kcptun-linux-arm6-20210922.tar.gz
f9ce33286925318339d0fbc2acd9c8c11414444f  kcptun-linux-arm7-20210922.tar.gz
4d58165e35206531b6282cb202a566e94a3747ee  kcptun-linux-arm64-20210922.tar.gz
22cf706774063ddf0c0bb8107128cf66eb8bb3c6  kcptun-linux-mipsle-20210922.tar.gz
dcb65e38c61454de2dbf97a12bbb807a6b55e128  kcptun-linux-mips-20210922.tar.gz

Recompiled with go1.16.5 and Add Release binary for Apple M1

24 Jun 03:51
Compare
Choose a tag to compare
  1. Recompiled with golang 1.16.5
  2. Add Release for Apple M1 (darwin-arm64)
$ go version
go version go1.16.5 linux/amd64

$ date
Thu Jun 24 11:48:34 CST 2021

╰─$ ./build-release.sh
Setting GO111MODULE to on
2656cd28cb4e9aabe2a5cbf6e2805c3ef693ca69  kcptun-linux-amd64-20210624.tar.gz
c7e9f3280f1decee02de2cc0b5b7408993bbc279  kcptun-darwin-amd64-20210624.tar.gz
5a642aa6f7311b46d1fff5eed35167d330b967d6  kcptun-windows-amd64-20210624.tar.gz
ec473cdaa2e150e3322790ce6f0937c8cc8c4c56  kcptun-freebsd-amd64-20210624.tar.gz
e83edf0da02f0010826ab8e420d555a21ac36441  kcptun-linux-386-20210624.tar.gz
df4403f8899dfbfd08adafe77c965f62fc76931d  kcptun-windows-386-20210624.tar.gz
df8e48dd2bef6a803d51324ba89cbd2a006c8982  kcptun-darwin-arm64-20210624.tar.gz
4ba5e1917de8642a8e9c20314c55f9967d10ceaa  kcptun-linux-arm5-20210624.tar.gz
955f36d5dbabfaf50fb1cdf1613f06f45e6e4b80  kcptun-linux-arm6-20210624.tar.gz
2450cd5eeabad16e5c50a3c866c3fa3b55ec5ced  kcptun-linux-arm7-20210624.tar.gz
fe39a6945846b97f1e9917e1ec77d3313502f31a  kcptun-linux-arm64-20210624.tar.gz
402c182c051da98f2667859af8b6e99396629cdc  kcptun-linux-mipsle-20210624.tar.gz
a30f57644d4eda6d892e6c901bc5e952800709cf  kcptun-linux-mips-20210624.tar.gz