Releases
0.36.0
Compare
Sorry, something went wrong.
No results found
Language changes
(breaking-change) Reject annotations on ivars defined in base class. (#9502 , thanks @waj )
(breaking-change) Make ** be right associative. (#9684 , thanks @asterite )
Macros
Standard library
(breaking-change) Drop deprecated CRC32, Adler32 top-level. (#9530 , thanks @bcardiff )
(breaking-change) Drop deprecated Flate, Gzip, Zip, Zlib top-level. (#9529 , thanks @bcardiff )
(breaking-change) Drop deprecated with_color top-level method. (#9531 , thanks @bcardiff )
(breaking-change) Make SemanticVersion parsing more strict. (#9868 , thanks @hugopl )
Respect explicitly provided type vars for Tuple.new and NamedTuple.new. (#10047 , thanks @HertzDevil )
Fix OptionParser to handle sub-commands with hyphen. (#9465 , thanks @erdnaxeli )
Fix OptionParser to not call handler if value is given to none value handler. (#9603 , thanks @makenowjust )
Make def_equals compare first by reference. (#9650 , thanks @waj )
Remove unnecessary def ==(other) fallbacks. (#9571 , thanks @makenowjust )
Fix OptionParser indentation of option descriptions. (#10183 , thanks @wonderix )
Add #hash to Log::Metadata, Path, SemanticVersion, Socket::Address, URI::Params, and UUID. (#10119 , thanks @straight-shoota )
Refactor several case statements with exhaustive case/in. (#9656 , thanks @Sija )
Remove Kernel mentions in docs. (#9549 , thanks @toddsundsted )
Improve docs for Object#dup. (#10053 , thanks @straight-shoota )
Fix example codes in multiple places. (#9818 , thanks @maiha )
Fix typos, misspelling and styling. (#9636 , #9638 , #9561 , #9786 , #9840 , #9844 , #9854 , #9869 , #10068 , #10123 , #10102 , #10116 , #10229 , #10252 , thanks @kubo , @m-o-e , @mgomes , @philipp-classen , @dukeraphaelng, @camreeves , @docelic , @ilmanzo , @Sija , @pxeger , @oprypin )
Macros
Numeric
(breaking-change) Move Complex#exp, Complex#log, etc. to Math.exp, Math.log overloads. (#9739 , thanks @cristian-lsdb )
(performance) Use unchecked arithmetics in Int#times. (#9511 , thanks @waj )
Check for overflow when extending signed integers to unsigned integers. (#10000 , thanks @HertzDevil )
Fix sprintf for zero left padding a negative number. (#9725 , thanks @asterite )
Fix BigInt#to_64 and BigInt#hash. (#10121 , thanks @oprypin )
Fix BigDecimal#to_s for numbers between -1 and 0. (#9897 , thanks @dukeraphaelng)
Fix Number#step. (#10130 , #10295 , thanks @straight-shoota , @bcardiff )
Make Complex unary plus returns self. (#9719 , thanks @asterite )
Improve Int#lcm and Int#gcd. (#9999 , thanks @HertzDevil )
Add Math::TAU. (#10179 , thanks @j8r )
Add wrapped unary negation to unsigned integer types to allow &- x expressions. (#9947 , thanks @HertzDevil )
Improve documentation of mathematical functions. (#9994 , thanks @HertzDevil )
Text
(breaking-change) Fix String#index not working well for broken UTF-8 sequences. (#9713 , thanks @asterite )
(performance) String: Don't materialize Regex match[0] if not needed. (#9615 , thanks @asterite )
Fix String#rindex default offset for matching empty regex correctly. (#9690 , thanks @makenowjust )
Add various String#delete_at methods. (#9398 , thanks @asterite )
Raise if passing null Pointer to String. (#9653 , thanks @jgaskins )
Add Regex#capture_count. (#9746 , thanks @Sija )
Add Regex::MatchData#[] overloading to Range. (#10076 , thanks @makenowjust )
Fix duplicates in String documentation. (#9987 , thanks @Nicolab )
Add docs for substitution to Kernel.sprintf. (#10227 , thanks @straight-shoota )
Collections
(breaking-change) Make Hash#reject!, Hash#select!, and Hash#compact! consistent with Array and return self. (#9904 , thanks @caspiano )
(breaking-change) Deprecate Hash#delete_if in favor of Hash#reject!, add Dequeue#reject! and Dequeue#select!. (#9878 , thanks @caspiano )
(breaking-change) Change Set#delete to return Bool. (#9590 , thanks @j8r )
(breaking-change) Drop deprecated Enumerable#grep. (#9711 , thanks @j8r )
(breaking-change) Remove Hash#key_index . (#10016 , thanks @asterite )
(breaking-change) Deprecate StaticArray#[]=(value) in favor of StaticArray#fill. (#10027 , thanks @HertzDevil )
(breaking-change) Rename Set#{sub,super}set? to {sub,super}set_of?. (#10187 , thanks @straight-shoota )
(performance) Optimize Array#shift and Array#unshift. (#10081 , thanks @asterite )
(performance) Array#rotate optimization for small arrays. (#8516 , thanks @wontruefree)
Fix Hash#dup and Hash#clone to return correct type for subclasses. (#9871 , thanks @vlazar )
Fix Iterator#cons_pair return type. (#9788 , thanks @asterite )
Fix key type restriction of Hash#merge block. (#9495 , thanks @makenowjust )
Fix Range#step. (#10203 , thanks @straight-shoota )
Let Range#step delegate to begin.step and allow float based ranges to be stepped. (#10209 , thanks @straight-shoota )
Fix Indexable#join with IO. (#10152 , thanks @straight-shoota )
Fix Flatten for value-type iterators. (#10096 , thanks @f-fr )
Fix Indexable.range_to_index_and_count to not raise IndexError. (#10191 , thanks @straight-shoota )
Handle recursive structures in def_clone, Hash, Array, Dequeue. (#9800 , thanks @asterite )
Add BitArray#dup. (#9550 , thanks @andremedeiros )
Allow Iterator#zip to take multiple Iterator arguments. (#9944 , thanks @HertzDevil )
Add Iterator#with_object(obj, &). (#9956 , thanks @HertzDevil )
Always clear unused bits of BitArrays. (#10008 , thanks @HertzDevil )
Update Enumerable#sum(initial, &) docs. (#9860 , thanks @jage )
Add Array#unsafe_build. (#10092 , thanks @straight-shoota )
Add identity methods for #sum and #product. (#10151 , thanks @straight-shoota )
Move combinations, permutations, etc., from Array to Indexable. (#10235 , thanks @wonderix )
Move sampling methods to Enumerable. (#10129 , thanks @HertzDevil )
Use Set#add in Set#add documentation. (#9441 , thanks @hugopl )
Improve Hash#values_at docs. (#9955 , thanks @j8r )
Serialization
(breaking-change) Drop deprecated JSON.mapping. (#9527 , thanks @bcardiff )
(breaking-change) Drop deprecated YAML.mapping. (#9526 , thanks @bcardiff )
Fix flag enum deserialization from Int64. (#10145 , thanks @straight-shoota )
Add support for selective JSON and YAML serialization. (#9567 , thanks @stakach )
YAML: correctly serialize infinity and NaN. (#9780 , thanks @asterite )
YAML: allow using discriminator in contained types. (#9851 , thanks @asterite )
Support more literal types in JSON::Serializable.use_json_discriminator macro. (#9222 , thanks @voximity )
Support more literal types in YAML::Serializable.use_yaml_discriminator macro. (#10149 , thanks @straight-shoota )
Add JSON serialization to big number types. (#9898 , #10054 , thanks @dukeraphaelng, @Sija )
Handle namespaced defaults in JSON::Serializable and YAML::Serializable. (#9733 , thanks @jgaskins )
Standardize YAML error location. (#9273 , thanks @straight-shoota )
Update YAML::Field(converter) argument docs. (#9557 , thanks @dscottboggs )
Use content instead of value when inspect XML::Attribute. (#9592 , thanks @asterite )
Let JSON::PullParser#on_key yield self and return value. (#10028 , thanks @straight-shoota )
Cleanup YAML/JSON Any#dig methods. (#9415 , thanks @j8r )
Document JSON::PullParser. (#9983 , thanks @erdnaxeli )
Clarify Serialization Converter requirements and examples. (#10202 , thanks @Daniel-Worrall )
Time
Files
(breaking-change) Make File.size and FileInfo#size be Int64 instead of UInt64. (#10015 , thanks @asterite )
(breaking-change) Fix FileUtils.cp_r when destination is a directory. (#10180 , thanks @wonderix )
Enable large-file support on i386-linux-gnu. (#9478 , thanks @kubo )
Fix glob not following symdir directories. (#9910 , thanks @straight-shoota )
Windows: allow creating symlinks without admin rights. (#9767 , thanks @oprypin )
Windows: allow touching directories. (#10284 , thanks @straight-shoota )
Fix Dir.glob when readdir doesn't report file type. (#9877 , thanks @straight-shoota )
Add Path#stem. (#10037 , thanks @straight-shoota )
Move File#fsync, File#flock_exclusive, File#flock_shared, and File#flock_unlock methods to IO::FileDescriptor. (#9794 , thanks @naqvis )
Call IO#flush on builder finish methods. (#9321 , thanks @straight-shoota )
Support using Path in MIME and File::Error APIs. (#10034 , thanks @Blacksmoke16 )
Windows: enable FileUtils specs. (#9902 , thanks @oprypin )
Networking
(breaking-change) Rename HTTP::Params to URI::Params. (#10098 , thanks @straight-shoota )
(breaking-change) Rename URI#full_path to URI#request_target. (#10099 , thanks @straight-shoota )
(breaking-change) URI::Params#[]= replaces all values. (#9605 , thanks @asterite )
Fix type of HTTP::Server::Response#closed? to Bool. (#9489 , thanks @straight-shoota )
Fix Socket#accept to obey read_timeout. (#9538 , thanks @waj )
Fix Socket to allow datagram over unix sockets. (#9838 , thanks @bcardiff )
Fix HTTP::Headers#== and HTTP::Headers#hash. (#10186 , thanks @straight-shoota )
Make HTTP::StaticFileHandler serve pre-gzipped content. (#9626 , thanks @waj )
Delete Content-Encoding and Content-Length headers after decompression in HTTP::Client::Response. (#5212 , thanks @maiha )
Delay setup of HTTP::CompressHandler until content is written. (#9625 , thanks @waj )
Allow HTTP::Client to work with any IO. (#9543 , thanks @waj )
Make HTTP::Server don't override content-length if already set. (#9726 , thanks @asterite )
Do not share underlying hash between URI::Params. (#9641 , thanks @jgaskins )
Add HTTP::Cookie::SameSite::None. (#9262 , thanks @j8r )
Add HTTP::Client logging and basic instrumentation. (#9756 , thanks @bcardiff )
Add HTTP::Request#hostname+ utils. (#10029 , thanks @straight-shoota )
Add URI#authority. (#10100 , thanks @straight-shoota )
Add Socket::IPAddress#private?. (#9517 , thanks @jgillich )
Make Socket::IpAddress a bit more type-friendly. (#9528 , thanks @asterite )
Make specs pass in non-IPv6 environments. (#9438 , thanks @jhass )
Make specs pending instead of failing in no multi-cast environments. (#9566 , thanks @jhass )
Remove invalid optimization on Encoding. (#9724 , thanks @asterite )
Drop RemoteAddressType private alias. (#9777 , thanks @bcardiff )
Add documentation for HTTP::WebSocket. (#9761 , #9778 , thanks @ibraheemdev , @bcardiff )
Fix HTTP docs. (#9612 , #9627 , #9717 , thanks @RX14 , @asterite , @3n-k1)
Fix reference to TCP protocol in docs. (#9457 , thanks @dprobinson )
Logging
(breaking-change) Drop deprecated Logger. (#9525 , thanks @bcardiff )
(performance) Add logging dispatcher to defer entry dispatch from current fiber. (#9432 , thanks @waj )
Take timestamp as an argument in Log::Entry initializer. (#9570 , thanks @Sija )
Improve docs regarding Log.setup. (#9497 , #9559 , thanks @caspiano , @jjlorenzo )
Crypto
(security) Fix "force-peer" verify_mode setup. (#9668 , thanks @PhilAtWysdom )
(security) Force secure renegotiation on server to prevent Secure Client-Initiated Renegotiation vulnerability attack. (#9815 , thanks @bcardiff )
(breaking-change) Refactor Digest and introduce Digest::MD5, Digest::SHA1, Digest::SHA256, Digest::SHA512 backed by openssl. (#9864 , thanks @bcardiff )
Fix overflows in MD5 and SHA1. (#9781 , thanks @bcardiff )
Add OpenSSL::SSL::Context#set_modern_ciphers and related methods to set ciphers and cipher suites in a more portable fashion. (#9814 , #10298 , thanks @bcardiff )
Add OpenSSL::SSL::Context#security_level. (#9831 , thanks @bcardiff )
OpenSSL::digest add require for OpenSSL::Error. (#10173 , thanks @wonderix )
Concurrency
(breaking-change) Hide Channel internal implementation methods. (#9564 , thanks @j8r )
Channel#close returns true unless the channel was already closed. (#9443 , thanks @waj )
Support splat expressions inside spawn macro. (#10234 , thanks @HertzDevil )
Remove incorrect note about negative timeout not triggering. (#10131 , thanks @straight-shoota )
System
Fix Process.find_executable to check the found path is executable and add Windows support. (#9365 , thanks @oprypin )
Add Process.parse_arguments and fix CRYSTAL_OPTS parsing. (#9518 , thanks @makenowjust )
Port to NetBSD. (#9360 , thanks @Niacat )
Add note about raising IO::Error to Process methods. (#9894 , thanks @straight-shoota )
Handle errors in User/Group from_name?/from_id? as not found. (#10182 , thanks @wonderix )
define the SC_PAGESIZE constant on more platforms. (#9821 , thanks @carlhoerberg )
Runtime
Fix bug with passing many args then a struct in Win64 C lib ABI. (#9520 , thanks @oprypin )
Fix C ABI for AArch64. (#9430 , thanks @jhass )
Disable LLVM Global Isel. (#9401 , #9562 , thanks @jhass , @bcardiff )
Print original exception after failing to raise it. (#9220 , thanks @jhass )
Use Dwarf information on Exception::CallStack.print_frame and crash stacktraces. (#9792 , #9852 , thanks @bcardiff )
MachO: Handle missing LC_UUID. (#9706 , thanks @bcardiff )
Allow WeakRef to compile with -Dgc_none. (#9806 , thanks @bcardiff )
Fix example in Crystal.main docs. (#9736 , thanks @hugopl )
Add a C ABI spec for accepting a large struct - failing on Win32, AArch64. (#9534 , thanks @oprypin )
Don't relativize paths outside of current directory in backtrace. (#10177 , thanks @Sija )
Avoid loading DWARF if env var CRYSTAL_LOAD_DWARF=0. (#10261 , thanks @bcardiff )
Fix DWARF loading in FreeBSD. (#10259 , thanks @bcardiff )
Print unhandled exceptions from main routine with #inspect_with_backtrace. (#10086 , thanks @straight-shoota )
Spec
Compiler
(performance) Don't use init check for constants that are declared before read. (#9801 , thanks @asterite )
(performance) Don't use init check for class vars initialized before read. (#9995 , thanks @asterite )
(performance) Don't use init flag for string constants. (#9808 , thanks @asterite )
Run side effects for class var with constant initializer. (#10010 , thanks @asterite )
Fix VaList and disable va_arg for AArch64. (#9422 , thanks @jhass )
Fix cache corrupted when compilation is cancelled. (#9558 , thanks @waj )
Consider select as an openning keyword in macros. (#9624 , thanks @asterite )
Use function attribute frame-pointer. (#9361 , thanks @kubo39 )
Make missing __crystal_raise_overflow error more clear. (#9686 , thanks @3n-k1)
Forbid calls with both block arg and block. (#10026 , thanks @HertzDevil )
Add method name to frozen type error. (#10057 , thanks @straight-shoota )
Use file lock to avoid clashes between compilations. (#10050 , thanks @asterite )
Add a couple of missing end locations to some nodes. (#10012 , thanks @asterite )
Don't visit enum member expanded by macro twice. (#10105 , thanks @asterite )
Fix crash when matching arguments against splat restriction after positional parameters. (#10172 , thanks @HertzDevil )
Fix parsing of do end blocks inside parenthesis. (#10189 , #10207 , thanks @straight-shoota , @Sija )
Fix regex parsing after then in case/when. (#10274 , thanks @asterite )
Fix error message for non-exhaustive case statements of 3 or more Bool/Enum values. (#10194 , thanks @HertzDevil )
Forbid reopening generic types with different type var splats. (#10167 , thanks @HertzDevil )
Apply stricter checks to macro names. (#10069 , thanks @HertzDevil )
Reword error message when including/inheriting generic type without type vars. (#10206 , thanks @HertzDevil )
Print a message pointing to the online playground if compiled without it. (#9622 , thanks @deiv )
Handle typedef type restriction against alias type correctly. (#9490 , thanks @makenowjust )
Initial support LLVM 11.0 with known issue regarding optimizations #10220 . (#9829 , #10293 , thanks @bcardiff )
Add support for --mcpu native. (#10264 , #10276 , thanks @BlobCodes , @bcardiff )
Fix Process.run uses in compiler to handle exec failure. (#9893 , #9911 , #9913 , thanks @straight-shoota , @bcardiff , @oprypin )
Fix Command#report_warnings to gracefully handle missing Compiler#program. (#9866 , thanks @straight-shoota )
Add Program#host_compiler. (#9920 , thanks @straight-shoota )
Add Crystal::Path#name_size implementation. (#9380 , thanks @straight-shoota )
Refactor helper methods in call_error.cr. (#9376 , thanks @straight-shoota )
Delegate def error location to implementing type. (#10159 , thanks @straight-shoota )
Refactor Crystal::Exception to Crystal::CodeError. (#10197 , thanks @straight-shoota )
Refactor check_single_def_error_message. (#10196 , thanks @straight-shoota )
Code clean-ups. (#9468 , thanks @makenowjust )
Refactors for compiler specs. (#9379 , thanks @straight-shoota )
Windows CI: Fix and enable compiler specs. (#9348 , #9560 , thanks @oprypin )
Language semantics
(breaking-change) Handle union restrictions with free vars properly. (#10267 , thanks @HertzDevil )
(breaking-change) Disallow keywords as block argument name. (#9704 , thanks @asterite )
(breaking-change) Fix a-b -c incorrectly parsed as a - (b - c). (#9652 , #9884 , thanks @asterite , @bcardiff )
(breaking-change) Check abstract def implementations with splats, default values and keyword arguments. (#9585 , thanks @waj )
(breaking-change) Make abstract def return type warning an error. (#9810 , thanks @bcardiff )
(breaking-change) Error when abstract def implementation adds a type restriction. (#9634 , thanks @waj )
(breaking-change) Don't interpret Proc typedefs as aliases. (#10254 , thanks @HertzDevil )
(breaking-change) Remove the special logic of union of pointer and nil. (#9872 , thanks @asterite )
Check abstract def implementations with double splats. (#9633 , thanks @waj )
Make inherited hook work through generic instances. (#9701 , thanks @asterite )
Attach doc comment to annotation in macro expansion. (#9630 , thanks @makenowjust )
Marks else branch of exhaustive case as unreachable, improving resulting type. (#9659 , thanks @Sija )
Make Pointer(T)#value= stricter for generic arguments. (#10224 , thanks @asterite )
Extend type filtering of conditional clauses to arbitrary logical connectives. (#10147 , thanks @HertzDevil )
Support NamedTuple instance restrictions in redefinition checks. (#10245 , thanks @HertzDevil )
Respect block arg restriction when given block has a splat parameter. (#10242 , thanks @HertzDevil )
Make overloads without double splat more specialized than overloads with one. (#10185 , thanks @HertzDevil )
Support type splats inside explicit Unions in type restrictions. (#10174 , thanks @HertzDevil )
Fix splats on generic arguments. (#9859 , thanks @asterite )
Correctly compute line number after macro escape. (#9858 , thanks @asterite )
Fix bug for C structs assigned to a type. (#9743 , thanks @matthewmcgarvey )
Promote C variadic args as needed. (#9747 , thanks @asterite )
Fix parsing of def self./ and def self.%. (#9721 , thanks @asterite )
Fix ASTNode#to_s for parenthesized expression in block. (#9629 , thanks @makenowjust )
Don't form a closure on typeof(@ivar). (#9723 , thanks @asterite )
Add a few missing expanded.transform self. (#9506 , thanks @asterite )
Treat super as special only if it doesn't have a receiver (i.e.: allow super user defined methods). (#10011 , thanks @asterite )
Implement auto-casting in a better way. (#9501 , thanks @asterite )
Try literal type first when autocasting to unions types. (#9610 , thanks @asterite )
Correctly pass named arguments for previous_def and super. (#9834 , thanks @asterite )
Turn proc pointer into proc literal in some cases to closure needed variables. (#9824 , thanks @asterite )
Fix proc of self causing multi-dispatch. (#9972 , thanks @asterite )
Fixes and improvements to closured variables. (#9986 , thanks @asterite )
Don't merge proc types but allow assigning them if they are compatible. (#9971 , thanks @asterite )
Reset nilable vars inside block method. (#10091 , thanks @asterite )
Reset free vars before attempting each overload match. (#10271 , thanks @HertzDevil )
Let offsetof support Tuples. (#10218 , thanks @hugopl )
Tools
Formatter
Avoid adding a newline after comment before end. (#9722 , thanks @asterite )
Apply string pieces combination even if heredoc has no indent. (#9475 , thanks @makenowjust )
Correctly format named arguments like foo:bar. (#9740 , thanks @asterite )
Handle comment before do in a separate line. (#9762 , thanks @asterite )
Fix indent for the first comment of select when/else. (#10002 , thanks @makenowjust )
Reduce redundant newlines at end of begin ... end. (#9741 , thanks @makenowjust )
Let formatter normalize crystal language tag for code blocks in doc comments. (#10156 , thanks @straight-shoota )
Fix indentation of trailing comma in call with a block. (#10223 , thanks @makenowjust )
Doc generator
Linkification: refactor, fix edge cases and add specs. (#9817 , thanks @oprypin )
Exclude types from docs who are in nodoc namespaces. (#9819 , thanks @Blacksmoke16 )
Fix link generation for lib type reference. (#9931 , thanks @straight-shoota )
Correctly render underscores in code blocks. (#9822 , thanks @Blacksmoke16 )
Fix some HTML in docs generator. (#9918 , thanks @straight-shoota )
Correctly handle broken source code on syntax highlighting. (#9416 , thanks @makenowjust )
Re-introduce canonical URL for docs generator. (#9917 , thanks @straight-shoota )
Expose "location" and "args_html" in doc JSON. (#10122 , #10200 , thanks @oprypin )
Expose "aliased_html" in doc JSON, make "aliased" field nullable. (#10117 , thanks @oprypin )
Support linking to section headings in same tab. (#9826 , thanks @Blacksmoke16 )
Do not highlight undef as a keyword, it's not. (#10216 , thanks @rhysd )
Others
CI improvements and housekeeping. (#9507 , #9513 , #9512 , #9515 , #9514 , #9609 , #9642 , #9758 , #9763 , #9850 , #9906 , #9907 , #9912 , #10078 , #10217 , #10255 , thanks @jhass , @bcardiff , @waj , @oprypin , @j8r , @Sija )
Add timeout to individual specs on multi-threading. (#9865 , thanks @bcardiff )
Initial AArch64 CI. (#9508 , #9582 , thanks @jhass , @waj )
Update distribution-scripts and use LLVM 10 on Linux packages. (#9710 , thanks @bcardiff )
Update distribution-scripts and publish nightly packages to bintray. (#9663 , thanks @bcardiff )
Update distribution-scripts to use Shards v0.13.0. (#10280 , thanks @bcardiff )
Initial Nix development environment. Use Nix for OSX CI instead of homebrew. (#9727 , #9776 , thanks @bcardiff )
Prevent recursive call in bin/crystal wrapper. (#9505 , thanks @jhass )
Allow overriding CRYSTAL_PATH in bin/crystal wrapper . (#9632 , thanks @bcardiff )
Makefile: support changing the current crystal via env var and argument. (#9471 , thanks @bcardiff )
Makefile: improve supported LLVM versions message. (#10221 , #10269 , thanks @rdp , @straight-shoota )
Update CONTRIBUTING.md. (#9448 , #10249 , #10250 , thanks @wontruefree, @sanks64, @straight-shoota )
Refactor RedBlackTree sample to use an enum instead of symbols. (#10233 , thanks @Sija )
Add security policy. (#9984 , thanks @straight-shoota )
Use name: nightly in docs-versions.sh for HEAD. (#9915 , thanks @straight-shoota )
Use canonical base url for generating docs. (#10007 , thanks @straight-shoota )
Remove Vagrantfile. (#10033 , thanks @straight-shoota )
Update NOTICE's copyright year to 2021. (#10166 , thanks @matiasgarciaisaia )
You can’t perform that action at this time.