Skip to content

Releases: gogf/gf

GoFrame Release v2.10.2

14 May 08:15
9a91bd2

Choose a tag to compare

What's Changed

  • fix: update gf cli to v2.10.1 by @github-actions[bot] in #4770
  • refactor(cmd/gf): improve code structure for readability and maintainability by @hailaz in #4771

Full Changelog: v2.10.1...v2.10.2

GoFrame Release v2.10.1

14 May 05:43
078c1bc

Choose a tag to compare

What's Changed

  • fix: update gf cli to v2.10.0 by @github-actions[bot] in #4658
  • docs: Update README Add DeepWiki badges by @hailaz in #4661
  • test(contrib/drivers/gaussdb): add builder, subquery, join, struct test coverage by @lingcoder in #4688
  • test(contrib/drivers/pgsql): add Builder/Subquery/Join/Struct tests by @lingcoder in #4680
  • fix(registry/etcd): etcd.NewWithClient() has no DialTimeout by @shengdoushi in #4670
  • fix(contrib/registry): etcd doKeepAlive does not exit even when client context done by @yuluo-yx in #4669
  • chore: cleanup makefile, remove unnecessary scripts by @gqcn in #4684
  • test(contrib/drivers/gaussdb): add union, DO, raw where test coverage by @lingcoder in #4687
  • test(contrib/drivers/pgsql): add Union, DO and Raw Where test coverage by @lingcoder in #4679
  • feat(i18n/gi18n): decoding and loading i18n files content by automatic file extension check by @The-night-elves in #4662
  • test(contrib/drivers/gaussdb): add transaction, where, hook, ctx test coverage by @lingcoder in #4685
  • test(contrib/drivers/pgsql): add transaction, where, hook, ctx test coverage by @lingcoder in #4675
  • feat(os/gcfg): add GetEffective method with standard config priority by @lingcoder in #4673
  • feat(gcrypto/gsha512): add sha512 implements by @yuluo-yx in #4667
  • test(contrib/drivers/pgsql): add SoftTime, With, ScanList test coverage by @lingcoder in #4676
  • test(contrib/drivers/gaussdb): add soft time, with, scanlist test coverage by @lingcoder in #4686
  • test(contrib/drivers/mysql): add Lock/Omit/Cache/Batch tests by @lingcoder in #4706
  • fix(database/gdb): handle empty string in Fields() gracefully by @lingcoder in #4700
  • test(contrib/drivers/mysql): add concurrent/Hook/Ctx tests by @lingcoder in #4708
  • test(contrib/drivers/mysql): add MySQL-specific feature tests by @lingcoder in #4709
  • test(contrib/drivers/mysql): enhance complex query tests by @lingcoder in #4707
  • test(contrib/drivers/mysql): enhance data type tests by @lingcoder in #4705
  • test(contrib/drivers/mysql): enhance transaction tests by @lingcoder in #4704
  • fix(database/gdb): treat negative Limit/Page/Offset values as zero by @lingcoder in #4702
  • fix(databse/gdb): use COUNT(1) if fields number is greater than 1 even when parameter useFieldForCount is true in AllAndCount/ScanAndCount by @lingcoder in #4701
  • fix(os/gstructs): strip tag options in TagPriorityName to avoid field name pollution by @lingcoder in #4681
  • fix(contrib/drivers/pgsql): preserve bytea data integrity on read and write by @lingcoder in #4678
  • test(contrib/drivers/mysql): add pagination and error handling tests by @lingcoder in #4703
  • test(contrib/drivers/mariadb): add pagination, error, concurrent, rawtype and sharding tests by @lingcoder in #4723
  • test(contrib/drivers/mariadb): add builder, struct, join, batch, cache and omit tests by @lingcoder in #4722
  • test(contrib/drivers/mariadb): add softtime, with, scanlist, union and do tests by @lingcoder in #4721
  • test(contrib/drivers/mariadb): add transaction, where, hook and ctx tests by @lingcoder in #4720
  • test(contrib/drivers/mariadb): add infrastructure, core and model tests by @lingcoder in #4719
  • fix(contrib/drivers/mysql): use unreachable port for nodeInvalid test config by @lingcoder in #4726
  • fix(database/gdb): strip quote chars from schema in Model.TableFields by @lingcoder in #4730
  • test(contrib/drivers/mariadb): add layer 3 features and issue regression tests by @lingcoder in #4724
  • fix: guard os.Args access for wasm which panics when building by @gqcn in #4762
  • feat(cmd/gf): add gendao fileNameCase and ai coding stuffs by @gqcn in #4764
  • feat: new version v2.10.1 by @gqcn in #4769

