mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-11-30 02:37:58 +08:00
34 KiB
34 KiB
v3.0.19 - TBD
v3.0.18 - 2023-04-26
Added
- #5672 Added some helper functions in
hyperf/support
.
Fixed
- #5662 Fixed bug that
pgsql-swoole
cannot throw exceptions when statement execution failed.
Optimized
- #5660 Split
hyperf/codec
fromhyperf/utils
. - #5663 Split
hyperf/serializer
fromhyperf/utils
. - #5666 Split
Packers
tohyperf/codec
. - #5668 Split
hyperf/support
fromhyperf/utils
. - #5670 Split
hyperf/code-parser
fromhyperf/utils
. - #5671 Use
Hyperf\Coroutine\Channel\Pool
instead ofHyperf\Utils\ChannelPool
. - #5674 Instead of
classes
andfunctions
ofHyperf\Utils
.
v3.0.17 - 2023-04-19
Fixed
- #5642 Fixed bug that the model cache cannot be created when using
find many
to get non-exists models. - #5643 Fixed bug that the empty caches cannot be used for
Model::findManyFromCache()
. - #5649 Fixed bug init table collector cannot work for coroutine style server.
Added
- #5634 Added
Hyperf\Stringable\str()
helper function. - #5639 Added
Redis::pipeline()
andRedis::transaction()
support. - #5641 Support deeply nested cache relations for
model-cache
. - #5646 Added
PriorityDefinition
to sort dependencies.
Optimized
- #5634 Use
Hyperf\Stringable\Str
instead ofHyperf\Utils\Str
. - #5636 Reduce kafka first start time and handle stop consumer logic
- #5648 Removed requirement
hyperf/utils
fromhyperf/guzzle
.
v3.0.16 - 2023-04-12
Fixed
- #5627 Fixed issue where coroutine context was not destroyed in
Hyperf\Context\Context::destroy
method.
Optimized
- #5616 Split
ApplicationContext
fromhyperf/utils
tohyperf/context
. - #5617 Removed the requirement
hyperf/guzzle
fromhyperf/consul
. - #5618 Support to set the default router for swagger.
- #5619 #5620 Split
hyperf/coroutine
fromhyperf/utils
. - #5621 Use
Hyperf\Context\ApplicationContext
instead ofHyperf\Utils\ApplicationContext
. - #5622 Split
CoroutineProxy
fromhyperf/utils
tohyperf/context
. - #5623 Use
Hyperf\Coroutine\Coroutine
instead ofHyperf\Utils\Coroutine
. - #5624 Split Channel utils from
hyperf/utils
tohyperf/coroutine
. - #5629 Refactor
Hyperf\Utils\Arr
that let it extendsHyperf\Collection\Arr
.
v3.0.15 - 2023-04-07
Added
- #5606 Added
server.options.send_channel_capacity
to control whether to use safe socket.
Optimized
- #5593 #5598 Use
Hyperf\Collection\Collection
instead ofHyperf\Utils\Collection
. - #5594 Use
Hyperf\Collection\Arr
instead ofHyperf\Utils\Arr
. - #5596 Split
hyperf/pipeline
fromhyperf/utils
. - #5599 Use Hyperf\Pipeline\Pipeline instead of Hyperf\Utils\Pipeline。
v3.0.14 - 2023-04-01
Fixed
- #5578 Fixed bug that unable to serialize
Channel
inCrontab
. - #5579 Fixed bug that
crontab:run
cannot work.
Optimized
- #5572 Update Http Server to use new WritableConnection implementation.
- #5577 Split
hyperf/collection
fromhyperf/utils
. - #5580 Split
hyperf/conditionable
andhyperf/tappable
fromhyperf/utils
. - #5585 Removed the requirement
consul
fromservice-governance
.
v3.0.13 - 2023-03-26
Added
- #5561 Added setTimer support for
hyperf/kafka
. - #5562 Added method
Query\Builder::upsert()
. - #5563 Added
running channel
to make sure all crontab tasks handled successfully.
Optimized
- #5544 Cancel
grpc-server
's dependency onhyperf/rpc
. - #5550 Optimized code for crontab parser and coordinator timer.
- #5566 Optimized the type hint to
nullable
for schemas which generated bycmd
. - #5569 Simplify RunCommand's dependencies.
v3.0.12 - 2023-03-20
Added
- #4112 Added
kafka.default.enable
to control the consumer start or not. - #5533 #5535 Added
client
&socket
config for kafka. - #5536 Added
hyperf/http2-client
. - #5538 Support stream call for http2 client.
- #5511 Support GRPC services which can easily to registry and discovery.
- #5543 Support nacos grpc which used to listen config changed event.
- #5545 Added streaming test cases for http2 client.
- #5546 Support grpc streaming for config-nacos.
Optimized
- #5539 Optimized code for
AMQPConnection
to support the latestphp-amqplib
. - #5528 Optimized hot reload for
aspects
. - #5541 Improve FactoryResolver.
v3.0.11 - 2023-03-15
Added
- #5499 Support
enum
forhyperf/constants
. - #5508 Added
Hyperf\Rpc\Protocol::getNormalizer
. - #5509 Auto register
normalizer
forjson-rpc
. - #5513 Use default normalizer for
rpc-multiplex
and useprotocol.normalizer
forrpc-server
. - #5518 Added
SwooleConnection::getSocket
to get swoole response. - #5520 Added
Coroutine::stats()
andCoroutine::exists()
. - #5525 Added
kafka.default.consume_timeout
to control the consumer for consuming messages. - #5526 Added
Hyperf\Kafka\AbstractConsumer::isEnable()
to control the kafka consumer start or not.
Fixed
- #5519 Fixed bug that worker cannot exit caused by kafka
producer->loop()
. - #5523 Fixed bug that process stopped when kafka rebalance.
Optimized
- #5510 Allow developers to replace the
normalizer
ofRPC Client
themselves. - #5525 Running in an independent coroutine when consume kafka message.
v3.0.10 - 2023-03-11
Fixed
- #5497 Fixed bug that
ConfigChanged
cannot dispatched when usingapollo
.
Added
- #5491 Added
charAt
method to bothStr
andStringable
. - #5503 Added
Hyperf\Contract\JsonDeSerializable
. - #5504 Added
Hyperf\Utils\Serializer\JsonDeNormalizer
.
Optimized
- #5493 Optimized code for service registration which support nacos
1.x
and2.x
. - #5494 #5501 Do not replace
Handler
whennative-curl
is supported.
Changed
- #5492 Renamed
Hyperf\DbConnection\Listener\CreatingListener
toHyperf\DbConnection\Listener\InitUidOnCreatingListener
.
v3.0.9 - 2023-03-05
Added
- #5467 Support
Google\Rpc\Status
forGRPC
. - #5472 Support
ulid
anduuid
for Model. - #5476 Added ArrayAccess to Stringable.
- #5478 Added isMatch method to Str and Stringable helpers.
Optimized
- #5469 Ensure that the connection must be reset the next time after broken.
v3.0.8 - 2023-02-26
Fixed
- #5433 #5438 Fixed bug that the persistent service no need to send heartbeat.
- #5464 Fixed bug that swagger server cannot work when using async style server.
Added
- #5434 Support UDP Server for Swow.
- #5444 Added
GenSchemaCommand
to generate schemas for swagger. - #5451 Added method
appends($attributes)
to model collections. - #5453 Added missing methods
put()
andpatch()
to testing HTTP client. - #5454 Added method
Hyperf\Grpc\Parser::statusFromResponse
. - #5459 Added some methods of
uuid
andulid
forStr
andStringable
.
Optimized
v3.0.7 - 2023-02-18
Added
- #5042 Added
swagger.scan.paths
to rewritescan paths
for swagger. - #5403 Support swoole server settings for swow server.
- #5404 Support multiport server for swagger.
- #5406 Added
mixin
method toHyperf\Database\Model\Builder
. - #5407 Support HTTP methods
Delete
andOptions
for swagger. - #5409 Adds
methods
forQuery\Builder
andPaginator
. - #5414 Added
clone
method toHyperf\Database\Model\Builder
. - #5418 Added
ConfigChanged
event toconfig-center
. - #5429 Added
access_key
andaccess_secret
which used to connect aliyun nacos.
Fixed
- #5405 Fixed get local ip error when IPv6 exists.
- #5417 Fixed bug that database-pgsql does not support migration.
- #5421 Fixed database about boolean types for where in the json type.
- #5428 Fixed bug that metric middleware cannot work well when encountered an exception.
- #5424 Fixed bug that migrator cannot work when using
PHP8.2
.
Optimized
- #5411 Optimized the code of
WebSocketHandeShakeException
which should inheritanceBadRequestHttpException
. - #5419 Optimized the code of
RPN
. - #5422 Enable swagger by default when installed swagger component.
v3.0.6 - 2023-02-12
Fixed
- #5361 Fixed bug that the current service XXX is persistent service, can't register ephemeral instance.
- #5382 Fixed bug that mix-subscriber cannot work caused by the empty auth.
- #5386 Fixed bug that non-existing method
exec
called bySwoolePostgresqlClient
. - #5394 Fixed bug that
hyperf/config-apollo
cannot work.
Added
- #5366 Added
forceDeleting
event tohyperf/database
. - #5373 Support server settings for
SwowServer
. - #5376 Support coroutine server stats for
hyperf/metric
. - #5379 Added log records when nacos heartbeat failed.
- #5389 Added swagger support.
- #5395 Support validation for swagger.
- #5397 Support all swagger annotations.
v3.0.5 - 2023-02-05
Added
- #5338 Added
addRestoreOrCreate
extension toSoftDeletingScope
. - #5349 Added
ResumeExitCoordinatorListener
. - #5355 Added
System::getCpuCoresNum()
.
Fixed
- #5357 Fixed bug that the coordinator timer can't stop when an exception occurs inside
$closure
.
Optimized
- #5342 Compatible with
tcp://host:port
configuration redis sentry address.
v3.0.4 - 2023-01-22
Fixed
- #5332 Fixed bug that
PgSQLSwooleConnection::unprepared
cannot work. - #5333 Fixed bug that database cannot work when disconnect failed.
v3.0.3 - 2023-01-16
Fixed
- #5318 Fixed bug that rate-limit cannot work when using php
8.1
. - #5324 Fixed bug that database cannot work when disconnect caused by connection reset by mysql.
- #5322 Fixed bug that kafka consumer cannot work when don't set
memberId
and so on. - #5327 Fixed bug that PostgresSQL can't work when create connection timed out.
Added
- #5314 Added method
Hyperf\Coordinator\Timer::stats()
. - #5323 Added method
Hyperf\Nacos\Provider\ConfigProvider::listener()
.
Optimized
- #5308 #5309 #5310 #5311 Added
CoroutineServer
Support forhyperf/metric
. - #5315 Improve
hyperf/metric
. - #5326 Collect the metric of
Server::stats()
by loop.
v3.0.2 - 2023-01-09
Fixed
- #5305 Fixed bug that commit failed when has no active transaction for polardb.
- #5307 Fixed the parameter
$timeout
ofTimer::tick()
inhyperf/metric
.
Optimized
- #5306 Log records when release to pool failed.
v3.0.1 - 2023-01-09
Fixed
- #5289 Fixed bug that
signal
cannot work when usingswow
. - #5303 Fixed bug that redis nsq adapter cannot work when topics is null.
Optimized
- #5287 Added log records about the exception message when emit failed.
- #5292 Support Swow for
hyperf/metric
. - #5301 Optimized code for
Hyperf\Rpc\PathGenerator\PathGenerator
.
v3.0.0 - 2023-01-03
BC breaks
- The framework removes
@Annotation
support, and usesPHP8
native annotationAttribute
. Before updating, be sure to check whether the project has been replaced byAttribute
.
The following script can be executed to convert Doctrine Annotations
to PHP8 Attributes
.
Note: This script can only be executed under version 2.2
composer require hyperf/code-generator
php bin/hyperf.php code:generate -D app
- Database Model upgrade script
Because the model base class has added type support for member variables, you need to use the following script to upgrade it to a new version.
composer require hyperf/code-generator
php vendor/bin/regenerate-models.php $PWD/app/Model
- The framework adds more type restrictions to the class library, so when updating from
2.2
to3.0
, you need to run a static check to make sure it is works.
composer analysis
- The framework modifies the
Http status
returned bygRPC Server
according to thegRPC
specification. It is fixed at 200, andgRPC Server
returns the correspondingstatus code
. Service upgrade to version 3.x
Dependencies Upgrade
- Upgraded
php-amqplib/php-amqplib
to^3.1
; - Upgraded
phpstan/phpstan
to^1.0
; - Upgraded
mix/redis-subscribe
tomix/redis-subscriber:^3.0
- Upgraded
psr/simple-cache
to^1.0|^2.0|^3.0
- Upgraded
monolog/monolog
to^2.7|^3.1
- Upgraded
league/flysystem
to^1.0|^2.0|^3.0
Added
- #4196 Added
Hyperf\Amqp\IO\IOFactory
which used to create amqp io by yourself. - #4304 Support
$suffix
for traitHyperf\Utils\Traits\StaticInstance
. - #4400 Added
$description
which used to set command description easily forHyperf\Command\Command
. - #4277 Added
Hyperf\Utils\IPReader
to get local IP. - #4497 Added
Hyperf\Coordinator\Timer
which can be stopped safely. - #4523 Support callback conditions for
Conditionable::when()
andConditionable::unless()
. - #4663 Make
Hyperf\Utils\Stringable
implementsStringable
. - #4700 Support coroutine style server for
socketio-server
. - #4852 Added
NullDisableEventDispatcher
to disable event dispatcher by default. - #4866 #4869 Added Annotation
Scene
which use scene in FormRequest easily. - #4908 Added
Db::beforeExecuting()
to register a hook which to be run just before a database query is executed. - #4909 Added
ConsumerMessageInterface::getNums()
to change the number of amqp consumer by dynamically. - #4918 Added
LoadBalancerInterface::afterRefreshed()
to register a hook which to be run after refresh nodes. - #4992 Added config
amqp.enable
which used to control amqp consumer whether to start automatically and producer whether to declare automatically. - #4994 #5016 Added component
hyperf/database-pgsql
which you can be used to connect pgsql server. - #5007 Support for SSL encrypted connection to Redis.
- #5046 Added
Hyperf\Database\Model\Concerns\HasAttributes::getRawOriginal()
. - #5052 Support parsing IPv6 host.
- #5061 Added config
symfony.event.enable
to control whether to useSymfonyEventDispatcher
. - #5163 Added
Pipeline::thenReturn()
method to run pipes and return the result - #5160 Added
$dictionary
forStr::slug
, your can rewrite some tags easily. - #5186 Added option
config
for commandserver:watch
. - #5206 Support the transformation of object type to AST nodes.
- #5211 Added Annotation
CacheAhead
which used to cache data ahead. - #5227 Added
Hyperf\WebSocketServer\Sender::getResponses()
. - #5250 Added
defer_release
config inhyperf/db
- #5261 Added requirement
ext-posix
forwatcher
.
Optimized
- #4147 Optimized code for nacos which you can use
http://xxx.com/yyy/
instead ofhttp://xxx.com:8848/
to connectnacos
. - #4367 Optimized
DataFormatterInterface
which uses object instead of array as inputs. - #4547 Optimized code of
Str::contains
Str::startsWith
andStr::endsWith
based onPHP8
. - #4596 Optimized
Hyperf\Context\Context
which supportcoroutineId
forset()
override()
andgetOrSet()
. - #4658 The method name is used as the routing path, when the path is null in route annotations.
- #4668 Optimized class
Hyperf\Utils\Str
whose methodspadBoth
padLeft
andpadRight
supportmultibyte
. - #4678 Close all another servers when one of them closed.
- #4688 Added
SafeCaller
to avoid server shutdown which caused by exceptions. - #4715 Adjust the order of injections for controllers to avoid inject null preferentially.
- #4865 No need to check
Redis::isConnected()
, because it could be connected defer or reconnected after disconnected. - #4874 Use
wait
instead ofparallel
for coroutine style tcp server. - #4875 Use the original style when regenerating models.
- #4880 Support
ignoreAnnotations
forAnnotation Reader
. - #4888 Removed useless
Hyperf\Di\ClassLoader::$proxies
, because merge it intoComposer\Autoload\ClassLoader::$classMap
. - #4905 Removed the redundant parameters of method
Hyperf\Database\Model\Concerns\HasEvents::fireModelEvent()
. - #4949 Removed useless
call()
fromCoroutine::create()
. - #4961 Removed proxy mode from
Hyperf\Di\ClassLoader
and OptimizedComposer::getLoader()
. - #4981 Confirm before proceeding with the action when using
ConfirmableTrait
, such asmigrate
command. - #5017 Check validity of file descriptor before sending message to it when using
socketio-server
. - #5029 Removed useless method
call()
fromcallable function
. - #5078 Optimized code about creating exception from another exception.
- #5079 Catch exception for function
defer
by default.
Changed
- #4199 Changed the
public
property$message
toprotected
forHyperf\AsyncQueue\Event\Event
. - #4214 Renamed
$circularDependences
to$checkCircularDependencies
forDag
. - #4225 Split
hyperf/coordinator
fromhyperf/utils
. - #4269 Changed the default priority of listener to
0
from1
. - #4345 Renamed
Hyperf\Kafka\Exception\ConnectionCLosedException
toHyperf\Kafka\Exception\ConnectionClosedException
. - #4434 The method
Hyperf\Database\Model\Builder::insertOrIgnore
will be return affected count. - #4495 Changed the default value to
null
forHyperf\DbConnection\Db::__connection()
. - #4460 Use
??
instead of?:
for$callback
when usingStringable::when()
. - #4502 Use
Hyperf\Engine\Channel
instead ofHyperf\Coroutine\Channel
inhyperf/reactive-x
. - #4611 Changed return type to
void
forHyperf\Event\Contract\ListenerInterface::process()
. - #4669 Changed all annotations which only support
PHP
>=8.0
. - #4678 Support event dispatcher for command by default.
- #4680 Stop processes which controlled by
ProcessManager
when server shutdown. - #4848 Changed
$value.timeout
to$options.timeout
forCircuitBreaker
. - #4930 Renamed method
AnnotationManager::getFormatedKey()
toAnnotationManager::getFormattedKey()
. - #4934 Throw
NoNodesAvailableException
when cannot select any node from load balancer. - #4952 Don't write pid when the
settings.pid_file
is null when using swow server. - #4979 Don't support database commands by default, please require
hyperf/devtool
or set them inautoload/commands
. - #5008 Removed array type of
Trace Annotation
, because don't support array. - #5036 Changed grpc server StatsCode and serializeMessage.
- #5601 Don't use
Hyperf\Framework\SymfonyEventDispatcher
by default, if you listen symfony events, you must opensymfony.event.enable
. - #5079 Use
(string) $throwable
instead ofsprintf
forHyperf\ExceptionHandler\Formatter\FormatterInterface::format()
. - #5091 Move
Jsonable
andXmlable
tocontract
fromutils
. - #5092 Move
MessageBag
andMessageProvider
tocontract
fromutils
. - #5204 Transform the type of param
$server
inHyperf\WebSocketServer\Server::deferOnOpen()
tomixed
. - #5239 Throw exception when using
chunkById
but the column is not existed.
Swow Supported
- #4756 Support
hyperf/amqp
. - #4757 Support
Hyperf\Utils\Coroutine\Locker
. - #4804 Support
Hyperf\Utils\WaitGroup
. - #4808 Replaced
Swoole\Coroutine\Channel
byHyperf\Engine\Channel
for all components. - #4873 Support
hyperf/websocket-server
. - #4917 Support
hyperf/load-balancer
. - #4924 Support TcpServer for
hyperf/server
. - #4984 Support
hyperf/retry
. - #4988 Support
hyperf/pool
. - #4989 Support
hyperf/crontab
. - #4990 Support
hyperf/nsq
. - #5070 Support
hyperf/signal
.
Removed
- #4199 Removed deprecated handler
Hyperf\AsyncQueue\Signal\DriverStopHandler
. - #4482 Removed deprecated
Hyperf\Utils\Resource
. - #4487 Removed log warning from cache component when the key is greater than 64 characters.
- #4596 Removed
Hyperf\Utils\Context
, please useHyperf\Context\Context
instead. - #4623 Removed AliyunOssHook for
hyperf/filesystem
. - #4667 Removed
doctrine/annotations
, please usePHP8 Attributes
. - #5226 Removed
WARNING
log message when amqp connection restart.
Deprecated
Hyperf\Utils\Contracts\Arrayable
will be deprecated, please useHyperf\Contract\Arrayable
instead.Hyperf\AsyncQueue\Message
will be deprecated, please useHyperf\AsyncQueue\JobMessage
instead.Hyperf\Di\Container::getDefinitionSource()
will be deprecated.
Fixed
- #4549 Fixed bug that
PhpParser::getExprFromValue()
does not support assoc array. - #4835 Fixed the lost description when using property
$description
and$signature
forhyperf/command
. - #4851 Fixed bug that prometheus server will not be closed automatically when using command which enable event dispatcher.
- #4854 Fixed bug that the
socket-io
client always reconnect when using coroutine style server. - #4885 Fixed bug that
ProxyTrait::__getParamsMap
can not work when using trait alias. - #4892 #4895 Fixed bug that
RedisAdapter::mixSubscribe
cannot work cased by redis prefix when usingsocketio-server
. - #4910 Fixed bug that method
ComponentTagCompiler::escapeSingleQuotesOutsideOfPhpBlocks()
cannot work. - #4912 Fixed bug that websocket connection will be closed after 10s when using
Swow
. - #4919 #4921 Fixed bug that rpc connections can't refresh themselves after nodes changed when using
rpc-multiplex
. - #4920 Fixed bug that the routing path is wrong (like
//foo
) when the routing prefix is end of '/'. - #4940 Fixed memory leak caused by an exception which occurred in
Parallel
. - #5100 Fixed bug that the tag
continue
cannot work when usingview-engine
. - #5121 Fixed bug that the SQL is not valid but the correct error message cannot be obtained when using
pgsql
. - #5132 Fixed bug that the exit code of command does not work when the exception code isn't int.
- #5142 Fixed bug that the method
Request::parseHost
does not work when host is invalid. - #5199 Fixed bug that
RedisSentinel
can't support empty password. - #5221 Fixed bug that
PGSqlSwooleConnection::affectingStatement()
can't work when thesql
is wrong. - #5223 Fixed bug that
KeepaliveConnection::isTimeout()
can't work when using swow. - #5229 Fixed bug that proxy class will be generated failed when using parameters who allow null in constructor.
- #5252 Fixed bug that generate rpc-client failed when the interface has parent interfaces.
- #5268 Fixed bug that abstract methods will be written by
di
.