What's Changed
feature
- feat(cmd/gf): add
DaMeng
database driver support by @Insua in #3606 - feat(cmd/gf): add command
gf doc
for local documentation by @hailaz in #3634 - feat(cmd/gf): add command
gf init xxx -a
to create an empty app template folder in mono-repo by @oldme-git in #3550 - feat(cmd/gf): add custom field type mapping support for command
gf gen dao
by @cyjaysong in #3498 - feat(cmd/gf): change document source from repo
gf
togf-site
by @hailaz in #3926 - feat(cmd/gf): project template updates for command
gf init
by @gqcn in #3928 - feat(cmd/gf): project templates update for command
gf init
by @gqcn in #3704 - feat(contrib/drivers/pgsql): add InsertIgnore support by @wwwfeng in #3855
- feat(contrib/drivers/pgsql): support slice type to insert into array for pgsql by @oldme-git in #3645
- feat(contrib/registry/etcd/): add
DialTimeout
andAutoSyncInterval
option by @fengshunli in #3698 - feat(contrib/rpc/grpcx): use grpc.NewClient instead of grpc.Dial by @oldme-git in #3684
- feat(contrib/sdk/httpclient): add custom response handler support, fixe #3539 by @jswxstw in #3540
- feat(database/gdb): add Exist support for checking records existance for certain condition by @cyjaysong in #3854
- feat(database/gdb): add
Raw
support forFields
function ofgdb.Model
by @gqcn in #3873 - feat(database/gdb): add
time
field type for value converting for/from field by @cyjaysong in #3712 - feat(database/gdb): add
unscoped
tag support for orm struct by @fainc in #3464 - feat(database/gdb): add year field type support for ORM operations by @gqcn in #3805
- feat(database/gdb): remove unnecessary blank character requirement in tag for With feature of gdb.Model by @gqcn in #3875
- feat(database/gdb): support
OrderRandom
feature in different databases by @oldme-git in #3794 - feat(database/gredis): add
Scan
method for incremental key retrieval by @phuonganhniie in #3451 - feat(encoding/ghtml): add parameter validation for function
SpecialCharsMapOrStruct
by @gqcn in #3841 - feat(net/ghttp): remove
Req/Res
suffix limitation for input/output parameters of strict router handler by @gqcn in #3848 - feat(net/goai): enhance openapi doc with responses and examples by @UncleChair in #3859
- feat(os/gcron): add graceful shutdown support by @vector233 in #3625
- feat(os/gfsnotify): add recursive watching for created subfolders and sub-files under folders that already watched by @gqcn in #3830
- feat(trace): add trace example for custom trace client and provider by @houseme in #3847
- feat(util/gvalid): add
171
series number support for virtual phone number validation by @swift-fs in #3622 - feat(util/gvalid): add new rule
required-if-all
by @cococolanosugar in #3455
enhancement
- perf(database/gdb): performance improvement for struct scanning when with feature disabled by @wln32 in #3677
- perf(driver/pgsql): optimize regex for version matching by @yincongcyincong in #3583
- perf(util/gconv): add cache logic to enhance performance by @wln32 in #3673
- perf(util/gconv): improve performance for struct converting by @wln32 in #3412
- perf(util/gconv): remove unnecessary logic for function doScanList by @oldme-git in #3588
- refactor(cmd/gf): delete binary file when command
gf run
ends process by @oldme-git in #3628 - refactor(cmd/gf): improve
gf gen ctrl
usingast
by @oldme-git in #3616 - refactor(cmd/gf): improve command
gf gen ctrl
usingast
by @oldme-git in #3470 - refactor(cmd/gf): improve command
gf gen ctrl
usingast
for parsingDstFolder
by @oldme-git in #3478 - refactor(cmd/gf): refactor command
gf gen service
withAST
by @oldme-git in #3488 - refactor(cmd/gf): use automatic generating package names for go files of
dao/do/entity
instead of constant package names by @Insua in #3639 - refactor(container/gring): mark deprecated, package
container/gring
will not be maintained in future by @gqcn in #3665 - refactor(container/gtree): refactor code with gods package by @oldme-git in #3595
- refactor(contrib/registry/nacos): use official nacos sdk instead of the third-party nacos sdk by @lingcoder in #3745
- refactor(contrib/trace/jaeger): remove trace jaeger, please use the OpenTelemetry SDKs(otlphttp&otlpgrpc) by @houseme in #3825
- refactor(database/gdb): remove duplicated SQL records in tracing events by @houseme in #3659
- refactor(drivers/mssql): change driver from
github.com/denisenkom/go-mssqldb
togithub.com/microsoft/go-mssqldb
by @oldme-git in #3612 - refactor(drivers/pgsql): pgsql returning id should use quotation marks,when primary key is capital by @Insua in #3638
- refactor(encoding/gjson): change data parameter from type any to []byte by @gqcn in #3542
- refactor(net/ghttp): enhance
ghttp.StartPProfServer
by @gqcn in #3555 - refactor(net/ghttp): update error message for duplicated routes registering by @hailaz in #3603
- refactor(net/gudp): improve implements by @gqcn in #3491
- refactor(util/gconv): refactor code unit testing by @oldme-git in #3591
- refractor(container/gtree): improve function order of
btree
by @oldme-git in #3656 - refractor(container/gtree): refactor code with
gods
package forrbtree
by @oldme-git in #3655 - refractor(container/gtree): refactor code with gods package for avltree by @oldme-git in #3647
bug fix
- fix(cmd/gf):
gf gen dao
should ignorelink
configuration from file as it is passed from arguments by @oldme-git in #3531 - fix(cmd/gf): creating logic.go empty folder when there is no correct logic service by @oldme-git in #3815
- fix(cmd/gf): fix command
gf gen dao
for fieldMapping feature by @cyjaysong in #3549 - fix(cmd/gf): fix command
gf up
with-u
option upgrading packages indirectly required would fail with higher version of go required by @hailaz in #3687 - fix(cmd/gf): fix gen enums failed in go version v1.22.1 by @oldme-git in #3565
- fix(cmd/gf): fix pbentity generating fail in mono-repo by @oldme-git in #3547
- fix(cmd/gf): gen service error when there's version number at the end of package import path by @oldme-git in #3836
- fix(cmd/gf): go back current working directory after gf gen pb by @oldme-git in #3895
- fix(cmd/gf): missing configuration file support for cli command
pack/run/tpl/up
by @hailaz in #3629 - fix(cmd/gf): missing file closing when printing downloading percent of gf cli file for command
gf up
by @testwill in #3483 - fix(cmd/gf): protoc file comments contain backticks and double quotes, resulting in syntax errors in the generated file of go by @oldme-git in #3890
- fix(cmd/gf): remove dir after process done if given build file parameter is not a file but a dir name by @gqcn in #3908
- fix(cmd/gf): remove dm driver for command
gen dao
as it causes building failed for some platforms by @hailaz in #3667 - fix(cmd/gf): table and field names converted to its lower case before CamelCase converting in command
gen dao
by @gqcn in #3801 - fix(container/gmap&gset): deadlock when removing values during iterating by @LonelySally in #3572
- fix(container/gtree): deadlock in Map/MapStrAny functions, comments update by @gqcn in #3840
- fix(contrib/drivers/mssql): fix mssql paging sql generate statement error by @freesme in #3782
- fix(contrib/drivers/pgsql): connection fails when postgres database password is empty by @wlynxg in #3900
- fix(contrib/drivers/pgsql): fix insert error when data struct field has nil in PgSQL by @oldme-git in #3679
- fix(contrib/drivers/pgsql): invalid pgsql insert json type by @Ghw2066 in #3742
- fix(contrib/drivers/sqlitecgo): support 32-bit architecture by @hailaz in #3480
- fix(contrib/nosql/redis): missing err nil check in function
ScriptExists
by @JimDevil in #3713 - fix(contrib/registry/file/v2): fix the panic caused by channel closing after
resolver closed
by @zishang520 in #3691 - fix(contrib/registry/zookeeper): invalid searching prefix by @cruelchen in #3598
- fix(database/gdb): FieldsEx feature conflicts with soft time feature in soft time fields updating by @gqcn in #3773
- fix(database/gdb): confusing error message in Insert/Update operations when table not exist or the table contains no fields by @wln32 in #3553
- fix(database/gdb): deadlock when orm operations performing in cache closure function from gcache by @gqcn in #3585
- fix(database/gdb): error parsing database link without port number by @gqcn in #3772
- fix(database/gdb): first column might be overwritten in internal context data in multiple goroutines querying by @gqcn in #3476
- fix(database/gdb): ignore automatic handling for creating/updating time if it has been specified by @jswxstw in #3615
- fix(database/gdb): invalid order by statement generated when multiple order inputs by @LanceAdd in #3803
- fix(database/gdb): recognize field type
tinyint(1)
to golang typebool
by @gqcn in #3921 - fix(database/gdb): remove support of Array/Value/Count operations for result that has multiple record fields by @gqcn in #3839
- fix(database/gdb): soft-time support fieldType:
LocalTypeUint64
in Insert/Update operations by @muddydog in #3551 - fix(database/gdb): unix socket connection support for mysql by @gqcn in #3872
- fix(database/gdb): when constructing query param,
gdb.Row
value not directly write to Buffer by @cyjaysong in #3718 - fix(debug/gdebug): incorrect package name handling in function CallerPackage by @gqcn in #3771
- fix(encoding/gxml): XML special character encoding error by @oldme-git in #3740
- fix(errors/gerror):
Is
performs the same as errors.Is from go stdlib by @gqcn in #3640 - fix(net/gclient): Client Clone with allocated header/cookie by @CharLemAznable in #3902
- fix(net/gclient): panic when containing
@file:
parameter value in json post request by @oldme-git in #3775 - fix(net/ghttp&gclient,contrib/rpc/grpcx): remove request and response contents in opentelemetry tracing attributes by @gqcn in #3810
- fix(net/ghttp): Content-Type for
jsonp
response fromapplication/json
toapplication/javascript
by @swift-fs in #3651 - fix(net/ghttp): fix args issue for
forkRestartProcess
in graceful restarting of ghttp.Server by @hailaz in #3661 - fix(net/ghttp): server shutdown not graceful using admin api
/debug/admin/shutdown
by @gqcn in #3777 - fix(net/ghttp): skip common response body in common response handler for streaming content types by @wwwfeng in #3762
- fix(net/goai): cannot customize
OpenAPIv3
type for request parameters by @gqcn in #3845 - fix(net/goai): change default value of RequestBody.Required from true to false, add required tag support for RequestBody by @gqcn in #3796
- fix(net/goai): fix openapi miss
required
tag ofBizRequest
when setCommonRequest
by @niluan304 in #3724 - fix(net/goai): support multiple file upload parameters for
OpenAPIv3
by @hailaz in #3662 - fix(os/gcache): a little memory leak for removed timestamp key by @gqcn in #3779
- fix(os/gcache): memory leak for LRU when adding operations more faster than deleting by @gqcn in #3823
- fix(os/gcfg): SetPath failed when there's config.yaml in current working directory by @ynwcel in #3587
- fix(os/gcfg): file searching always returning the configuration file of pwd by @gqcn in #3592
- fix(os/gcmd): argument index calculating error in multilevel command by @oldme-git in #3807
- fix(os/gcmd): cannot retrieve all args if no subcommand defined for a root command by @gqcn in #3850
- fix(os/glog): empty content in glog handler after structure logging feature supported by @gqcn in #3475
- fix(os/gproc): missing arguments on Windows platform by @wln32 in #3482
- fix(os/gres): add custom prefix
/
support for resource packing by @hailaz in #3621 - fix(os/gtime): fix gtime.Value() when time only, add
time only
example by @niluan304 in #3714 - fix(os/gtime): time zone issues by @wln32 in #3561
- fix(os/gtime): unit testing case occasionally failed for package gtime by @hailaz in #3596
- fix(util/gconv): #3764 fix bool converting issue by @wln32 in #3765
- fix(util/gconv): assigned the same value to struct field and its same name field in embedded struct failed by @wln32 in #3905
- fix(util/gconv): cached field indexes append issue caused incorrect field converting by @wln32 in #3790
- fix(util/gconv): fix missing minus in string to int64 conversion by @UncleChair in #3920
- fix(util/gconv): if the value of a string is
null
, the value of string isnil
after thestring
is converted to[]string
by @wln32 in #3468 - fix(util/gconv): incorrect fuzzy converting logic by @wln32 in #3874
- fix(util/gconv): map type name mismatch in switch case statement by @wlynxg in #3732
- fix(util/gconv): one parameter to same tag in multiple struct attributes mapping failed by @helloteemo in #3822
- fix(util/gconv): unstable converting when there is an external attribute with the same name as the internal structure by @wln32 in #3799
- fix(util/gutil): invalid empty parameter value check for function
GetOrDefaultAny
by @gqcn in #3844 - fix(util/gvalid): retrive empty slice parameter in custom validation rule function failed by @gqcn in #3795
- fix(util/gvalid): slice enums verification failed by @xyqweb in #3566
- fix(utils/utils_str): recognize '+' as a valid numeric sign by @wwwfeng in #3778
other
- build(deps): bump google.golang.org/grpc from 1.51.0 to 1.56.3 in /contrib/config/polaris by @dependabot in #3831
- build(deps): bump google.golang.org/grpc from 1.51.0 to 1.56.3 in /contrib/registry/polaris by @dependabot in #3828
- build(go.mod): upgrade minimum required go version from 1.18 to 1.20 by @houseme in #3688
- build: bump google.golang.org/protobuf to v1.33.0 by @fengshunli in #3697
- build: downgrade fsnotify from v1.8.0 to v1.7.0 to solve data race error by @gqcn in #3916
- build: upgrade fsnotify from v1.7.0 to v1.8.0 to solve occasional ci failure by @gqcn in #3910
- chore(.github/template): update document for github pull requests by @hailaz in #3666
- chore(contrib/config/polaris): upgrade dependent polaris library version to v1.5.8 and go version to v1.21 by @houseme in #3827
- chore(contrib/registry/polaris): upgrade dependent polaris library version to v1.5.8 and go version to v1.21 by @houseme in #3826
- chore(errors/gerror): add examples by @gqcn in #3927
- chore(example): fix file name
example/pack/packed/paked.go
→example/pack/packed/packed.go
by @hailaz in #3479 - chore(example): password encrypt-decrypt for database using custom implement driver by @hailaz in #3610
- chore(go.mod): upgrade version of dependencies by @hailaz in #3494
- chore(go.mod): upgrade version of dependencies for
cmd/gf
andcontrib
packages by @oldme-git in #3526 - chore: README.md updates by @gqcn in #3912
- chore: fix function names in comment by @findnature in #3536
- chore: fix function names in comments for package
otelmetric
by @writegr in #3493 - chore: issue templates update for github by @oldme-git in #3544
- chore: issues and pull requests template update for github by @oldme-git in #3533
- chore: readme updates by @gqcn in #3919
- chore: update README.MD by @oldme-git in #3911
- chore: update the contributors in README.MD by @oldme-git in #3907
- ci(.github/workflows): fix warning info from node16 on timezone setting by @hailaz in #3614
- ci(.github/workflows): remove code coverage report for folder
example
by @hailaz in #3608 - ci: add Scorecard workflow by @fengshunli in #3702
- ci: add go version 1.23 support by @houseme in #3733
- ci: fix code coverage not sync to CodeCov by @oldme-git in #3570
- ci: fix mssql docker service failed in ci by @gqcn in #3792
- ci: fix mssql docker service starting failed by @gqcn in #3824
- docs(contrib/drivers): add
README.zh_CN.MD
by @hailaz in #3604 - style(gtest/test): improve code by @oldme-git in #3891
- test(cmd/gf):
gf gen ctrl
with-merge
option by @wln32 in #3490 - test(cmd/gf): add unit testing case generating dao/do/entity files for sqlite in command
gen dao
by @gqcn in #3808 - test(cmd/gf): add unit testing case of commented api definitions generating for command
gf gen ctrl
by @zcyc in #3575 - test(cmd/gf): fix unit testing cases for compatibility with windows by @oldme-git in #3532
- test(cmd/gf,conbrib/drivers): unit testing cases update by @oldme-git in #3453
- test(drivers/mysql): loose unit testing for transaction by @oldme-git in #3819
- test(drivers/mysql): use asserts function to replace if statement by @oldme-git in #3849
- test(os/gcache): fix unit testing occasionally failed due to too short expration duration set by @gqcn in #3842
- test(os/gproc): fix uint testing case for signal feature of package gproc occasionally failed by @gqcn in #3529
- test(test/gtest): add support for string type in AssertIN and AssertNI by @oldme-git in #3537
New Contributors
- @phuonganhniie made their first contribution in #3451
- @cococolanosugar made their first contribution in #3455
- @writegr made their first contribution in #3493
- @findnature made their first contribution in #3536
- @cyjaysong made their first contribution in #3498
- @muddydog made their first contribution in #3551
- @ynwcel made their first contribution in #3587
- @yincongcyincong made their first contribution in #3583
- @cruelchen made their first contribution in #3598
- @Insua made their first contribution in #3606
- @swift-fs made their first contribution in #3622
- @vector233 made their first contribution in #3625
- @fengshunli made their first contribution in #3702
- @JimDevil made their first contribution in #3713
- @zishang520 made their first contribution in #3691
- @Ghw2066 made their first contribution in #3742
- @wwwfeng made their first contribution in #3762
- @LanceAdd made their first contribution in #3803
- @freesme made their first contribution in #3782
- @helloteemo made their first contribution in #3822
- @UncleChair made their first contribution in #3859
- @CharLemAznable made their first contribution in #3902
Full Changelog: v2.7.0...v2.8.0