New Contributors

Full Changelog: v2.10.0...v2.10.1

GoFrame Release v2.10.0

26 Jan 12:53
8c8c7c8

Choose a tag to compare

What's Changed

Feature

  • feat: update linter config and deprecation notice by @houseme in #4399
  • feat(ci): upgrade workflow checkout version v5 by @houseme in #4381
  • feat(cmd/gendao): add wildcard pattern support for tables configuration by @lingcoder in #4632
  • feat(cmd/gf): add broad matching to gf gen dao's tableEx attribute. by @joy999 in #4453
  • feat(cmd/gf): Add support for the Loongson architecture (loong64) by @LanceAdd in #4467
  • feat(cmd/gf): improve and enhance gen ctrl by @oldme-git in #4325
  • feat(cmd/gf): improve gf run watching by @hailaz in #4573
  • feat(cmd/gf): init update by @hailaz in #4572
  • feat(container): Add NewXXXWithChecker function for gmap/gset/gtree by @LanceAdd in #4610
  • feat(container/garray): add TArray by @joy999 in #4466
  • feat(container/garray): enhance generic array implements by @joy999 in #4482
  • feat(container/garray): Sorted T Array by @joy999 in #4470
  • feat(container/glist): add generic list feature by @joy999 in #4483
  • feat(container/gmap): add generic list map feature by @joy999 in #4520
  • feat(container/gmap): add generic map feature by @joy999 in #4484
  • feat(container/gpool): add generic pool feature by @joy999 in #4493
  • feat(container/gqueue): add generic queuefeature by @joy999 in #4497
  • feat(container/gring): add generic ring feature by @joy999 in #4496
  • feat(container/gset): add generic set feature by @joy999 in #4492
  • feat(container/gtree): add generic tree feature by @joy999 in #4522
  • feat(contrib/drivers): more database drivers by @gqcn in #4553
  • feat(contrib/drivers/dm): add Replace/InsertIgnore support and field type/length enhancements for dm database by @gqcn in #4541
  • feat(contrib/drivers/dm): add WherePri support by @tiger1103 in #4157
  • feat(contrib/drivers/dm&pgsql&mssql&oracle): add Replace/LastInsertId features support for dm/pgsql/mssql/oracle by @gqcn in #4547
  • feat(contrib/drivers/gaussdb): add gaussdb driver support by @gqcn in #4563
  • feat(contrib/drivers/mssql): mssql support LastInsertId by @lxy1151 in #4051
  • feat(contrib/drivers/pgsql): add array type numeric[] and decimal[] converting to Go []float64 support #4457 by @The-night-elves in #4511
  • feat(contrib/drivers/pgsql): more field types converting support by @ivothgle in #3737
  • feat(contrib/registry): update nacos sdk to 2.3.5 by @yuluo-yx in #4628
  • feat(contrib/registry/nacos): add SetDefaultEndpoint and SetDefaultMetadata methods by @wangle201210 in #4608
  • feat(crypto): add gsha256 by @joy999 in #4558
  • feat(crypto/grsa): Add RSA encryption and decryption function by @LanceAdd in #4571
  • feat(database/gdb): add MaxIdleConnTime configuration for SetConnMaxIdleTime support by @lingcoder in #4625
  • feat(database/gdb): Add the function of obtaining all configurations to facilitate business operations such as verification after addition. by @sxp20008 in #4389
  • feat(database/gdb): Optimize SoftTime feature by @LanceAdd in #4559
  • feat(gdb): Allow to set table field metadata and allow to generate table fields registration code when generating dao by @LanceAdd in #4460
  • feat(gdb/gdb_model_lock.go): gdb support lock update skip locked by @smzgl in #4607
  • feat(instance): migrate instance containers to type-safe generics by @LanceAdd in #4617
  • feat(net/ghttp): enhance GetHeader method to support default values by @hailaz in #4210
  • feat(os/gcfg): Add file watcher with custom callback support by @LanceAdd in #4446
  • feat(os/gcfg): add Loader with automatic struct binding and config watching (like Spring Boot @ConfigurationProperties) by @LanceAdd in #4575
  • feat(os/gfile): add MatchGlob function with globstar support (#4570) by @hailaz in #4574
  • feat(util/gconv): Add OmitEmpty and OmitNil options to Scan function by @LanceAdd in #4584
  • feat(util/gpage): marked deprecated by @gqcn in #4230
  • feat(util/gvalid): add more rules: alpha,alpha-dash,alpha-num,lowercase,numeric,uppercase by @yuluo-yx in #4601

Enhancement

  • perf(net/gclient): optimize default http.Transport connection pool configuration by @lxzan in #4390
  • refactor: interface{} to any and reflect.Ptr to reflect.Pointer by @hailaz in #4395
  • refactor(cmd/gf): Optimize run command to reload only on actual file changes by @windvalley in #4476
  • refactor(container): add default nil checker, rename RegisterNilChecker to SetNilChecker, migrate instance containers to type-safe generics by @LanceAdd in #4630
  • refactor(contrib/clickhouse): optimization clickhouse by @wanghaolong613 in #4499
  • refactor(database/gdb): add quote for FieldsPrefix by @hicolin in #4485
  • refactor(database/gdb): simplify order and group by alias quoting by @lingcoder in #4555
  • refactor(encoding/gjson): enhance auto type checks when loading data without type specified by @gqcn in #4637
  • refract(gerror): add ITextArgs interface and its implements, mainly for i18n that needs text and args separately by @gqcn in #4597

Bug Fixes

  • fix: #4269 by @hailaz in #4412
  • fix: disable specific staticcheck rules and update lint config by @houseme in #4396
  • fix: Improve the typeMap check logic of "gf gen dao" by @joy999 in #4410
  • fix: path ./cmd/gf by @hailaz in #4414
  • fix: report coverage on the latest go version by @hailaz in #4398
  • fix: revert #4388 by @hailaz in #4392
  • fix: spacing in min value validation message by @houseme in #4388
  • fix: the use of the deprecated variable {format} in the file util/gval… by @shubo83 in #4258
  • fix: update copyright notice in multiple files to specify correct file reference by @hailaz in #4518
  • fix: Update dependencies and exclude test data from go.mod processing by @hailaz in #4415
  • fix: update dependencies to version v2.9.1 for various contrib modules and drivers by @hailaz in #4386
  • fix:(cmd/gf): matching for table ex fix bug by @joy999 in #4458
  • fix(ci): add cache cleaning step to prevent 'no space left on device' errors by @hailaz in #4513
  • fix(ci): change base image from expired ubuntu-22.04 to ubuntu-latest by @gqcn in #4273
  • fix(ci): Free Disk Space by @hailaz in #4529
  • fix(ci): update script permissions and add docker cleanup functionality by @hailaz in #4523
  • fix(cmd/gendao): fix overlapping shardingPattern matching issue by @lingcoder in #4631
  • fix(cmd/gf): "unknown time zone" when using "gf gen dao" for clickhouse on windows platform by @joy999 in #4368
  • fix(cmd/gf): add extra option to controller the behavior downloading … by @wanghaolong613 in #4435
  • fix(cmd/gf): fix gen sharding dao in multiple shardingPattern tables … by @fainc in #4379
  • fix(cmd/gf): fix genservice losing versioned import paths (#4242) by @lingcoder in #4638
  • fix(cmd/gf): fix gf env and gf build --dumpEnv command error by @lingcoder in #4635
  • fix(cmd/gf): fix gf gen dao with removeFieldPrefix by @zhang5788 in #4243
  • fix(cmd/gf): fix gf gen enums output path error when using relative path by @lingcoder in #4636
  • fix(cmd/gf): Fixed an issue where formatting caused import errors in gf init by @hailaz in #4598
  • fix(cmd/gf): improve init command with version retry and gofmt support by @hailaz in #4592
  • fix(cmd/gf): run AddSigHandlerShutdown cannot work well) by @wanghaolong613 in #4441
  • fix(cmd/gf): The problem of the command 'gen dao' becoming very slow by @hailaz in #4498
  • fix(container): Add NilChecker Support to gmap, gset, and gtree for Typed Nil Issue Resolution by @LanceAdd in https://github.com/gogf/gf...
Read more

GoFrame Release v2.9.8

16 Jan 08:20
c9641ea

Choose a tag to compare

What's Changed

  • fix: update gf cli to v2.9.7 by @github-actions[bot] in #4579
  • feat(cmd/gf): improve and enhance gen ctrl by @oldme-git in #4325
  • fix(gf/gen): Fixed a problem that could cause duplication when generating wit… by @DustScribe in #4268
  • test(errors/gcode,gerror): add unit tests for error handling interfaces and methods by @hailaz in #4586
  • fix(cmd/gf): improve init command with version retry and gofmt support by @hailaz in #4592
  • fix(contrib/drivers): resolve field duplication issue when same table/column names exist across different MySQL/MariaDB databases by @smzgl in #4577
  • refract(gerror): add ITextArgs interface and its implements, mainly for i18n that needs text and args separately by @gqcn in #4597
  • fix(cmd/gf): Fixed an issue where formatting caused import errors in gf init by @hailaz in #4598
  • fix(os/gcfg): adjust priority of env|cmd higer than config file (#4074) by @yangyanqing in #4587
  • chore: translte zh comment to en by @yuluo-yx in #4591
  • ci(docker-services): change chinese printing message to english by @gqcn in #4599
  • fix(container): Add NilChecker Support to gmap, gset, and gtree for Typed Nil Issue Resolution by @LanceAdd in #4605
  • fix(net/goai): add openapi uuid.UUID type support by @joy999 in #4604
  • fix(util/gconv): gconv unsafe str to bytes by @liov in #4600
  • fix(database/gdb): skip field filtering when table/alias is unknown in FieldsPrefix by @lingcoder in #4602
  • feat(gdb/gdb_model_lock.go): gdb support lock update skip locked by @smzgl in #4607
  • feat(container): Add NewXXXWithChecker function for gmap/gset/gtree by @LanceAdd in #4610
  • feat(‎contrib/registry/nacos): add SetDefaultEndpoint and SetDefaultMetadata methods by @wangle201210 in #4608
  • feat(util/gvalid): add more rules: alpha,alpha-dash,alpha-num,lowercase,numeric,uppercase by @yuluo-yx in #4601
  • fix(‎database/gdb): fix iTableName interface detection when using WithAll with .Scan on reflect.Value objects by @smzgl in #4606
  • fix(util/gconv): fix nested map conversion data loss in MapToMap by @lingcoder in #4612
  • feat(util/gconv): Add OmitEmpty and OmitNil options to Scan function by @LanceAdd in #4584
  • fix(database/gdb): Resolve the cache error overwriting caused by the use of fixed cache keys in pagination queries. by @LanceAdd in #4339
  • fix: the use of the deprecated variable {format} in the file util/gval… by @shubo83 in #4258
  • fix(contrib/drivers/gaussdb): remove github.com/lib/pq dependence by @hailaz in #4615
  • fix(‎database/gdb):Fix panic handling in DoCommit to prevent blocking on database driver panics by @Copilot in #4423
  • fix(database/gdb): Raw SQL Count ignores Where condition by @lingcoder in #4611
  • feat(instance): migrate instance containers to type-safe generics by @LanceAdd in #4617
  • fix: v2.9.8 by @hailaz in #4616

New Contributors

Full Changelog: v2.9.7...v2.9.8

GoFrame Release v2.9.7

27 Dec 09:36
dd62b18

Choose a tag to compare

What's Changed

  • fix: update gf cli to v2.9.6 by @github-actions[bot] in #4538
  • ci(release): disable go module caching in release workflow by @Copilot in #4539
  • feat(contrib/drivers/dm): add Replace/InsertIgnore support and field type/length enhancements for dm database by @gqcn in #4541
  • feat(contrib/drivers/pgsql): more field types converting support by @ivothgle in #3737
  • fix(net/ghttp): Fix specification routing custom parameter recognition exception by @hailaz in #4549
  • feat(contrib/drivers/dm&pgsql&mssql&oracle): add Replace/LastInsertId features support for dm/pgsql/mssql/oracle by @gqcn in #4547
  • feat(contrib/drivers): more database drivers by @gqcn in #4553
  • feat(database/gdb): Optimize SoftTime feature by @LanceAdd in #4559
  • feat(crypto): add gsha256 by @joy999 in #4558
  • fix(cmd/gf): fix gf gen dao with removeFieldPrefix by @zhang5788 in #4243
  • feat(contrib/drivers/gaussdb): add gaussdb driver support by @gqcn in #4563
  • fix(net/ghttp): fix #4567 by @LanceAdd in #4569
  • feat(cmd/gf): init update by @hailaz in #4572
  • feat(os/gfile): add MatchGlob function with globstar support (#4570) by @hailaz in #4574
  • feat(cmd/gf): improve gf run watching by @hailaz in #4573
  • refactor(database/gdb): simplify order and group by alias quoting (bu… by @lingcoder in #4555
  • feat(‎crypto/grsa): Add RSA encryption and decryption function by @LanceAdd in #4571

New Contributors

Full Changelog: v2.9.6...v2.9.7

GoFrame Release v2.9.6

04 Dec 03:51
bb9133a

Choose a tag to compare

What's Changed

Features (feat)

  • feat(container/garray): enhance generic array implements by @joy999 in #4482
  • feat(container/glist): add generic list feature by @joy999 in #4483
  • feat(container/gset): add generic set feature by @joy999 in #4492
  • feat(container/gpool): add generic pool feature by @joy999 in #4493
  • feat(container/gring): add generic ring feature by @joy999 in #4496
  • feat(container/gqueue): add generic queuefeature by @joy999 in #4497
  • feat(container/gmap): add generic map feature by @joy999 in #4484
  • feat(container/gmap): add generic list map feature by @joy999 in #4520
  • feat(container/gtree): add generic tree feature by @joy999 in #4522
  • feat(contrib/drivers/pgsql): add array type numeric[] and decimal[] converting to Go []float64 support #4457 by @The-night-elves in #4511
  • feat(contrib/drivers/dm): add WherePri support by @tiger1103 in #4157

Fixes (fix)

  • fix: update gf cli to v2.9.5 by @github-actions[bot] in #4507
  • fix: update copyright notice in multiple files to specify correct file reference by @hailaz in #4518
  • fix: v2.9.6 by @hailaz in #4537
  • fix(encoding/gjson): fix gjson data race by @973212983 in #4510
  • fix(net/goai): swagger $ref replace by @xiaoyi510 in #4512
  • fix(contrib/config/apollo): where gcfg config apollo failed to retrieve configurations for multiple namespaces, where watch apollo change resulted in missing configurations. by @xiongchao123 in #4509
  • fix(contrib/drivers/pgsql): Fixed the problem of overlapping fields in the same table name in pgsql multiple schema mode by @iamcc30 in #4375
  • fix(contrib/drivers/dm): support muti-line sql statement (#4163) by @sanrentai in #4164
  • fix(contrib/drivers/mssql): update tables SQL query for better compatibility by @li-zheng-hao in #4170
  • fix(os/gcfg): ignore fsnotify event error to avoid package gcfg totally failing by @aitimate in #4400
  • fix(database/gdb): Resolve column ambiguity in GROUP BY/ORDER BY with MySQL JOIN by @ljluestc in #4521
  • fix(ci): add cache cleaning step to prevent 'no space left on device' errors by @hailaz in #4513
  • fix(ci): update script permissions and add docker cleanup functionality by @hailaz in #4523
  • fix(ci): Free Disk Space by @hailaz in #4529

Refactors (refactor)

Docs (docs)

  • docs: update Chinese documentation and add README.zh_CN.MD by @hailaz in #4534

New Contributors

Full Changelog: v2.9.5...v2.9.6

GoFrame Release v2.9.5

10 Nov 13:54
1e3aa5f

Choose a tag to compare

What's Changed

  • fix: update gf cli to v2.9.4 by @github-actions[bot] in #4463
  • fix(contrib/drivers/pgsql): Merge duplicated fields, especially for key constraints. by @wangle201210 in #4465
  • feat(cmd/gf): Add support for the Loongson architecture (loong64) by @LanceAdd in #4467
  • fix(os/gcache): defaultcache lazy init by @wanghaolong613 in #4468
  • feat(container/garray): add TArray by @joy999 in #4466
  • fix(os/gcron): unit testing case of package gcron occasionally failed by @wanghaolong613 in #4419
  • feat(gdb): Allow to set table field metadata and allow to generate table fields registration code when generating dao by @LanceAdd in #4460
  • fix(net/gclient): fix content-type 'application/json;charset=utf-8' … by @wanghaolong613 in #4369
  • feat(os/gcfg): Add file watcher with custom callback support by @LanceAdd in #4446
  • build(contrib): upgrade nacos registry&config by @lingcoder in #4473
  • refactor(cmd/gf): Optimize run command to reload only on actual file changes by @windvalley in #4476
  • feat(‎container/garray): Sorted T Array by @joy999 in #4470
  • fix(cmd/gf): The problem of the command 'gen dao' becoming very slow by @hailaz in #4498
  • fix: v2.9.5 by @hailaz in #4503

Full Changelog: v2.9.4...v2.9.5

GoFrame Release v2.9.4

11 Oct 07:17
2b7b4c8

Choose a tag to compare

What's Changed

  • fix: update gf cli to v2.9.3 by @github-actions[bot] in #4418
  • fix(database/gredis): gredis support get raw client by @YunzhiYike in #4306
  • docs(i18n/gi18n): deleting the duplicate package documents by @qiulaidongfeng in #4251
  • feat(database/gdb): Add the function of obtaining all configurations to facilitate business operations such as verification after addition. by @sxp20008 in #4389
  • ci: Add Scorecard workflow for supply-chain security by @hailaz in #4437
  • ci: Add CodeQL analysis workflow configuration by @hailaz in #4436
  • fix(cmd/gf): add extra option to controller the behavior downloading … by @wanghaolonggit in #4435
  • fix(cmd/gf): run AddSigHandlerShutdown cannot work well) by @wanghaolonggit in #4441
  • fix(database/gdb): performance improvement in fields grouping when in… by @wanghaolonggit in #4440
  • fix(gerror): Fixed serialization failure issue when gerror.Error text field contains quote symbols by @chen-mou in #4449
  • fix(net/ghttp): Server Domain if is empty str, bind handler pattern will add @ which is not expect #4100 by @elonnzhang in #4101
  • fix(database/gdb): Fix GetArray return type and add Bools method by @hailaz in #4452
  • feat(contrib/drivers/mssql): mssql support LastInsertId by @lxy1151 in #4051
  • fix(database/gdb): Resolved the schema error in the database output log when using the database sharding feature by @LanceAdd in #4319
  • fix(container/gqueue): Optimize queue length calculation and loop structure in test cases by @hailaz in #4455
  • feat(cmd/gf): add broad matching to gf gen dao's tableEx attribute. by @joy999 in #4453
  • fix(contrib/drivers/mysql): Fix unit test issue for batch insert in MySQL driver by @hailaz in #4456
  • fix:(cmd/gf): matching for table ex fix bug by @joy999 in #4458
  • fix(net/ghttp): attachment filename support utf8 by @wanghaolonggit in #4459
  • fix: v2.9.4 by @hailaz in #4461

New Contributors

Full Changelog: v2.9.3...v2.9.4

GoFrame Release v2.9.3

03 Sep 04:59
627aa5d

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.9.2...v2.9.3

GoFrame Release v2.9.2

01 Sep 07:46
502d158

Choose a tag to compare

What's Changed

  • fix: update dependencies to version v2.9.1 for various contrib modules and drivers by @hailaz in #4386
  • fix: spacing in min value validation message by @houseme in #4388
  • fix: revert #4388 by @hailaz in #4392
  • perf(net/gclient): optimize default http.Transport connection pool configuration by @lxzan in #4390
  • refactor: interface{} to any and reflect.Ptr to reflect.Pointer by @hailaz in #4395
  • fix(net/ghttp): wrong in-tag param parse for query param (#4227) by @UncleChair in #4228
  • chore: add OpenSSF Scorecard for README.md by @fengshunli in #3696
  • fix: disable specific staticcheck rules and update lint config by @houseme in #4396
  • feat: update linter config and deprecation notice by @houseme in #4399
  • fix(net/goai): fix g.Meta is passed as parameters of a request by @wanghaolonggit in #4397
  • fix: report coverage on the latest go version by @hailaz in #4398
  • chore(tablewriter): upgrade to v1.0.9 and refactor table rendering logic by @zishang520 in #4352
  • fix: version 2.9.2 by @hailaz in #4405

New Contributors

Full Changelog: v2.9.1...v2.9.2