path_expander version 1.1.2 has been released!
* home: <https://github.com/seattlerb/path_expander>
* rdoc: <http://docs.seattlerb.org/path_expander>
PathExpander helps pre-process command-line arguments expanding
directories into their constituent files. It further helps by
providing additional mechanisms to make specifying subsets easier
with path subtraction and allowing for command-line arguments to be
saved in a file.
NOTE: this is NOT an options processor. It is a path processor
(basically everything else besides options). It does provide a
mechanism for pre-filtering cmdline options, but not with the intent
of actually processing them in PathExpander. Use OptionParser to
deal with options either before or after passing ARGV through
PathExpander.
Changes:
### 1.1.2 / 2024-07-11
* 1 bug fix:
* Normalize './' off the front of all paths so options like '.' and '-test' work together better
httpx 1.3.0 has been released.
```
HTTPX.get("https://gitlab.com/honeyryderchuck/httpx
<https://gitlab.com/honeyryderchuck/httpx>")
```
HTTPX is an HTTP client library for the Ruby programming language.
Among its features, it supports:
* HTTP/2 and HTTP/1.x protocol versions
* Concurrent requests by default
* Simple and chainable API
* Proxy Support (HTTP(S), CONNECT tunnel, Socks4/4a/5)
* Simple Timeout System
* Lightweight by default (require what you need)
And also:
* Compression (gzip, deflate, brotli)
* Streaming Requests
* Authentication (Basic Auth, Digest Auth, AWS Sigv4)
* Expect 100-continue
* Multipart Requests
* Cookies
* HTTP/2 Server Push
* H2C Upgrade
* Automatic follow redirects
* International Domain Names
* GRPC
* Circuit breaker
* WebDAV
* SSRF Filter
* Datadog integration
* Faraday integration
* Webmock integration
* Sentry integration
Here are the updates since the last release:
# 1.3.0
## Dependencies
`http-2` v1.0.0 is replacing `http-2-next` as the HTTP/2 parser.
`http-2-next` was forked from `http-2` 5 years ago; its improvements have
been merged back to `http-2` recently though, so `http-2-next` willl
therefore no longer be maintained.
## Improvements
Request-specific options (`:params`, `:form`, `:json` and `:xml`) are now
separately kept by the request, which allows them to share
`HTTPX::Options`, and reduce the number of copying / allocations.
This means that `HTTPX::Options` will throw an error if you initialize an
object which such keys; this should not happen, as this class is considered
internal and you should not be using it directly.
## Fixes
* support for the `datadog` gem v2.0.0 in its adapter has been unblocked,
now that the gem has been released.
* loading the `:cookies` plugin was making the `Session#build_request`
private.
# 1.2.6
## Improvements
* `native` resolver: when timing out on DNS query for an alias, retry the
DNS query for the alias (instead of the original hostname).
## Bugfixes
* `faraday` adapter: set `env` options on the request object, so they are
available in the request object when yielded.
* `follow_redirects` plugin: remove body-related headers (`content-length`,
`content-type`) on POST-to-GET redirects.
* `follow_redirects` plugin: maintain verb (and body) of original request
when the response status code is 307.
* `native` resolver: when timing out on TCP-based name resolution,
downgrade to UDP before retrying.
* `rate_limiter` plugin: do not try fetching the retry-after of error
responses.
# 1.2.5
## Bugfixes
* fix for usage of correct `last-modified` header in `response_cache`
plugin.
* fix usage of decoding helper methods (i.e. `response.json`) with
`response_cache` plugin.
* `stream` plugin: reverted back to yielding buffered payloads for streamed
responses (broke `down` integration)
# 1.2.4
## Bugfixes
* fixed issue related to inability to buffer payload to error responses
(which may happen on certain error handling situations).
* fixed recovery from a lost persistent connection leaving process due to
ping being sent while still marked as inactive.
* fixed datadog integration, which was not generating new spans on retried
requests (when `:retries` plugin is enabled).
* fixed splitting strings into key value pairs in cases where the value
would contain a "=", such as in certain base64 payloads.
# 1.2.3
## Improvements
* `:retries` plugin: allow `:max_retries` set to 0 (allows for a soft
disable of retries when using the faraday adapter).
## Bugfixes
* `:oauth` plugin: fix for default auth method being ignored when setting
grant type and scope as options only.
* ensure happy eyeballs-initiated cloned connections also set session
callbacks (caused issues when server would respond with a 421 response, an
event requiring a valid internal callback).
* native resolver cleanly transitions from tcp to udp after truncated DNS
query (causing issues on follow-up CNAME resolution).
* elapsing timeouts now guard against mutation of callbacks while looping
(prevents skipping callbacks in situations where a previous one would
remove itself from the collection).
## Chore
* datadog adapter: do not call `.lazy` on options (avoids deprecation
warning, to be removed in ddtrace 2.0)
# 1.2.2
## Bugfixes
* only raise "unknown option" error when option is not supported, not
anymore when error happens in the setup of a support option.
* usage of `HTTPX::Session#wrap` within a thread with other sessions using
the `:persistent` plugin won't inadvertedly terminate its open connections.
* terminate connections on `IOError` (`SocketError` does not cover them).
* terminate connections on HTTP/2 protocol and handshake errors, which
happen during establishment or termination of a HTTP/2 connection (they
were being previously kept around, although they'd irrecoverable).
* `:oauth` plugin: fixing check preventing the OAuth metadata server
integration path to be exercised.
* fix instantiation of the options headers object with the wrong headers
class.
# 1.2.1
## Bugfixes
* DoH resolver: try resolving other candidates on "domain not found" error
(same behaviour as with native resolver).
* Allow HTTP/2 connections to exit cleanly when TLS session gets corrupted
and termination handshake can't be performed.
ruby_parser version 3.21.1 has been released!
* home: <https://github.com/seattlerb/ruby_parser>
* bugs: <https://github.com/seattlerb/ruby_parser/issues>
* rdoc: <http://docs.seattlerb.org/ruby_parser>
ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
racc--which does by default use a C extension). It outputs
s-expressions which can be manipulated and converted back to ruby via
the ruby2ruby gem.
As an example:
def conditional1 arg1
return 1 if arg1 == 0
return 0
end
becomes:
s(:defn, :conditional1, s(:args, :arg1),
s(:if,
s(:call, s(:lvar, :arg1), :==, s(:lit, 0)),
s(:return, s(:lit, 1)),
nil),
s(:return, s(:lit, 0)))
Tested against 801,039 files from the latest of all rubygems (as of 2013-05):
* 1.8 parser is at 99.9739% accuracy, 3.651 sigma
* 1.9 parser is at 99.9940% accuracy, 4.013 sigma
* 2.0 parser is at 99.9939% accuracy, 4.008 sigma
* 2.6 parser is at 99.9972% accuracy, 4.191 sigma
* 3.0 parser has a 100% parse rate.
* Tested against 2,672,412 unique ruby files across 167k gems.
* As do all the others now, basically.
Changes:
### 3.21.1 / 2024-07-09
* 1 bug fix:
* Fix errors created when string literals are frozen.
sexp_processor version 4.17.2 has been released!
* home: <https://github.com/seattlerb/sexp_processor>
* rdoc: <http://docs.seattlerb.org/sexp_processor>
sexp_processor branches from ParseTree bringing all the generic sexp
processing tools with it. Sexp, SexpProcessor, Environment, etc... all
for your language processing pleasure.
Changes:
### 4.17.2 / 2024-07-09
* 1 bug fix:
* Fix errors created when string literals are frozen (in 2.7 only??).
ruby2ruby version 2.5.1 has been released!
* home: <https://github.com/seattlerb/ruby2ruby>
* rdoc: <http://docs.seattlerb.org/ruby2ruby>
ruby2ruby provides a means of generating pure ruby code easily from
RubyParser compatible Sexps. This makes making dynamic language
processors in ruby easier than ever!
Changes:
### 2.5.1 / 2024-07-08
* 1 bug fix:
* Fix errors created when string literals are frozen. (byroot + zenspider)
Glimmer DSL for Web (Ruby in the Browser Web Frontend Framework) versions
0.3.0, 0.3.1, and 0.3.2 have been released.
GitHub Project : https://github.com/AndyObtiva/glimmer-dsl-web
Ruby Gem : https://rubygems.org/gems/glimmer-dsl-web
Change Log:
0.3.2
Optimize performance (~248% faster) of rendering by changing DSL ordering
to avoid component checks at the top
Optimize performance of formatting html elements by adding Glimmer DSL
shortcut methods
Optimize performance of component expressions by indexing component keywords
Upgrade to glimmer 2.7.9
0.3.1
Optimize Todo MVC performance for filtering between all, active, and
completed (it happens instantly now)
Append Todo MVC todos at the bottom instead of prepending them at the top
(I copied the ES6 version initially which did things the opposite way from
how Todo MVC behaves normally in other versions)
Make Todo MVC "items left" text show "item left" if there is only 1 todo (I
missed this detail before)
Make Todo MVC footer links open a new tab/window (with target: '_blank'
option)
Refactor/Simplify Todo MVC sample code
Upgrade to glimmer 2.7.8
0.3.0
Optimize performance (~170%-226% faster) of rendering by building GUI in
bulk, assembling html as a string from all nested elements and mounting all
HTML at once (instead of making many small DOM mount calls). The trade-off
is not being able to interact with elements until rendering of the complete
hierarchy is complete, which is acceptable because interactions do not
happen till after everything is rendered anyways. Can be disabled by
passing the bulk_render: false option to the top-level component/element of
a frontend app.
Fix issue with not being able to add content to a custom control by opening
a block that should add content inside its markup root element
github_contribs version 2.0.0 has been released!
* home: <https://github.com/seattlerb/github_contribs>
* rdoc: <http://docs.seattlerb.org/github_contribs>
A simple commandline tool that downloads yearly contribution graphs
from github and assembles them into a unified view.
Changes:
### 2.0.0 / 2024-07-01
* 2 major enhancements:
* Completely rewrote data gathering to use graphql. Caches json per year.
* Completely rewrote html generation to be from scratch. Much cleaner.
* 4 minor enhancements:
* Built a legend and non-intrusive popups to provide better UI.
* Dropped nokogiri as a dependency. Now using gh cmdline instead of scraping. This might change.
* No longer defaults to the last 10 years. Now does *all* years if start is not specified.
* Scale all contributions against min/max to make it easier to compare.
minitest version 5.24.1 has been released!
* home: <https://github.com/minitest/minitest>
* bugs: <https://github.com/minitest/minitest/issues>
* rdoc: <https://docs.seattlerb.org/minitest>
* clog: <https://github.com/minitest/minitest/blob/master/History.rdoc>
* vim: <https://github.com/sunaku/vim-ruby-minitest>
* emacs: <https://github.com/arthurnn/minitest-emacs>
minitest provides a complete suite of testing facilities supporting
TDD, BDD, mocking, and benchmarking.
"I had a class with Jim Weirich on testing last week and we were
allowed to choose our testing frameworks. Kirk Haines and I were
paired up and we cracked open the code for a few test
frameworks...
I MUST say that minitest is *very* readable / understandable
compared to the 'other two' options we looked at. Nicely done and
thank you for helping us keep our mental sanity."
-- Wayne E. Seguin
minitest/test is a small and incredibly fast unit testing framework.
It provides a rich set of assertions to make your tests clean and
readable.
minitest/spec is a functionally complete spec engine. It hooks onto
minitest/test and seamlessly bridges test assertions over to spec
expectations.
minitest/benchmark is an awesome way to assert the performance of your
algorithms in a repeatable manner. Now you can assert that your newb
co-worker doesn't replace your linear algorithm with an exponential
one!
minitest/mock by Steven Baker, is a beautifully tiny mock (and stub)
object framework.
minitest/pride shows pride in testing and adds coloring to your test
output. I guess it is an example of how to write IO pipes too. :P
minitest/test is meant to have a clean implementation for language
implementors that need a minimal set of methods to bootstrap a working
test suite. For example, there is no magic involved for test-case
discovery.
"Again, I can't praise enough the idea of a testing/specing
framework that I can actually read in full in one sitting!"
-- Piotr Szotkowski
Comparing to rspec:
rspec is a testing DSL. minitest is ruby.
-- Adam Hawkins, "Bow Before MiniTest"
minitest doesn't reinvent anything that ruby already provides, like:
classes, modules, inheritance, methods. This means you only have to
learn ruby to use minitest and all of your regular OO practices like
extract-method refactorings still apply.
Changes:
### 5.24.1 / 2024-06-29
* 1 bug fix:
* Fix the error message when an extension is invalid value. (y-yagi)