github gogf/gf v2.8.0
GoFrame Release v2.8.0

12 hours ago

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 to gf-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 and AutoSyncInterval 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 for Fields function of gdb.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 using ast by @oldme-git in #3616
  • refactor(cmd/gf): improve command gf gen ctrl using ast by @oldme-git in #3470
  • refactor(cmd/gf): improve command gf gen ctrl using ast for parsing DstFolder by @oldme-git in #3478
  • refactor(cmd/gf): refactor command gf gen service with AST 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 to github.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 for rbtree 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 ignore link 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 type bool 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 from application/json to application/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 of BizRequest when set CommonRequest 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 is nil after the string 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.goexample/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 and contrib 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

Full Changelog: v2.7.0...v2.8.0

Don't miss a new gf release

NewReleases is sending notifications on new releases.