grpc 1.73.0 → 1.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +38 -17
- data/include/grpc/create_channel_from_endpoint.h +54 -0
- data/include/grpc/credentials.h +11 -5
- data/include/grpc/event_engine/event_engine.h +74 -17
- data/include/grpc/grpc_posix.h +20 -1
- data/include/grpc/impl/channel_arg_names.h +2 -4
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/support/json.h +24 -0
- data/src/core/call/interception_chain.h +7 -11
- data/src/core/channelz/channel_trace.cc +213 -115
- data/src/core/channelz/channel_trace.h +380 -86
- data/src/core/channelz/channelz.cc +270 -181
- data/src/core/channelz/channelz.h +168 -55
- data/src/core/channelz/channelz_registry.cc +2 -1
- data/src/core/channelz/channelz_registry.h +24 -0
- data/src/core/channelz/property_list.cc +357 -0
- data/src/core/channelz/property_list.h +202 -0
- data/src/core/channelz/ztrace_collector.h +3 -2
- data/src/core/client_channel/backup_poller.cc +17 -2
- data/src/core/client_channel/client_channel.cc +17 -28
- data/src/core/client_channel/client_channel_filter.cc +19 -29
- data/src/core/client_channel/config_selector.h +8 -2
- data/src/core/client_channel/dynamic_filters.cc +5 -6
- data/src/core/client_channel/dynamic_filters.h +1 -1
- data/src/core/client_channel/global_subchannel_pool.cc +4 -1
- data/src/core/client_channel/retry_filter.cc +21 -27
- data/src/core/client_channel/retry_filter.h +10 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
- data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
- data/src/core/client_channel/retry_interceptor.cc +30 -44
- data/src/core/client_channel/retry_interceptor.h +18 -17
- data/src/core/client_channel/retry_throttle.cc +46 -61
- data/src/core/client_channel/retry_throttle.h +17 -39
- data/src/core/client_channel/subchannel.cc +43 -19
- data/src/core/client_channel/subchannel.h +8 -0
- data/src/core/config/config_vars.cc +2 -0
- data/src/core/config/core_configuration.cc +1 -0
- data/src/core/config/core_configuration.h +11 -0
- data/src/core/credentials/call/call_creds_registry.h +125 -0
- data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
- data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
- data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
- data/src/core/credentials/call/jwt_util.cc +70 -0
- data/src/core/credentials/call/jwt_util.h +32 -0
- data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
- data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
- data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
- data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
- data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
- data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
- data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
- data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
- data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
- data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
- data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
- data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
- data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
- data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
- data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
- data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
- data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
- data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
- data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
- data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
- data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
- data/src/core/filter/auth/auth_filters.h +0 -25
- data/src/core/filter/auth/client_auth_filter.cc +0 -118
- data/src/core/filter/filter_args.h +9 -23
- data/src/core/handshaker/handshaker.cc +23 -14
- data/src/core/handshaker/handshaker.h +3 -0
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
- data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
- data/src/core/handshaker/security/secure_endpoint.cc +70 -25
- data/src/core/handshaker/security/security_handshaker.cc +4 -1
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
- data/src/core/lib/channel/channel_args.cc +15 -0
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/channel_stack.cc +22 -23
- data/src/core/lib/channel/channel_stack.h +9 -7
- data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
- data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
- data/src/core/lib/channel/promise_based_filter.h +5 -5
- data/src/core/lib/debug/trace_impl.h +0 -1
- data/src/core/lib/event_engine/ares_resolver.cc +165 -46
- data/src/core/lib/event_engine/ares_resolver.h +48 -2
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
- data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
- data/src/core/lib/event_engine/event_engine.cc +7 -0
- data/src/core/lib/event_engine/extensions/channelz.h +10 -6
- data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
- data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
- data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
- data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
- data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
- data/src/core/lib/event_engine/shim.cc +9 -0
- data/src/core/lib/event_engine/shim.h +3 -0
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
- data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
- data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
- data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
- data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
- data/src/core/lib/experiments/experiments.cc +45 -93
- data/src/core/lib/experiments/experiments.h +21 -51
- data/src/core/lib/iomgr/endpoint.cc +4 -3
- data/src/core/lib/iomgr/endpoint.h +7 -4
- data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
- data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
- data/src/core/lib/iomgr/tcp_posix.cc +12 -6
- data/src/core/lib/iomgr/tcp_windows.cc +3 -2
- data/src/core/lib/promise/activity.h +1 -0
- data/src/core/lib/promise/arena_promise.h +23 -7
- data/src/core/lib/promise/detail/promise_factory.h +10 -0
- data/src/core/lib/promise/detail/promise_like.h +118 -11
- data/src/core/lib/promise/detail/promise_variant.h +50 -0
- data/src/core/lib/promise/detail/seq_state.h +687 -548
- data/src/core/lib/promise/if.h +20 -0
- data/src/core/lib/promise/inter_activity_latch.h +147 -0
- data/src/core/lib/promise/inter_activity_mutex.h +547 -0
- data/src/core/lib/promise/loop.h +65 -3
- data/src/core/lib/promise/map.h +24 -0
- data/src/core/lib/promise/match_promise.h +103 -0
- data/src/core/lib/promise/mpsc.cc +425 -0
- data/src/core/lib/promise/mpsc.h +490 -0
- data/src/core/lib/promise/party.cc +50 -1
- data/src/core/lib/promise/party.h +66 -1
- data/src/core/lib/promise/race.h +31 -0
- data/src/core/lib/promise/seq.h +4 -1
- data/src/core/lib/promise/status_flag.h +7 -0
- data/src/core/lib/promise/try_seq.h +4 -1
- data/src/core/lib/promise/wait_set.cc +28 -0
- data/src/core/lib/promise/wait_set.h +86 -0
- data/src/core/lib/resource_quota/arena.h +19 -0
- data/src/core/lib/slice/slice.h +5 -0
- data/src/core/lib/surface/channel_create.cc +88 -13
- data/src/core/lib/surface/channel_create.h +4 -0
- data/src/core/lib/surface/channel_init.cc +164 -47
- data/src/core/lib/surface/channel_init.h +64 -1
- data/src/core/lib/surface/filter_stack_call.cc +18 -9
- data/src/core/lib/surface/init.cc +6 -15
- data/src/core/lib/surface/legacy_channel.cc +3 -5
- data/src/core/lib/surface/legacy_channel.h +3 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/promise_endpoint.cc +110 -0
- data/src/core/lib/transport/promise_endpoint.h +307 -0
- data/src/core/load_balancing/child_policy_handler.cc +2 -4
- data/src/core/load_balancing/delegating_helper.h +2 -3
- data/src/core/load_balancing/health_check_client.cc +1 -5
- data/src/core/load_balancing/lb_policy.h +1 -3
- data/src/core/load_balancing/oob_backend_metric.cc +1 -5
- data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
- data/src/core/load_balancing/xds/cds.cc +10 -1
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/resolver/xds/xds_config.cc +6 -3
- data/src/core/resolver/xds/xds_config.h +9 -4
- data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
- data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
- data/src/core/resolver/xds/xds_resolver.cc +31 -11
- data/src/core/server/server.cc +83 -12
- data/src/core/server/server.h +21 -2
- data/src/core/server/xds_server_config_fetcher.cc +63 -25
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/telemetry/context_list_entry.cc +38 -0
- data/src/core/telemetry/context_list_entry.h +42 -12
- data/src/core/telemetry/stats_data.cc +233 -207
- data/src/core/telemetry/stats_data.h +250 -153
- data/src/core/telemetry/tcp_tracer.h +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
- data/src/core/tsi/fake_transport_security.cc +17 -0
- data/src/core/tsi/ssl_transport_security.cc +2 -0
- data/src/core/tsi/transport_security_grpc.cc +8 -0
- data/src/core/tsi/transport_security_grpc.h +15 -0
- data/src/core/util/backoff.cc +1 -5
- data/src/core/util/backoff.h +1 -0
- data/src/core/util/down_cast.h +1 -1
- data/src/core/util/function_signature.h +15 -1
- data/src/core/util/http_client/httpcli.cc +12 -5
- data/src/core/util/http_client/httpcli.h +4 -1
- data/src/core/util/latent_see.h +8 -5
- data/src/core/util/log.cc +4 -0
- data/src/core/util/memory_usage.h +268 -0
- data/src/core/util/per_cpu.cc +2 -0
- data/src/core/util/per_cpu.h +7 -0
- data/src/core/util/shared_bit_gen.h +20 -0
- data/src/core/util/single_set_ptr.h +2 -2
- data/src/core/util/upb_utils.h +42 -0
- data/src/core/util/uri.cc +3 -2
- data/src/core/util/useful.h +53 -2
- data/src/core/util/wait_for_single_owner.cc +31 -0
- data/src/core/util/wait_for_single_owner.h +24 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
- data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
- data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
- data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
- data/src/core/xds/grpc/xds_http_filter.h +7 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
- data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
- data/src/core/xds/grpc/xds_server_grpc.h +10 -2
- data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
- data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
- data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
- data/src/core/xds/xds_client/xds_client.cc +26 -5
- data/src/ruby/ext/grpc/extconf.rb +2 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -8
- data/src/ruby/ext/grpc/rb_channel.c +72 -568
- data/src/ruby/ext/grpc/rb_channel.h +0 -3
- data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
- data/src/ruby/ext/grpc/rb_grpc.c +9 -5
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/ext/grpc/rb_loader.c +0 -4
- data/src/ruby/ext/grpc/rb_server.c +31 -50
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/core_spec.rb +22 -0
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
- data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
- data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
- data/third_party/abseil-cpp/absl/base/config.h +20 -129
- data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
- data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
- data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
- data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
- data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
- data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
- data/third_party/abseil-cpp/absl/base/options.h +3 -80
- data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
- data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
- data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
- data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
- data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
- data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
- data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
- data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
- data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
- data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
- data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
- data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
- data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
- data/third_party/abseil-cpp/absl/log/check.h +2 -1
- data/third_party/abseil-cpp/absl/log/globals.h +4 -5
- data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
- data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
- data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
- data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
- data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
- data/third_party/abseil-cpp/absl/log/log.h +48 -35
- data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
- data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
- data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
- data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
- data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
- data/third_party/abseil-cpp/absl/random/random.h +88 -53
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
- data/third_party/abseil-cpp/absl/status/status.cc +4 -8
- data/third_party/abseil-cpp/absl/status/status.h +8 -8
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
- data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
- data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
- data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
- data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
- data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
- data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
- data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
- data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
- data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
- data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
- data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
- data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
- data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
- data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
- data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
- data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
- data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
- data/third_party/abseil-cpp/absl/time/time.h +20 -15
- data/third_party/abseil-cpp/absl/types/optional.h +7 -747
- data/third_party/abseil-cpp/absl/types/span.h +13 -11
- data/third_party/abseil-cpp/absl/types/variant.h +5 -784
- data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
- metadata +72 -20
- data/src/core/lib/event_engine/forkable.cc +0 -105
- data/src/core/lib/event_engine/forkable.h +0 -67
- data/src/core/lib/iomgr/python_util.h +0 -46
- data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
- data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
- data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
- data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
- data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
@@ -23,17 +23,23 @@
|
|
23
23
|
#endif
|
24
24
|
|
25
25
|
#include <algorithm>
|
26
|
+
#include <cassert>
|
26
27
|
#include <cerrno>
|
27
28
|
#include <cstdint>
|
28
29
|
#include <cstdlib>
|
29
30
|
#include <cstring>
|
31
|
+
#include <string>
|
32
|
+
#include <vector>
|
30
33
|
|
34
|
+
#include "absl/base/config.h"
|
31
35
|
#include "absl/base/dynamic_annotations.h"
|
32
36
|
#include "absl/base/internal/raw_logging.h"
|
33
37
|
#include "absl/strings/ascii.h"
|
34
38
|
#include "absl/strings/escaping.h"
|
35
39
|
#include "absl/strings/string_view.h"
|
36
40
|
#include "absl/strings/strip.h"
|
41
|
+
#include "absl/types/optional.h"
|
42
|
+
#include "absl/types/span.h"
|
37
43
|
|
38
44
|
#if defined(__native_client__)
|
39
45
|
|
@@ -167,24 +173,27 @@ bool ReadSeedMaterialFromDevURandom(absl::Span<uint32_t> values) {
|
|
167
173
|
size_t buffer_size = sizeof(uint32_t) * values.size();
|
168
174
|
|
169
175
|
int dev_urandom = open(kEntropyFile, O_RDONLY);
|
170
|
-
|
171
|
-
|
176
|
+
if (dev_urandom < 0) {
|
177
|
+
ABSL_RAW_LOG(ERROR, "Failed to open /dev/urandom.");
|
172
178
|
return false;
|
173
179
|
}
|
174
180
|
|
175
|
-
while (
|
181
|
+
while (buffer_size > 0) {
|
176
182
|
ssize_t bytes_read = read(dev_urandom, buffer, buffer_size);
|
177
183
|
int read_error = errno;
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
+
if (bytes_read == -1 && read_error == EINTR) {
|
185
|
+
// Interrupted, try again.
|
186
|
+
continue;
|
187
|
+
} else if (bytes_read <= 0) {
|
188
|
+
// EOF, or error.
|
189
|
+
break;
|
184
190
|
}
|
191
|
+
buffer += bytes_read;
|
192
|
+
buffer_size -= static_cast<size_t>(bytes_read);
|
185
193
|
}
|
194
|
+
|
186
195
|
close(dev_urandom);
|
187
|
-
return
|
196
|
+
return buffer_size == 0;
|
188
197
|
}
|
189
198
|
|
190
199
|
bool ReadSeedMaterialFromOSEntropyImpl(absl::Span<uint32_t> values) {
|
@@ -251,8 +260,7 @@ absl::optional<uint32_t> GetSaltMaterial() {
|
|
251
260
|
static const auto salt_material = []() -> absl::optional<uint32_t> {
|
252
261
|
uint32_t salt_value = 0;
|
253
262
|
|
254
|
-
if (
|
255
|
-
MakeSpan(&salt_value, 1))) {
|
263
|
+
if (ReadSeedMaterialFromOSEntropy(absl::MakeSpan(&salt_value, 1))) {
|
256
264
|
return salt_value;
|
257
265
|
}
|
258
266
|
|
@@ -21,7 +21,7 @@
|
|
21
21
|
#include <string>
|
22
22
|
#include <vector>
|
23
23
|
|
24
|
-
#include "absl/base/
|
24
|
+
#include "absl/base/config.h"
|
25
25
|
#include "absl/random/internal/fast_uniform_bits.h"
|
26
26
|
#include "absl/types/optional.h"
|
27
27
|
#include "absl/types/span.h"
|
@@ -54,7 +54,7 @@ static_assert(kEntropyBlocksNeeded > 0,
|
|
54
54
|
// to the C++ Standard "Seed Sequence" concept [rand.req.seedseq].
|
55
55
|
//
|
56
56
|
// If values.data() == nullptr, the behavior is undefined.
|
57
|
-
|
57
|
+
[[nodiscard]]
|
58
58
|
bool ReadSeedMaterialFromOSEntropy(absl::Span<uint32_t> values);
|
59
59
|
|
60
60
|
// Attempts to fill a span of uint32_t-values using variates generated by an
|
@@ -65,8 +65,8 @@ bool ReadSeedMaterialFromOSEntropy(absl::Span<uint32_t> values);
|
|
65
65
|
//
|
66
66
|
// If urbg == nullptr or values.data() == nullptr, the behavior is undefined.
|
67
67
|
template <typename URBG>
|
68
|
-
|
69
|
-
|
68
|
+
[[nodiscard]] bool ReadSeedMaterialFromURBG(URBG* urbg,
|
69
|
+
absl::Span<uint32_t> values) {
|
70
70
|
random_internal::FastUniformBits<uint32_t> distr;
|
71
71
|
|
72
72
|
assert(urbg != nullptr && values.data() != nullptr);
|
@@ -94,7 +94,7 @@ void MixIntoSeedMaterial(absl::Span<const uint32_t> sequence,
|
|
94
94
|
//
|
95
95
|
// Salt is obtained only once and stored in static variable.
|
96
96
|
//
|
97
|
-
// May return empty value if
|
97
|
+
// May return empty value if obtaining the salt was not possible.
|
98
98
|
absl::optional<uint32_t> GetSaltMaterial();
|
99
99
|
|
100
100
|
} // namespace random_internal
|
@@ -31,12 +31,13 @@
|
|
31
31
|
#ifndef ABSL_RANDOM_RANDOM_H_
|
32
32
|
#define ABSL_RANDOM_RANDOM_H_
|
33
33
|
|
34
|
+
#include <cstdint>
|
34
35
|
#include <random>
|
35
36
|
|
37
|
+
#include "absl/base/config.h"
|
36
38
|
#include "absl/random/distributions.h" // IWYU pragma: export
|
37
|
-
#include "absl/random/internal/nonsecure_base.h"
|
38
|
-
#include "absl/random/internal/pcg_engine.h"
|
39
|
-
#include "absl/random/internal/pool_urbg.h"
|
39
|
+
#include "absl/random/internal/nonsecure_base.h"
|
40
|
+
#include "absl/random/internal/pcg_engine.h"
|
40
41
|
#include "absl/random/internal/randen_engine.h"
|
41
42
|
#include "absl/random/seed_sequences.h" // IWYU pragma: export
|
42
43
|
|
@@ -94,31 +95,46 @@ ABSL_NAMESPACE_BEGIN
|
|
94
95
|
// types on modern x86, ARM, and PPC architectures.
|
95
96
|
//
|
96
97
|
// This type is thread-compatible, but not thread-safe.
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
//
|
107
|
-
//
|
108
|
-
//
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
//
|
115
|
-
//
|
116
|
-
|
117
|
-
|
118
|
-
//
|
119
|
-
|
120
|
-
|
121
|
-
|
98
|
+
class BitGen : private random_internal::NonsecureURBGBase<
|
99
|
+
random_internal::randen_engine<uint64_t>> {
|
100
|
+
using Base = random_internal::NonsecureURBGBase<
|
101
|
+
random_internal::randen_engine<uint64_t>>;
|
102
|
+
|
103
|
+
public:
|
104
|
+
using result_type = typename Base::result_type;
|
105
|
+
|
106
|
+
// BitGen()
|
107
|
+
// BitGen(SeedSequence seed_seq)
|
108
|
+
//
|
109
|
+
// Copy disallowed.
|
110
|
+
// Move allowed.
|
111
|
+
using Base::Base;
|
112
|
+
using Base::operator=;
|
113
|
+
|
114
|
+
// BitGen::min()
|
115
|
+
//
|
116
|
+
// Returns the smallest possible value from this bit generator.
|
117
|
+
using Base::min;
|
118
|
+
|
119
|
+
// BitGen::max()
|
120
|
+
//
|
121
|
+
// Returns the largest possible value from this bit generator.
|
122
|
+
using Base::max;
|
123
|
+
|
124
|
+
// BitGen::discard(num)
|
125
|
+
//
|
126
|
+
// Advances the internal state of this bit generator by `num` times, and
|
127
|
+
// discards the intermediate results.
|
128
|
+
using Base::discard;
|
129
|
+
|
130
|
+
// BitGen::operator()()
|
131
|
+
//
|
132
|
+
// Invoke the URBG, returning a generated value.
|
133
|
+
using Base::operator();
|
134
|
+
|
135
|
+
using Base::operator==;
|
136
|
+
using Base::operator!=;
|
137
|
+
};
|
122
138
|
|
123
139
|
// -----------------------------------------------------------------------------
|
124
140
|
// absl::InsecureBitGen
|
@@ -156,32 +172,51 @@ using BitGen = random_internal::NonsecureURBGBase<
|
|
156
172
|
// `absl::InsecureBitGen` is not cryptographically secure.
|
157
173
|
//
|
158
174
|
// Prefer `absl::BitGen` over `absl::InsecureBitGen` as the general type is
|
159
|
-
// often fast enough for the vast majority of applications.
|
160
|
-
|
161
|
-
|
162
|
-
random_internal::NonsecureURBGBase<random_internal::pcg64_2018_engine>;
|
163
|
-
|
164
|
-
// ---------------------------------------------------------------------------
|
165
|
-
// absl::InsecureBitGen member functions
|
166
|
-
// ---------------------------------------------------------------------------
|
167
|
-
|
168
|
-
// absl::InsecureBitGen::operator()()
|
169
|
-
//
|
170
|
-
// Calls the InsecureBitGen, returning a generated value.
|
171
|
-
|
172
|
-
// absl::InsecureBitGen::min()
|
175
|
+
// often fast enough for the vast majority of applications. However, it is
|
176
|
+
// reasonable to use `absl::InsecureBitGen` in tests or when using a URBG
|
177
|
+
// in small isolated tasks such as in `std::shuffle`.
|
173
178
|
//
|
174
|
-
//
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
//
|
184
|
-
//
|
179
|
+
// This type is thread-compatible, but not thread-safe.
|
180
|
+
class InsecureBitGen : private random_internal::NonsecureURBGBase<
|
181
|
+
random_internal::pcg64_2018_engine> {
|
182
|
+
using Base =
|
183
|
+
random_internal::NonsecureURBGBase<random_internal::pcg64_2018_engine>;
|
184
|
+
|
185
|
+
public:
|
186
|
+
using result_type = typename Base::result_type;
|
187
|
+
|
188
|
+
// InsecureBitGen()
|
189
|
+
// InsecureBitGen(SeedSequence seed_seq)
|
190
|
+
//
|
191
|
+
// Copy disallowed.
|
192
|
+
// Move allowed.
|
193
|
+
using Base::Base;
|
194
|
+
using Base::operator=;
|
195
|
+
|
196
|
+
// InsecureBitGen::min()
|
197
|
+
//
|
198
|
+
// Returns the smallest possible value from this bit generator.
|
199
|
+
using Base::min;
|
200
|
+
|
201
|
+
// InsecureBitGen::max()
|
202
|
+
//
|
203
|
+
// Returns the largest possible value from this bit generator.
|
204
|
+
using Base::max;
|
205
|
+
|
206
|
+
// InsecureBitGen::discard(num)
|
207
|
+
//
|
208
|
+
// Advances the internal state of this bit generator by `num` times, and
|
209
|
+
// discards the intermediate results.
|
210
|
+
using Base::discard;
|
211
|
+
|
212
|
+
// InsecureBitGen::operator()()
|
213
|
+
//
|
214
|
+
// Invoke the URBG, returning a generated value.
|
215
|
+
using Base::operator();
|
216
|
+
|
217
|
+
using Base::operator==;
|
218
|
+
using Base::operator!=;
|
219
|
+
};
|
185
220
|
|
186
221
|
ABSL_NAMESPACE_END
|
187
222
|
} // namespace absl
|
@@ -14,14 +14,18 @@
|
|
14
14
|
|
15
15
|
#include "absl/random/seed_sequences.h"
|
16
16
|
|
17
|
-
#include
|
17
|
+
#include <iterator>
|
18
|
+
|
19
|
+
#include "absl/base/config.h"
|
20
|
+
#include "absl/random/internal/entropy_pool.h"
|
18
21
|
|
19
22
|
namespace absl {
|
20
23
|
ABSL_NAMESPACE_BEGIN
|
21
24
|
|
22
25
|
SeedSeq MakeSeedSeq() {
|
23
26
|
SeedSeq::result_type seed_material[8];
|
24
|
-
random_internal::
|
27
|
+
random_internal::GetEntropyFromRandenPool(&seed_material[0],
|
28
|
+
sizeof(seed_material[0]) * 8);
|
25
29
|
return SeedSeq(std::begin(seed_material), std::end(seed_material));
|
26
30
|
}
|
27
31
|
|
@@ -189,7 +189,7 @@ bool StatusRep::operator==(const StatusRep& other) const {
|
|
189
189
|
return true;
|
190
190
|
}
|
191
191
|
|
192
|
-
|
192
|
+
StatusRep* absl_nonnull StatusRep::CloneAndUnref() const {
|
193
193
|
// Optimization: no need to create a clone if we already have a refcount of 1.
|
194
194
|
if (ref_.load(std::memory_order_acquire) == 1) {
|
195
195
|
// All StatusRep instances are heap allocated and mutable, therefore this
|
@@ -235,9 +235,8 @@ absl::StatusCode MapToLocalCode(int value) {
|
|
235
235
|
}
|
236
236
|
}
|
237
237
|
|
238
|
-
|
239
|
-
|
240
|
-
absl::Nonnull<const char*> prefix) {
|
238
|
+
const char* absl_nonnull MakeCheckFailString(
|
239
|
+
const absl::Status* absl_nonnull status, const char* absl_nonnull prefix) {
|
241
240
|
// There's no need to free this string since the process is crashing.
|
242
241
|
return absl::IgnoreLeak(
|
243
242
|
new std::string(absl::StrCat(
|
@@ -100,7 +100,7 @@ class StatusRep {
|
|
100
100
|
// Returns an equivalent heap allocated StatusRep with refcount 1.
|
101
101
|
//
|
102
102
|
// `this` is not safe to be used after calling as it may have been deleted.
|
103
|
-
|
103
|
+
StatusRep* absl_nonnull CloneAndUnref() const;
|
104
104
|
|
105
105
|
private:
|
106
106
|
mutable std::atomic<int32_t> ref_;
|
@@ -120,9 +120,8 @@ absl::StatusCode MapToLocalCode(int value);
|
|
120
120
|
//
|
121
121
|
// This is an internal implementation detail for Abseil logging.
|
122
122
|
ABSL_ATTRIBUTE_PURE_FUNCTION
|
123
|
-
|
124
|
-
|
125
|
-
absl::Nonnull<const char*> prefix);
|
123
|
+
const char* absl_nonnull MakeCheckFailString(
|
124
|
+
const absl::Status* absl_nonnull status, const char* absl_nonnull prefix);
|
126
125
|
|
127
126
|
} // namespace status_internal
|
128
127
|
|
@@ -39,7 +39,8 @@ template <typename T, typename U, typename = void>
|
|
39
39
|
struct HasConversionOperatorToStatusOr : std::false_type {};
|
40
40
|
|
41
41
|
template <typename T, typename U>
|
42
|
-
void test(char (*)[sizeof(
|
42
|
+
void test(char (*absl_nullable)[sizeof(
|
43
|
+
std::declval<U>().operator absl::StatusOr<T>())]);
|
43
44
|
|
44
45
|
template <typename T, typename U>
|
45
46
|
struct HasConversionOperatorToStatusOr<T, U, decltype(test<T, U>(0))>
|
@@ -185,7 +186,7 @@ using IsStatusOrAssignmentValid = absl::conjunction<
|
|
185
186
|
class Helper {
|
186
187
|
public:
|
187
188
|
// Move type-agnostic error handling to the .cc.
|
188
|
-
static void HandleInvalidStatusCtorArg(
|
189
|
+
static void HandleInvalidStatusCtorArg(Status* absl_nonnull);
|
189
190
|
[[noreturn]] static void Crash(const absl::Status& status);
|
190
191
|
};
|
191
192
|
|
@@ -194,7 +195,7 @@ class Helper {
|
|
194
195
|
// This abstraction is here mostly for the gcc performance fix.
|
195
196
|
template <typename T, typename... Args>
|
196
197
|
ABSL_ATTRIBUTE_NONNULL(1)
|
197
|
-
void PlacementNew(
|
198
|
+
void PlacementNew(void* absl_nonnull p, Args&&... args) {
|
198
199
|
new (p) T(std::forward<Args>(args)...);
|
199
200
|
}
|
200
201
|
|
@@ -91,16 +91,12 @@ std::ostream& operator<<(std::ostream& os, StatusCode code) {
|
|
91
91
|
return os << StatusCodeToString(code);
|
92
92
|
}
|
93
93
|
|
94
|
-
|
94
|
+
const std::string* absl_nonnull Status::EmptyString() {
|
95
95
|
static const absl::NoDestructor<std::string> kEmpty;
|
96
96
|
return kEmpty.get();
|
97
97
|
}
|
98
98
|
|
99
|
-
|
100
|
-
constexpr const char Status::kMovedFromString[];
|
101
|
-
#endif
|
102
|
-
|
103
|
-
absl::Nonnull<const std::string*> Status::MovedFromString() {
|
99
|
+
const std::string* absl_nonnull Status::MovedFromString() {
|
104
100
|
static const absl::NoDestructor<std::string> kMovedFrom(kMovedFromString);
|
105
101
|
return kMovedFrom.get();
|
106
102
|
}
|
@@ -112,7 +108,7 @@ Status::Status(absl::StatusCode code, absl::string_view msg)
|
|
112
108
|
}
|
113
109
|
}
|
114
110
|
|
115
|
-
|
111
|
+
status_internal::StatusRep* absl_nonnull Status::PrepareToModify(
|
116
112
|
uintptr_t rep) {
|
117
113
|
if (IsInlined(rep)) {
|
118
114
|
return new status_internal::StatusRep(InlinedRepToCode(rep),
|
@@ -410,7 +406,7 @@ Status ErrnoToStatus(int error_number, absl::string_view message) {
|
|
410
406
|
MessageForErrnoToStatus(error_number, message));
|
411
407
|
}
|
412
408
|
|
413
|
-
|
409
|
+
const char* absl_nonnull StatusMessageAsCStr(const Status& status) {
|
414
410
|
// As an internal implementation detail, we guarantee that if status.message()
|
415
411
|
// is non-empty, then the resulting string_view is null terminated.
|
416
412
|
auto sv_message = status.message();
|
@@ -623,15 +623,15 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI Status final {
|
|
623
623
|
|
624
624
|
// REQUIRES: !ok()
|
625
625
|
// Ensures rep is not inlined or shared with any other Status.
|
626
|
-
static
|
626
|
+
static status_internal::StatusRep* absl_nonnull PrepareToModify(
|
627
627
|
uintptr_t rep);
|
628
628
|
|
629
629
|
// MSVC 14.0 limitation requires the const.
|
630
630
|
static constexpr const char kMovedFromString[] =
|
631
631
|
"Status accessed after move.";
|
632
632
|
|
633
|
-
static
|
634
|
-
static
|
633
|
+
static const std::string* absl_nonnull EmptyString();
|
634
|
+
static const std::string* absl_nonnull MovedFromString();
|
635
635
|
|
636
636
|
// Returns whether rep contains an inlined representation.
|
637
637
|
// See rep_ for details.
|
@@ -649,8 +649,8 @@ class ABSL_ATTRIBUTE_TRIVIAL_ABI Status final {
|
|
649
649
|
|
650
650
|
// Converts between StatusRep* and the external uintptr_t representation used
|
651
651
|
// by rep_. See rep_ for details.
|
652
|
-
static uintptr_t PointerToRep(
|
653
|
-
static
|
652
|
+
static uintptr_t PointerToRep(status_internal::StatusRep* absl_nonnull r);
|
653
|
+
static const status_internal::StatusRep* absl_nonnull RepToPointer(
|
654
654
|
uintptr_t r);
|
655
655
|
|
656
656
|
static std::string ToStringSlow(uintptr_t rep, StatusToStringMode mode);
|
@@ -902,14 +902,14 @@ constexpr uintptr_t Status::MovedFromRep() {
|
|
902
902
|
return CodeToInlinedRep(absl::StatusCode::kInternal) | 2;
|
903
903
|
}
|
904
904
|
|
905
|
-
inline
|
905
|
+
inline const status_internal::StatusRep* absl_nonnull Status::RepToPointer(
|
906
906
|
uintptr_t rep) {
|
907
907
|
assert(!IsInlined(rep));
|
908
908
|
return reinterpret_cast<const status_internal::StatusRep*>(rep);
|
909
909
|
}
|
910
910
|
|
911
911
|
inline uintptr_t Status::PointerToRep(
|
912
|
-
|
912
|
+
status_internal::StatusRep* absl_nonnull rep) {
|
913
913
|
return reinterpret_cast<uintptr_t>(rep);
|
914
914
|
}
|
915
915
|
|
@@ -934,7 +934,7 @@ inline Status CancelledError() { return Status(absl::StatusCode::kCancelled); }
|
|
934
934
|
// If the status's message is empty, the empty string is returned.
|
935
935
|
//
|
936
936
|
// StatusMessageAsCStr exists for C support. Use `status.message()` in C++.
|
937
|
-
|
937
|
+
const char* absl_nonnull StatusMessageAsCStr(
|
938
938
|
const Status& status ABSL_ATTRIBUTE_LIFETIME_BOUND);
|
939
939
|
|
940
940
|
ABSL_NAMESPACE_END
|
@@ -35,8 +35,8 @@ namespace status_internal {
|
|
35
35
|
// NOTE: This is an internal API and the design is subject to change in the
|
36
36
|
// future in a non-backward-compatible way. Since it's only meant for debugging
|
37
37
|
// purpose, you should not rely on it in any critical logic.
|
38
|
-
using StatusPayloadPrinter = absl::
|
39
|
-
absl::string_view, const absl::Cord&)
|
38
|
+
using StatusPayloadPrinter = absl::optional<std::string> (*absl_nullable)(
|
39
|
+
absl::string_view, const absl::Cord&);
|
40
40
|
|
41
41
|
// Sets the global payload printer. Only one printer should be set per process.
|
42
42
|
// If multiple printers are set, it's undefined which one will be used.
|
@@ -55,7 +55,7 @@ BadStatusOrAccess& BadStatusOrAccess::operator=(BadStatusOrAccess&& other) {
|
|
55
55
|
BadStatusOrAccess::BadStatusOrAccess(BadStatusOrAccess&& other)
|
56
56
|
: status_(std::move(other.status_)) {}
|
57
57
|
|
58
|
-
|
58
|
+
const char* absl_nonnull BadStatusOrAccess::what() const noexcept {
|
59
59
|
InitWhat();
|
60
60
|
return what_.c_str();
|
61
61
|
}
|
@@ -70,7 +70,7 @@ void BadStatusOrAccess::InitWhat() const {
|
|
70
70
|
|
71
71
|
namespace internal_statusor {
|
72
72
|
|
73
|
-
void Helper::HandleInvalidStatusCtorArg(absl::
|
73
|
+
void Helper::HandleInvalidStatusCtorArg(absl::Status* absl_nonnull status) {
|
74
74
|
const char* kMessage =
|
75
75
|
"An OK status is not a valid constructor argument to StatusOr<T>";
|
76
76
|
#ifdef NDEBUG
|
@@ -93,7 +93,7 @@ class BadStatusOrAccess : public std::exception {
|
|
93
93
|
//
|
94
94
|
// The pointer of this string is guaranteed to be valid until any non-const
|
95
95
|
// function is invoked on the exception object.
|
96
|
-
|
96
|
+
const char* absl_nonnull what() const noexcept override;
|
97
97
|
|
98
98
|
// BadStatusOrAccess::status()
|
99
99
|
//
|
@@ -464,7 +464,7 @@ class StatusOr : private internal_statusor::StatusOrData<T>,
|
|
464
464
|
// Returns a reference to the current `absl::Status` contained within the
|
465
465
|
// `absl::StatusOr<T>`. If `absl::StatusOr<T>` contains a `T`, then this
|
466
466
|
// function returns `absl::OkStatus()`.
|
467
|
-
const Status& status() const&;
|
467
|
+
ABSL_MUST_USE_RESULT const Status& status() const&;
|
468
468
|
Status status() &&;
|
469
469
|
|
470
470
|
// StatusOr<T>::value()
|
@@ -520,8 +520,8 @@ class StatusOr : private internal_statusor::StatusOrData<T>,
|
|
520
520
|
// REQUIRES: `this->ok() == true`, otherwise the behavior is undefined.
|
521
521
|
//
|
522
522
|
// Use `this->ok()` to verify that there is a current value.
|
523
|
-
const T* operator->() const ABSL_ATTRIBUTE_LIFETIME_BOUND;
|
524
|
-
T* operator->() ABSL_ATTRIBUTE_LIFETIME_BOUND;
|
523
|
+
const T* absl_nonnull operator->() const ABSL_ATTRIBUTE_LIFETIME_BOUND;
|
524
|
+
T* absl_nonnull operator->() ABSL_ATTRIBUTE_LIFETIME_BOUND;
|
525
525
|
|
526
526
|
// StatusOr<T>::value_or()
|
527
527
|
//
|
@@ -756,13 +756,13 @@ T&& StatusOr<T>::operator*() && {
|
|
756
756
|
}
|
757
757
|
|
758
758
|
template <typename T>
|
759
|
-
|
759
|
+
const T* absl_nonnull StatusOr<T>::operator->() const {
|
760
760
|
this->EnsureOk();
|
761
761
|
return &this->data_;
|
762
762
|
}
|
763
763
|
|
764
764
|
template <typename T>
|
765
|
-
|
765
|
+
T* absl_nonnull StatusOr<T>::operator->() {
|
766
766
|
this->EnsureOk();
|
767
767
|
return &this->data_;
|
768
768
|
}
|
@@ -183,8 +183,8 @@ constexpr bool AsciiInAZRangeNaive(unsigned char c) {
|
|
183
183
|
}
|
184
184
|
|
185
185
|
template <bool ToUpper, bool Naive>
|
186
|
-
constexpr void AsciiStrCaseFoldImpl(
|
187
|
-
|
186
|
+
constexpr void AsciiStrCaseFoldImpl(char* absl_nonnull dst,
|
187
|
+
const char* absl_nullable src,
|
188
188
|
size_t size) {
|
189
189
|
// The upper- and lowercase versions of ASCII characters differ by only 1 bit.
|
190
190
|
// When we need to flip the case, we can xor with this bit to achieve the
|
@@ -211,18 +211,18 @@ constexpr void AsciiStrCaseFoldImpl(absl::Nonnull<char*> dst,
|
|
211
211
|
// strings it's not important).
|
212
212
|
// `src` may be null iff `size` is zero.
|
213
213
|
template <bool ToUpper>
|
214
|
-
constexpr void AsciiStrCaseFold(
|
215
|
-
|
214
|
+
constexpr void AsciiStrCaseFold(char* absl_nonnull dst,
|
215
|
+
const char* absl_nullable src, size_t size) {
|
216
216
|
size < 16 ? AsciiStrCaseFoldImpl<ToUpper, /*Naive=*/true>(dst, src, size)
|
217
217
|
: AsciiStrCaseFoldImpl<ToUpper, /*Naive=*/false>(dst, src, size);
|
218
218
|
}
|
219
219
|
|
220
|
-
void AsciiStrToLower(
|
220
|
+
void AsciiStrToLower(char* absl_nonnull dst, const char* absl_nullable src,
|
221
221
|
size_t n) {
|
222
222
|
return AsciiStrCaseFold<false>(dst, src, n);
|
223
223
|
}
|
224
224
|
|
225
|
-
void AsciiStrToUpper(
|
225
|
+
void AsciiStrToUpper(char* absl_nonnull dst, const char* absl_nullable src,
|
226
226
|
size_t n) {
|
227
227
|
return AsciiStrCaseFold<true>(dst, src, n);
|
228
228
|
}
|
@@ -253,17 +253,17 @@ static_assert(ValidateAsciiCasefold() == 0, "error in case conversion");
|
|
253
253
|
|
254
254
|
} // namespace ascii_internal
|
255
255
|
|
256
|
-
void AsciiStrToLower(
|
256
|
+
void AsciiStrToLower(std::string* absl_nonnull s) {
|
257
257
|
char* p = &(*s)[0];
|
258
258
|
return ascii_internal::AsciiStrCaseFold<false>(p, p, s->size());
|
259
259
|
}
|
260
260
|
|
261
|
-
void AsciiStrToUpper(
|
261
|
+
void AsciiStrToUpper(std::string* absl_nonnull s) {
|
262
262
|
char* p = &(*s)[0];
|
263
263
|
return ascii_internal::AsciiStrCaseFold<true>(p, p, s->size());
|
264
264
|
}
|
265
265
|
|
266
|
-
void RemoveExtraAsciiWhitespace(
|
266
|
+
void RemoveExtraAsciiWhitespace(std::string* absl_nonnull str) {
|
267
267
|
auto stripped = StripAsciiWhitespace(*str);
|
268
268
|
|
269
269
|
if (stripped.empty()) {
|