grpc 1.46.2 → 1.48.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +138 -128
- data/include/grpc/compression.h +1 -1
- data/include/grpc/event_engine/event_engine.h +62 -18
- data/include/grpc/event_engine/memory_allocator.h +0 -15
- data/include/grpc/event_engine/port.h +1 -1
- data/include/grpc/event_engine/slice.h +286 -0
- data/include/grpc/event_engine/slice_buffer.h +118 -0
- data/include/grpc/grpc.h +3 -3
- data/include/grpc/grpc_security.h +11 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -1
- data/include/grpc/impl/codegen/gpr_types.h +2 -1
- data/include/grpc/impl/codegen/grpc_types.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +106 -39
- data/include/grpc/impl/codegen/slice.h +1 -1
- data/src/core/ext/filters/census/grpc_context.cc +3 -0
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
- data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
- data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
- data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
- data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
- data/src/core/ext/filters/client_channel/client_channel.h +43 -8
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
- data/src/core/ext/filters/client_channel/config_selector.h +8 -6
- data/src/core/ext/filters/client_channel/connector.h +9 -3
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
- data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
- data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
- data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
- data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
- data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
- data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
- data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
- data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
- data/src/core/ext/filters/client_channel/subchannel.h +80 -36
- data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
- data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
- data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
- data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
- data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
- data/src/core/ext/filters/http/client_authority_filter.h +5 -2
- data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
- data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
- data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
- data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
- data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
- data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
- data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
- data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
- data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
- data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
- data/src/core/ext/xds/certificate_provider_factory.h +6 -1
- data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
- data/src/core/ext/xds/certificate_provider_registry.h +3 -1
- data/src/core/ext/xds/certificate_provider_store.cc +6 -2
- data/src/core/ext/xds/certificate_provider_store.h +10 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
- data/src/core/ext/xds/upb_utils.h +1 -2
- data/src/core/ext/xds/xds_api.cc +16 -18
- data/src/core/ext/xds/xds_api.h +12 -5
- data/src/core/ext/xds/xds_bootstrap.cc +39 -26
- data/src/core/ext/xds/xds_bootstrap.h +11 -11
- data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
- data/src/core/ext/xds/xds_certificate_provider.h +17 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
- data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
- data/src/core/ext/xds/xds_client.cc +121 -46
- data/src/core/ext/xds/xds_client.h +19 -4
- data/src/core/ext/xds/xds_client_stats.cc +3 -4
- data/src/core/ext/xds/xds_client_stats.h +4 -3
- data/src/core/ext/xds/xds_cluster.cc +126 -25
- data/src/core/ext/xds/xds_cluster.h +12 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
- data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
- data/src/core/ext/xds/xds_common_types.cc +36 -22
- data/src/core/ext/xds/xds_common_types.h +12 -4
- data/src/core/ext/xds/xds_endpoint.cc +25 -15
- data/src/core/ext/xds/xds_endpoint.h +13 -5
- data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
- data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
- data/src/core/ext/xds/xds_http_filters.cc +7 -0
- data/src/core/ext/xds/xds_http_filters.h +3 -3
- data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
- data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
- data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
- data/src/core/ext/xds/xds_listener.cc +70 -42
- data/src/core/ext/xds/xds_listener.h +10 -1
- data/src/core/ext/xds/xds_resource_type.h +3 -3
- data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
- data/src/core/ext/xds/xds_route_config.cc +56 -28
- data/src/core/ext/xds/xds_route_config.h +11 -2
- data/src/core/ext/xds/xds_routing.cc +16 -0
- data/src/core/ext/xds/xds_routing.h +7 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
- data/src/core/lib/address_utils/parse_address.cc +5 -8
- data/src/core/lib/address_utils/parse_address.h +3 -2
- data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
- data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
- data/src/core/lib/avl/avl.h +6 -4
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/backoff/backoff.h +1 -1
- data/src/core/lib/channel/call_finalization.h +4 -0
- data/src/core/lib/channel/call_tracer.h +11 -5
- data/src/core/lib/channel/channel_args.cc +41 -22
- data/src/core/lib/channel/channel_args.h +34 -3
- data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
- data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
- data/src/core/lib/channel/channel_fwd.h +26 -0
- data/src/core/lib/channel/channel_stack.cc +45 -7
- data/src/core/lib/channel/channel_stack.h +45 -9
- data/src/core/lib/channel/channel_stack_builder.cc +9 -19
- data/src/core/lib/channel/channel_stack_builder.h +17 -32
- data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
- data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
- data/src/core/lib/channel/channel_trace.cc +8 -13
- data/src/core/lib/channel/channel_trace.h +6 -3
- data/src/core/lib/channel/channelz.cc +10 -14
- data/src/core/lib/channel/channelz.h +15 -7
- data/src/core/lib/channel/channelz_registry.cc +11 -19
- data/src/core/lib/channel/channelz_registry.h +10 -9
- data/src/core/lib/channel/connected_channel.cc +22 -31
- data/src/core/lib/channel/connected_channel.h +2 -0
- data/src/core/lib/channel/promise_based_filter.cc +451 -190
- data/src/core/lib/channel/promise_based_filter.h +162 -27
- data/src/core/lib/channel/status_util.cc +2 -0
- data/src/core/lib/channel/status_util.h +0 -3
- data/src/core/lib/compression/compression.cc +6 -1
- data/src/core/lib/compression/compression_internal.cc +48 -16
- data/src/core/lib/compression/compression_internal.h +4 -3
- data/src/core/lib/compression/message_compress.cc +3 -1
- data/src/core/lib/compression/message_compress.h +2 -3
- data/src/core/lib/config/core_configuration.cc +3 -0
- data/src/core/lib/config/core_configuration.h +2 -1
- data/src/core/lib/debug/stats.cc +9 -9
- data/src/core/lib/debug/stats.h +2 -1
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/stats_data.h +0 -4
- data/src/core/lib/debug/trace.h +13 -12
- data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
- data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
- data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
- data/src/core/lib/event_engine/event_engine.cc +29 -14
- data/src/core/lib/event_engine/event_engine_factory.h +5 -0
- data/src/core/lib/event_engine/handle_containers.h +67 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
- data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
- data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
- data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
- data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
- data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
- data/src/core/lib/event_engine/memory_allocator.cc +12 -4
- data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
- data/src/core/lib/event_engine/resolved_address.cc +4 -2
- data/src/core/lib/event_engine/slice.cc +102 -0
- data/src/core/lib/event_engine/slice_buffer.cc +50 -0
- data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
- data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
- data/src/core/lib/gpr/log.cc +5 -0
- data/src/core/lib/gpr/time_posix.cc +6 -9
- data/src/core/lib/gpr/time_windows.cc +10 -7
- data/src/core/lib/gpr/tls.h +3 -5
- data/src/core/lib/gprpp/bitset.h +5 -1
- data/src/core/lib/gprpp/chunked_vector.h +4 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
- data/src/core/lib/gprpp/examine_stack.h +0 -1
- data/src/core/lib/gprpp/fork.cc +3 -6
- data/src/core/lib/gprpp/global_config.h +2 -4
- data/src/core/lib/gprpp/global_config_env.cc +3 -2
- data/src/core/lib/gprpp/global_config_env.h +3 -1
- data/src/core/lib/gprpp/global_config_generic.h +0 -4
- data/src/core/lib/gprpp/host_port.cc +2 -0
- data/src/core/lib/gprpp/manual_constructor.h +0 -68
- data/src/core/lib/gprpp/match.h +2 -0
- data/src/core/lib/gprpp/memory.h +1 -5
- data/src/core/lib/gprpp/orphanable.h +1 -4
- data/src/core/lib/gprpp/ref_counted.h +1 -3
- data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
- data/src/core/lib/gprpp/stat.h +0 -2
- data/src/core/lib/gprpp/stat_posix.cc +7 -2
- data/src/core/lib/gprpp/status_helper.cc +50 -32
- data/src/core/lib/gprpp/status_helper.h +4 -0
- data/src/core/lib/gprpp/sync.h +3 -1
- data/src/core/lib/gprpp/table.h +10 -0
- data/src/core/lib/gprpp/thd.h +2 -5
- data/src/core/lib/gprpp/thd_posix.cc +4 -2
- data/src/core/lib/gprpp/thd_windows.cc +2 -0
- data/src/core/lib/gprpp/time.cc +16 -0
- data/src/core/lib/gprpp/time.h +10 -1
- data/src/core/lib/gprpp/time_util.cc +4 -0
- data/src/core/lib/gprpp/time_util.h +1 -1
- data/src/core/lib/gprpp/unique_type_name.h +104 -0
- data/src/core/lib/http/format_request.cc +34 -4
- data/src/core/lib/http/format_request.h +3 -1
- data/src/core/lib/http/httpcli.cc +106 -93
- data/src/core/lib/http/httpcli.h +58 -10
- data/src/core/lib/http/httpcli_security_connector.cc +19 -8
- data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
- data/src/core/lib/http/parser.cc +6 -7
- data/src/core/lib/http/parser.h +3 -0
- data/src/core/lib/iomgr/call_combiner.cc +2 -2
- data/src/core/lib/iomgr/endpoint.cc +4 -4
- data/src/core/lib/iomgr/endpoint.h +7 -5
- data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
- data/src/core/lib/iomgr/error.cc +11 -9
- data/src/core/lib/iomgr/error.h +9 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
- data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
- data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
- data/src/core/lib/iomgr/ev_posix.cc +55 -96
- data/src/core/lib/iomgr/ev_posix.h +5 -3
- data/src/core/lib/iomgr/exec_ctx.h +1 -2
- data/src/core/lib/iomgr/fork_posix.cc +1 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
- data/src/core/lib/iomgr/internal_errqueue.h +1 -6
- data/src/core/lib/iomgr/iomgr.cc +7 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/pollset_set.h +1 -2
- data/src/core/lib/iomgr/port.h +25 -6
- data/src/core/lib/iomgr/resolve_address.cc +8 -0
- data/src/core/lib/iomgr/resolve_address.h +21 -14
- data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
- data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
- data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
- data/src/core/lib/iomgr/sockaddr.h +2 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
- data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +12 -7
- data/src/core/lib/iomgr/tcp_client.h +24 -13
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
- data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
- data/src/core/lib/iomgr/tcp_posix.cc +96 -52
- data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
- data/src/core/lib/iomgr/tcp_windows.cc +12 -9
- data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
- data/src/core/lib/iomgr/work_serializer.h +2 -3
- data/src/core/lib/json/json.h +1 -2
- data/src/core/lib/json/json_reader.cc +9 -1
- data/src/core/lib/json/json_util.cc +7 -0
- data/src/core/lib/json/json_util.h +10 -1
- data/src/core/lib/json/json_writer.cc +6 -1
- data/src/core/lib/matchers/matchers.cc +6 -3
- data/src/core/lib/matchers/matchers.h +2 -0
- data/src/core/lib/promise/activity.cc +1 -2
- data/src/core/lib/promise/activity.h +13 -19
- data/src/core/lib/promise/arena_promise.h +11 -1
- data/src/core/lib/promise/call_push_pull.h +4 -0
- data/src/core/lib/promise/context.h +1 -1
- data/src/core/lib/promise/detail/basic_seq.h +2 -2
- data/src/core/lib/promise/detail/promise_factory.h +0 -1
- data/src/core/lib/promise/latch.h +0 -1
- data/src/core/lib/promise/loop.h +2 -0
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/race.h +0 -1
- data/src/core/lib/promise/seq.h +0 -2
- data/src/core/lib/promise/sleep.cc +38 -31
- data/src/core/lib/promise/sleep.h +32 -22
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resolver/resolver.cc +5 -0
- data/src/core/lib/resolver/resolver.h +3 -0
- data/src/core/lib/resolver/resolver_factory.h +6 -4
- data/src/core/lib/resolver/resolver_registry.cc +2 -9
- data/src/core/lib/resolver/resolver_registry.h +12 -1
- data/src/core/lib/resolver/server_address.cc +17 -3
- data/src/core/lib/resolver/server_address.h +13 -6
- data/src/core/lib/resource_quota/api.cc +14 -1
- data/src/core/lib/resource_quota/api.h +4 -1
- data/src/core/lib/resource_quota/arena.cc +0 -6
- data/src/core/lib/resource_quota/arena.h +1 -2
- data/src/core/lib/resource_quota/memory_quota.cc +62 -62
- data/src/core/lib/resource_quota/memory_quota.h +35 -30
- data/src/core/lib/resource_quota/resource_quota.h +8 -0
- data/src/core/lib/resource_quota/thread_quota.cc +2 -0
- data/src/core/lib/resource_quota/thread_quota.h +4 -0
- data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
- data/src/core/lib/security/authorization/evaluate_args.h +6 -3
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
- data/src/core/lib/security/authorization/matchers.cc +9 -1
- data/src/core/lib/security/authorization/matchers.h +7 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
- data/src/core/lib/security/authorization/rbac_policy.h +7 -0
- data/src/core/lib/security/context/security_context.cc +5 -2
- data/src/core/lib/security/context/security_context.h +14 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
- data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
- data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
- data/src/core/lib/security/credentials/call_creds_util.h +1 -0
- data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
- data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
- data/src/core/lib/security/credentials/credentials.cc +4 -8
- data/src/core/lib/security/credentials/credentials.h +27 -18
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
- data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
- data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
- data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
- data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
- data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
- data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
- data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
- data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
- data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
- data/src/core/lib/security/security_connector/security_connector.cc +20 -18
- data/src/core/lib/security/security_connector/security_connector.h +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
- data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
- data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
- data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
- data/src/core/lib/security/transport/secure_endpoint.h +4 -3
- data/src/core/lib/security/transport/security_handshaker.cc +49 -16
- data/src/core/lib/security/transport/security_handshaker.h +5 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
- data/src/core/lib/security/util/json_util.cc +3 -2
- data/src/core/lib/security/util/json_util.h +0 -2
- data/src/core/lib/service_config/service_config.h +4 -8
- data/src/core/lib/service_config/service_config_call_data.h +6 -2
- data/src/core/lib/service_config/service_config_impl.cc +13 -6
- data/src/core/lib/service_config/service_config_impl.h +9 -4
- data/src/core/lib/service_config/service_config_parser.cc +8 -2
- data/src/core/lib/service_config/service_config_parser.h +7 -0
- data/src/core/lib/slice/b64.cc +1 -1
- data/src/core/lib/slice/b64.h +2 -0
- data/src/core/lib/slice/percent_encoding.cc +4 -1
- data/src/core/lib/slice/percent_encoding.h +0 -6
- data/src/core/lib/slice/slice.cc +2 -1
- data/src/core/lib/slice/slice.h +10 -5
- data/src/core/lib/slice/slice_api.cc +1 -1
- data/src/core/lib/slice/slice_buffer.cc +79 -23
- data/src/core/lib/slice/slice_buffer.h +137 -0
- data/src/core/lib/slice/slice_buffer_api.cc +35 -0
- data/src/core/lib/slice/slice_internal.h +4 -3
- data/src/core/lib/slice/slice_refcount.h +2 -3
- data/src/core/lib/slice/slice_refcount_base.h +2 -3
- data/src/core/lib/slice/slice_string_helpers.cc +0 -16
- data/src/core/lib/slice/slice_string_helpers.h +1 -8
- data/src/core/lib/surface/builtins.cc +7 -2
- data/src/core/lib/surface/byte_buffer.cc +7 -1
- data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
- data/src/core/lib/surface/call.cc +90 -137
- data/src/core/lib/surface/call.h +21 -3
- data/src/core/lib/surface/call_details.cc +4 -4
- data/src/core/lib/surface/call_log_batch.cc +7 -1
- data/src/core/lib/surface/call_test_only.h +4 -1
- data/src/core/lib/surface/channel.cc +179 -242
- data/src/core/lib/surface/channel.h +97 -58
- data/src/core/lib/surface/channel_init.h +2 -0
- data/src/core/lib/surface/channel_ping.cc +8 -2
- data/src/core/lib/surface/channel_stack_type.cc +0 -2
- data/src/core/lib/surface/channel_stack_type.h +0 -2
- data/src/core/lib/surface/completion_queue.cc +29 -20
- data/src/core/lib/surface/completion_queue.h +7 -2
- data/src/core/lib/surface/completion_queue_factory.cc +1 -0
- data/src/core/lib/surface/completion_queue_factory.h +1 -3
- data/src/core/lib/surface/event_string.cc +1 -7
- data/src/core/lib/surface/event_string.h +1 -1
- data/src/core/lib/surface/init.cc +17 -46
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/lame_client.cc +63 -109
- data/src/core/lib/surface/lame_client.h +41 -3
- data/src/core/lib/surface/metadata_array.cc +2 -0
- data/src/core/lib/surface/server.cc +83 -64
- data/src/core/lib/surface/server.h +42 -9
- data/src/core/lib/surface/validate_metadata.cc +3 -6
- data/src/core/lib/surface/validate_metadata.h +3 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -1
- data/src/core/lib/transport/bdp_estimator.h +2 -3
- data/src/core/lib/transport/connectivity_state.cc +6 -4
- data/src/core/lib/transport/connectivity_state.h +2 -3
- data/src/core/lib/transport/error_utils.cc +16 -8
- data/src/core/lib/transport/error_utils.h +5 -1
- data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
- data/src/core/lib/{channel → transport}/handshaker.h +13 -6
- data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
- data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
- data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
- data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
- data/src/core/lib/transport/metadata_batch.cc +287 -0
- data/src/core/lib/transport/metadata_batch.h +133 -264
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +10 -3
- data/src/core/lib/transport/status_conversion.cc +2 -0
- data/src/core/lib/transport/status_conversion.h +2 -2
- data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
- data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
- data/src/core/lib/transport/timeout_encoding.cc +2 -6
- data/src/core/lib/transport/timeout_encoding.h +5 -1
- data/src/core/lib/transport/transport.cc +18 -20
- data/src/core/lib/transport/transport.h +48 -16
- data/src/core/lib/transport/transport_fwd.h +20 -0
- data/src/core/lib/transport/transport_impl.h +11 -0
- data/src/core/lib/transport/transport_op_string.cc +17 -18
- data/src/core/lib/uri/uri_parser.cc +11 -3
- data/src/core/lib/uri/uri_parser.h +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
- data/src/core/tsi/fake_transport_security.cc +13 -1
- data/src/core/tsi/fake_transport_security.h +6 -0
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +1 -1
- data/src/core/tsi/transport_security_grpc.cc +3 -2
- data/src/core/tsi/transport_security_grpc.h +5 -2
- data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
- data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
- data/src/ruby/ext/grpc/ext-export.clang +1 -0
- data/src/ruby/ext/grpc/ext-export.gcc +1 -0
- data/src/ruby/ext/grpc/extconf.rb +50 -19
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
- data/src/ruby/lib/grpc/errors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
- data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
- data/third_party/abseil-cpp/absl/base/casts.h +61 -68
- data/third_party/abseil-cpp/absl/base/config.h +182 -41
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
- data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
- data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
- data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
- data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
- data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
- data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
- data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
- data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
- data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
- data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
- data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
- data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
- data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
- data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
- data/third_party/abseil-cpp/absl/status/status.cc +174 -2
- data/third_party/abseil-cpp/absl/status/status.h +22 -12
- data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
- data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
- data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
- data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
- data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
- data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
- data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
- 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 +9 -6
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
- data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
- data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
- data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
- data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
- data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
- data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
- data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
- data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
- data/third_party/abseil-cpp/absl/time/time.h +16 -12
- data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
- data/third_party/abseil-cpp/absl/types/optional.h +17 -14
- data/third_party/abseil-cpp/absl/types/span.h +2 -1
- metadata +69 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
- data/src/core/lib/event_engine/sockaddr.cc +0 -40
- data/src/core/lib/event_engine/sockaddr.h +0 -44
- data/src/core/lib/gprpp/capture.h +0 -76
- data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
- data/src/core/lib/iomgr/event_engine/closure.h +0 -42
- data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
- data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
- data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
- data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
- data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
- data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
- data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
- data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
- data/src/core/lib/slice/slice_split.cc +0 -100
- data/src/core/lib/slice/slice_split.h +0 -40
- data/src/core/lib/transport/byte_stream.cc +0 -164
- data/src/core/lib/transport/byte_stream.h +0 -166
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -136,9 +136,10 @@
|
|
136
136
|
// for further information.
|
137
137
|
// The MinGW compiler doesn't complain about the weak attribute until the link
|
138
138
|
// step, presumably because Windows doesn't use ELF binaries.
|
139
|
-
#if (ABSL_HAVE_ATTRIBUTE(weak) ||
|
140
|
-
(defined(__GNUC__) && !defined(__clang__))) &&
|
141
|
-
(!defined(_WIN32) || __clang_major__
|
139
|
+
#if (ABSL_HAVE_ATTRIBUTE(weak) || \
|
140
|
+
(defined(__GNUC__) && !defined(__clang__))) && \
|
141
|
+
(!defined(_WIN32) || (defined(__clang__) && __clang_major__ >= 9)) && \
|
142
|
+
!defined(__MINGW32__)
|
142
143
|
#undef ABSL_ATTRIBUTE_WEAK
|
143
144
|
#define ABSL_ATTRIBUTE_WEAK __attribute__((weak))
|
144
145
|
#define ABSL_HAVE_ATTRIBUTE_WEAK 1
|
@@ -212,6 +213,9 @@
|
|
212
213
|
// https://gcc.gnu.org/gcc-4.8/changes.html
|
213
214
|
#if ABSL_HAVE_ATTRIBUTE(no_sanitize_address)
|
214
215
|
#define ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS __attribute__((no_sanitize_address))
|
216
|
+
#elif defined(_MSC_VER) && _MSC_VER >= 1928
|
217
|
+
// https://docs.microsoft.com/en-us/cpp/cpp/no-sanitize-address
|
218
|
+
#define ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS __declspec(no_sanitize_address)
|
215
219
|
#else
|
216
220
|
#define ABSL_ATTRIBUTE_NO_SANITIZE_ADDRESS
|
217
221
|
#endif
|
@@ -311,7 +315,6 @@
|
|
311
315
|
__attribute__((section(#name))) __attribute__((noinline))
|
312
316
|
#endif
|
313
317
|
|
314
|
-
|
315
318
|
// ABSL_ATTRIBUTE_SECTION_VARIABLE
|
316
319
|
//
|
317
320
|
// Tells the compiler/linker to put a given variable into a section and define
|
@@ -338,8 +341,8 @@
|
|
338
341
|
// a no-op on ELF but not on Mach-O.
|
339
342
|
//
|
340
343
|
#ifndef ABSL_DECLARE_ATTRIBUTE_SECTION_VARS
|
341
|
-
#define ABSL_DECLARE_ATTRIBUTE_SECTION_VARS(name)
|
342
|
-
extern char __start_##name[] ABSL_ATTRIBUTE_WEAK;
|
344
|
+
#define ABSL_DECLARE_ATTRIBUTE_SECTION_VARS(name) \
|
345
|
+
extern char __start_##name[] ABSL_ATTRIBUTE_WEAK; \
|
343
346
|
extern char __stop_##name[] ABSL_ATTRIBUTE_WEAK
|
344
347
|
#endif
|
345
348
|
#ifndef ABSL_DEFINE_ATTRIBUTE_SECTION_VARS
|
@@ -400,6 +403,9 @@
|
|
400
403
|
//
|
401
404
|
// Tells the compiler to warn about unused results.
|
402
405
|
//
|
406
|
+
// For code or headers that are assured to only build with C++17 and up, prefer
|
407
|
+
// just using the standard `[[nodiscard]]` directly over this macro.
|
408
|
+
//
|
403
409
|
// When annotating a function, it must appear as the first part of the
|
404
410
|
// declaration or definition. The compiler will warn if the return value from
|
405
411
|
// such a function is unused:
|
@@ -426,9 +432,10 @@
|
|
426
432
|
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66425
|
427
433
|
//
|
428
434
|
// Note: past advice was to place the macro after the argument list.
|
429
|
-
|
430
|
-
|
431
|
-
|
435
|
+
//
|
436
|
+
// TODO(b/176172494): Use ABSL_HAVE_CPP_ATTRIBUTE(nodiscard) when all code is
|
437
|
+
// compliant with the stricter [[nodiscard]].
|
438
|
+
#if defined(__clang__) && ABSL_HAVE_ATTRIBUTE(warn_unused_result)
|
432
439
|
#define ABSL_MUST_USE_RESULT __attribute__((warn_unused_result))
|
433
440
|
#else
|
434
441
|
#define ABSL_MUST_USE_RESULT
|
@@ -498,7 +505,7 @@
|
|
498
505
|
#define ABSL_XRAY_NEVER_INSTRUMENT [[clang::xray_never_instrument]]
|
499
506
|
#if ABSL_HAVE_CPP_ATTRIBUTE(clang::xray_log_args)
|
500
507
|
#define ABSL_XRAY_LOG_ARGS(N) \
|
501
|
-
|
508
|
+
[[clang::xray_always_instrument, clang::xray_log_args(N)]]
|
502
509
|
#else
|
503
510
|
#define ABSL_XRAY_LOG_ARGS(N) [[clang::xray_always_instrument]]
|
504
511
|
#endif
|
@@ -642,6 +649,9 @@
|
|
642
649
|
// declarations. The macro argument is used as a custom diagnostic message (e.g.
|
643
650
|
// suggestion of a better alternative).
|
644
651
|
//
|
652
|
+
// For code or headers that are assured to only build with C++14 and up, prefer
|
653
|
+
// just using the standard `[[deprecated("message")]]` directly over this macro.
|
654
|
+
//
|
645
655
|
// Examples:
|
646
656
|
//
|
647
657
|
// class ABSL_DEPRECATED("Use Bar instead") Foo {...};
|
@@ -652,14 +662,17 @@
|
|
652
662
|
// ABSL_DEPRECATED("Use DoThat() instead")
|
653
663
|
// void DoThis();
|
654
664
|
//
|
665
|
+
// enum FooEnum {
|
666
|
+
// kBar ABSL_DEPRECATED("Use kBaz instead"),
|
667
|
+
// };
|
668
|
+
//
|
655
669
|
// Every usage of a deprecated entity will trigger a warning when compiled with
|
656
|
-
//
|
657
|
-
//
|
658
|
-
|
670
|
+
// GCC/Clang's `-Wdeprecated-declarations` option. Google's production toolchain
|
671
|
+
// turns this warning off by default, instead relying on clang-tidy to report
|
672
|
+
// new uses of deprecated code.
|
673
|
+
#if ABSL_HAVE_ATTRIBUTE(deprecated)
|
659
674
|
#define ABSL_DEPRECATED(message) __attribute__((deprecated(message)))
|
660
|
-
#
|
661
|
-
|
662
|
-
#ifndef ABSL_DEPRECATED
|
675
|
+
#else
|
663
676
|
#define ABSL_DEPRECATED(message)
|
664
677
|
#endif
|
665
678
|
|
@@ -669,9 +682,18 @@
|
|
669
682
|
// not compile (on supported platforms) unless the variable has a constant
|
670
683
|
// initializer. This is useful for variables with static and thread storage
|
671
684
|
// duration, because it guarantees that they will not suffer from the so-called
|
672
|
-
// "static init order fiasco".
|
673
|
-
//
|
674
|
-
//
|
685
|
+
// "static init order fiasco".
|
686
|
+
//
|
687
|
+
// This attribute must be placed on the initializing declaration of the
|
688
|
+
// variable. Some compilers will give a -Wmissing-constinit warning when this
|
689
|
+
// attribute is placed on some other declaration but missing from the
|
690
|
+
// initializing declaration.
|
691
|
+
//
|
692
|
+
// In some cases (notably with thread_local variables), `ABSL_CONST_INIT` can
|
693
|
+
// also be used in a non-initializing declaration to tell the compiler that a
|
694
|
+
// variable is already initialized, reducing overhead that would otherwise be
|
695
|
+
// incurred by a hidden guard variable. Thus annotating all declarations with
|
696
|
+
// this attribute is recommended to potentially enhance optimization.
|
675
697
|
//
|
676
698
|
// Example:
|
677
699
|
//
|
@@ -680,14 +702,19 @@
|
|
680
702
|
// ABSL_CONST_INIT static MyType my_var;
|
681
703
|
// };
|
682
704
|
//
|
683
|
-
// MyType MyClass::my_var = MakeMyType(...);
|
705
|
+
// ABSL_CONST_INIT MyType MyClass::my_var = MakeMyType(...);
|
706
|
+
//
|
707
|
+
// For code or headers that are assured to only build with C++20 and up, prefer
|
708
|
+
// just using the standard `constinit` keyword directly over this macro.
|
684
709
|
//
|
685
710
|
// Note that this attribute is redundant if the variable is declared constexpr.
|
686
|
-
#if
|
711
|
+
#if defined(__cpp_constinit) && __cpp_constinit >= 201907L
|
712
|
+
#define ABSL_CONST_INIT constinit
|
713
|
+
#elif ABSL_HAVE_CPP_ATTRIBUTE(clang::require_constant_initialization)
|
687
714
|
#define ABSL_CONST_INIT [[clang::require_constant_initialization]]
|
688
715
|
#else
|
689
716
|
#define ABSL_CONST_INIT
|
690
|
-
#endif
|
717
|
+
#endif
|
691
718
|
|
692
719
|
// ABSL_ATTRIBUTE_PURE_FUNCTION
|
693
720
|
//
|
@@ -29,6 +29,10 @@
|
|
29
29
|
#include <type_traits>
|
30
30
|
#include <utility>
|
31
31
|
|
32
|
+
#if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
|
33
|
+
#include <bit> // For std::bit_cast.
|
34
|
+
#endif // defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
|
35
|
+
|
32
36
|
#include "absl/base/internal/identity.h"
|
33
37
|
#include "absl/base/macros.h"
|
34
38
|
#include "absl/meta/type_traits.h"
|
@@ -36,19 +40,6 @@
|
|
36
40
|
namespace absl {
|
37
41
|
ABSL_NAMESPACE_BEGIN
|
38
42
|
|
39
|
-
namespace internal_casts {
|
40
|
-
|
41
|
-
template <class Dest, class Source>
|
42
|
-
struct is_bitcastable
|
43
|
-
: std::integral_constant<
|
44
|
-
bool,
|
45
|
-
sizeof(Dest) == sizeof(Source) &&
|
46
|
-
type_traits_internal::is_trivially_copyable<Source>::value &&
|
47
|
-
type_traits_internal::is_trivially_copyable<Dest>::value &&
|
48
|
-
std::is_default_constructible<Dest>::value> {};
|
49
|
-
|
50
|
-
} // namespace internal_casts
|
51
|
-
|
52
43
|
// implicit_cast()
|
53
44
|
//
|
54
45
|
// Performs an implicit conversion between types following the language
|
@@ -105,81 +96,83 @@ constexpr To implicit_cast(typename absl::internal::identity_t<To> to) {
|
|
105
96
|
|
106
97
|
// bit_cast()
|
107
98
|
//
|
108
|
-
//
|
109
|
-
//
|
110
|
-
//
|
111
|
-
//
|
112
|
-
//
|
99
|
+
// Creates a value of the new type `Dest` whose representation is the same as
|
100
|
+
// that of the argument, which is of (deduced) type `Source` (a "bitwise cast";
|
101
|
+
// every bit in the value representation of the result is equal to the
|
102
|
+
// corresponding bit in the object representation of the source). Source and
|
103
|
+
// destination types must be of the same size, and both types must be trivially
|
104
|
+
// copyable.
|
113
105
|
//
|
114
|
-
//
|
115
|
-
//
|
116
|
-
//
|
117
|
-
//
|
118
|
-
//
|
119
|
-
// allowed by `reinterpret_cast()` but round-trips cannot occur the other
|
120
|
-
// way).
|
121
|
-
//
|
122
|
-
// Example:
|
106
|
+
// As with most casts, use with caution. A `bit_cast()` might be needed when you
|
107
|
+
// need to treat a value as the value of some other type, for example, to access
|
108
|
+
// the individual bits of an object which are not normally accessible through
|
109
|
+
// the object's type, such as for working with the binary representation of a
|
110
|
+
// floating point value:
|
123
111
|
//
|
124
112
|
// float f = 3.14159265358979;
|
125
|
-
// int i = bit_cast<
|
113
|
+
// int i = bit_cast<int>(f);
|
126
114
|
// // i = 0x40490fdb
|
127
115
|
//
|
128
|
-
//
|
129
|
-
//
|
116
|
+
// Reinterpreting and accessing a value directly as a different type (as shown
|
117
|
+
// below) usually results in undefined behavior.
|
130
118
|
//
|
131
119
|
// Example:
|
132
120
|
//
|
133
121
|
// // WRONG
|
134
|
-
// float f = 3.14159265358979;
|
135
|
-
// int i =
|
122
|
+
// float f = 3.14159265358979;
|
123
|
+
// int i = reinterpret_cast<int&>(f); // Wrong
|
124
|
+
// int j = *reinterpret_cast<int*>(&f); // Equally wrong
|
125
|
+
// int k = *bit_cast<int*>(&f); // Equally wrong
|
136
126
|
//
|
137
|
-
//
|
138
|
-
//
|
139
|
-
//
|
140
|
-
//
|
127
|
+
// Reinterpret-casting results in undefined behavior according to the ISO C++
|
128
|
+
// specification, section [basic.lval]. Roughly, this section says: if an object
|
129
|
+
// in memory has one type, and a program accesses it with a different type, the
|
130
|
+
// result is undefined behavior for most "different type".
|
131
|
+
//
|
132
|
+
// Using bit_cast on a pointer and then dereferencing it is no better than using
|
133
|
+
// reinterpret_cast. You should only use bit_cast on the value itself.
|
141
134
|
//
|
142
135
|
// Such casting results in type punning: holding an object in memory of one type
|
143
136
|
// and reading its bits back using a different type. A `bit_cast()` avoids this
|
144
|
-
// issue by
|
145
|
-
// this undefined behavior
|
146
|
-
//
|
147
|
-
//
|
148
|
-
//
|
149
|
-
//
|
150
|
-
//
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
137
|
+
// issue by copying the object representation to a new value, which avoids
|
138
|
+
// introducing this undefined behavior (since the original value is never
|
139
|
+
// accessed in the wrong way).
|
140
|
+
//
|
141
|
+
// The requirements of `absl::bit_cast` are more strict than that of
|
142
|
+
// `std::bit_cast` unless compiler support is available. Specifically, without
|
143
|
+
// compiler support, this implementation also requires `Dest` to be
|
144
|
+
// default-constructible. In C++20, `absl::bit_cast` is replaced by
|
145
|
+
// `std::bit_cast`.
|
146
|
+
#if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
|
147
|
+
|
148
|
+
using std::bit_cast;
|
149
|
+
|
150
|
+
#else // defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
|
151
|
+
|
152
|
+
template <typename Dest, typename Source,
|
153
|
+
typename std::enable_if<
|
154
|
+
sizeof(Dest) == sizeof(Source) &&
|
155
|
+
type_traits_internal::is_trivially_copyable<Source>::value &&
|
156
|
+
type_traits_internal::is_trivially_copyable<Dest>::value
|
157
|
+
#if !ABSL_HAVE_BUILTIN(__builtin_bit_cast)
|
158
|
+
&& std::is_default_constructible<Dest>::value
|
159
|
+
#endif // !ABSL_HAVE_BUILTIN(__builtin_bit_cast)
|
160
|
+
,
|
161
|
+
int>::type = 0>
|
162
|
+
#if ABSL_HAVE_BUILTIN(__builtin_bit_cast)
|
163
|
+
inline constexpr Dest bit_cast(const Source& source) {
|
164
|
+
return __builtin_bit_cast(Dest, source);
|
165
|
+
}
|
166
|
+
#else // ABSL_HAVE_BUILTIN(__builtin_bit_cast)
|
155
167
|
inline Dest bit_cast(const Source& source) {
|
156
168
|
Dest dest;
|
157
169
|
memcpy(static_cast<void*>(std::addressof(dest)),
|
158
170
|
static_cast<const void*>(std::addressof(source)), sizeof(dest));
|
159
171
|
return dest;
|
160
172
|
}
|
173
|
+
#endif // ABSL_HAVE_BUILTIN(__builtin_bit_cast)
|
161
174
|
|
162
|
-
//
|
163
|
-
// not met. It is therefore UB, but is provided temporarily as previous
|
164
|
-
// versions of this function template were unchecked. Do not use this in
|
165
|
-
// new code.
|
166
|
-
template <
|
167
|
-
typename Dest, typename Source,
|
168
|
-
typename std::enable_if<
|
169
|
-
!internal_casts::is_bitcastable<Dest, Source>::value,
|
170
|
-
int>::type = 0>
|
171
|
-
ABSL_DEPRECATED(
|
172
|
-
"absl::bit_cast type requirements were violated. Update the types "
|
173
|
-
"being used such that they are the same size and are both "
|
174
|
-
"TriviallyCopyable.")
|
175
|
-
inline Dest bit_cast(const Source& source) {
|
176
|
-
static_assert(sizeof(Dest) == sizeof(Source),
|
177
|
-
"Source and destination types should have equal sizes.");
|
178
|
-
|
179
|
-
Dest dest;
|
180
|
-
memcpy(&dest, &source, sizeof(dest));
|
181
|
-
return dest;
|
182
|
-
}
|
175
|
+
#endif // defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
|
183
176
|
|
184
177
|
ABSL_NAMESPACE_END
|
185
178
|
} // namespace absl
|
@@ -56,6 +56,25 @@
|
|
56
56
|
#include <cstddef>
|
57
57
|
#endif // __cplusplus
|
58
58
|
|
59
|
+
// ABSL_INTERNAL_CPLUSPLUS_LANG
|
60
|
+
//
|
61
|
+
// MSVC does not set the value of __cplusplus correctly, but instead uses
|
62
|
+
// _MSVC_LANG as a stand-in.
|
63
|
+
// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
64
|
+
//
|
65
|
+
// However, there are reports that MSVC even sets _MSVC_LANG incorrectly at
|
66
|
+
// times, for example:
|
67
|
+
// https://github.com/microsoft/vscode-cpptools/issues/1770
|
68
|
+
// https://reviews.llvm.org/D70996
|
69
|
+
//
|
70
|
+
// For this reason, this symbol is considered INTERNAL and code outside of
|
71
|
+
// Abseil must not use it.
|
72
|
+
#if defined(_MSVC_LANG)
|
73
|
+
#define ABSL_INTERNAL_CPLUSPLUS_LANG _MSVC_LANG
|
74
|
+
#elif defined(__cplusplus)
|
75
|
+
#define ABSL_INTERNAL_CPLUSPLUS_LANG __cplusplus
|
76
|
+
#endif
|
77
|
+
|
59
78
|
#if defined(__APPLE__)
|
60
79
|
// Included for TARGET_OS_IPHONE, __IPHONE_OS_VERSION_MIN_REQUIRED,
|
61
80
|
// __IPHONE_8_0.
|
@@ -92,7 +111,7 @@
|
|
92
111
|
//
|
93
112
|
// LTS releases can be obtained from
|
94
113
|
// https://github.com/abseil/abseil-cpp/releases.
|
95
|
-
#define ABSL_LTS_RELEASE_VERSION
|
114
|
+
#define ABSL_LTS_RELEASE_VERSION 20220623
|
96
115
|
#define ABSL_LTS_RELEASE_PATCH_LEVEL 0
|
97
116
|
|
98
117
|
// Helper macro to convert a CPP variable to a string literal.
|
@@ -183,12 +202,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
183
202
|
#define ABSL_HAVE_BUILTIN(x) 0
|
184
203
|
#endif
|
185
204
|
|
186
|
-
#if defined(__is_identifier)
|
187
|
-
#define ABSL_INTERNAL_HAS_KEYWORD(x) !(__is_identifier(x))
|
188
|
-
#else
|
189
|
-
#define ABSL_INTERNAL_HAS_KEYWORD(x) 0
|
190
|
-
#endif
|
191
|
-
|
192
205
|
#ifdef __has_feature
|
193
206
|
#define ABSL_HAVE_FEATURE(f) __has_feature(f)
|
194
207
|
#else
|
@@ -212,11 +225,12 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
212
225
|
#endif
|
213
226
|
|
214
227
|
// ABSL_HAVE_TLS is defined to 1 when __thread should be supported.
|
215
|
-
// We assume __thread is supported on Linux when compiled with Clang or
|
216
|
-
// against libstdc++ with _GLIBCXX_HAVE_TLS defined.
|
228
|
+
// We assume __thread is supported on Linux or Asylo when compiled with Clang or
|
229
|
+
// compiled against libstdc++ with _GLIBCXX_HAVE_TLS defined.
|
217
230
|
#ifdef ABSL_HAVE_TLS
|
218
231
|
#error ABSL_HAVE_TLS cannot be directly set
|
219
|
-
#elif defined(__linux__)
|
232
|
+
#elif (defined(__linux__) || defined(__ASYLO__)) && \
|
233
|
+
(defined(__clang__) || defined(_GLIBCXX_HAVE_TLS))
|
220
234
|
#define ABSL_HAVE_TLS 1
|
221
235
|
#endif
|
222
236
|
|
@@ -259,19 +273,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
259
273
|
#define ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE 1
|
260
274
|
#endif
|
261
275
|
|
262
|
-
// ABSL_HAVE_SOURCE_LOCATION_CURRENT
|
263
|
-
//
|
264
|
-
// Indicates whether `absl::SourceLocation::current()` will return useful
|
265
|
-
// information in some contexts.
|
266
|
-
#ifndef ABSL_HAVE_SOURCE_LOCATION_CURRENT
|
267
|
-
#if ABSL_INTERNAL_HAS_KEYWORD(__builtin_LINE) && \
|
268
|
-
ABSL_INTERNAL_HAS_KEYWORD(__builtin_FILE)
|
269
|
-
#define ABSL_HAVE_SOURCE_LOCATION_CURRENT 1
|
270
|
-
#elif ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(5, 0)
|
271
|
-
#define ABSL_HAVE_SOURCE_LOCATION_CURRENT 1
|
272
|
-
#endif
|
273
|
-
#endif
|
274
|
-
|
275
276
|
// ABSL_HAVE_THREAD_LOCAL
|
276
277
|
//
|
277
278
|
// Checks whether C++11's `thread_local` storage duration specifier is
|
@@ -414,7 +415,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
414
415
|
defined(_AIX) || defined(__ros__) || defined(__native_client__) || \
|
415
416
|
defined(__asmjs__) || defined(__wasm__) || defined(__Fuchsia__) || \
|
416
417
|
defined(__sun) || defined(__ASYLO__) || defined(__myriad2__) || \
|
417
|
-
defined(__HAIKU__)
|
418
|
+
defined(__HAIKU__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
|
419
|
+
defined(__QNX__)
|
418
420
|
#define ABSL_HAVE_MMAP 1
|
419
421
|
#endif
|
420
422
|
|
@@ -425,7 +427,8 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
425
427
|
#ifdef ABSL_HAVE_PTHREAD_GETSCHEDPARAM
|
426
428
|
#error ABSL_HAVE_PTHREAD_GETSCHEDPARAM cannot be directly set
|
427
429
|
#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
|
428
|
-
defined(_AIX) || defined(__ros__)
|
430
|
+
defined(_AIX) || defined(__ros__) || defined(__OpenBSD__) || \
|
431
|
+
defined(__NetBSD__)
|
429
432
|
#define ABSL_HAVE_PTHREAD_GETSCHEDPARAM 1
|
430
433
|
#endif
|
431
434
|
|
@@ -520,22 +523,41 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
520
523
|
#error "absl endian detection needs to be set up for your compiler"
|
521
524
|
#endif
|
522
525
|
|
523
|
-
// macOS 10.13 and iOS
|
524
|
-
// even though the headers exist and are publicly noted to work
|
525
|
-
//
|
526
|
+
// macOS < 10.13 and iOS < 11 don't let you use <any>, <optional>, or <variant>
|
527
|
+
// even though the headers exist and are publicly noted to work, because the
|
528
|
+
// libc++ shared library shipped on the system doesn't have the requisite
|
529
|
+
// exported symbols. See https://github.com/abseil/abseil-cpp/issues/207 and
|
526
530
|
// https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes
|
531
|
+
//
|
527
532
|
// libc++ spells out the availability requirements in the file
|
528
533
|
// llvm-project/libcxx/include/__config via the #define
|
529
534
|
// _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS.
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
535
|
+
//
|
536
|
+
// Unfortunately, Apple initially mis-stated the requirements as macOS < 10.14
|
537
|
+
// and iOS < 12 in the libc++ headers. This was corrected by
|
538
|
+
// https://github.com/llvm/llvm-project/commit/7fb40e1569dd66292b647f4501b85517e9247953
|
539
|
+
// which subsequently made it into the XCode 12.5 release. We need to match the
|
540
|
+
// old (incorrect) conditions when built with old XCode, but can use the
|
541
|
+
// corrected earlier versions with new XCode.
|
542
|
+
#if defined(__APPLE__) && defined(_LIBCPP_VERSION) && \
|
543
|
+
((_LIBCPP_VERSION >= 11000 && /* XCode 12.5 or later: */ \
|
544
|
+
((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
|
545
|
+
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101300) || \
|
546
|
+
(defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
|
547
|
+
__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 110000) || \
|
548
|
+
(defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \
|
549
|
+
__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 40000) || \
|
550
|
+
(defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \
|
551
|
+
__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 110000))) || \
|
552
|
+
(_LIBCPP_VERSION < 11000 && /* Pre-XCode 12.5: */ \
|
553
|
+
((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \
|
554
|
+
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101400) || \
|
555
|
+
(defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \
|
556
|
+
__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ < 120000) || \
|
557
|
+
(defined(__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__) && \
|
558
|
+
__ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ < 50000) || \
|
559
|
+
(defined(__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__) && \
|
560
|
+
__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ < 120000))))
|
539
561
|
#define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 1
|
540
562
|
#else
|
541
563
|
#define ABSL_INTERNAL_APPLE_CXX17_TYPES_UNAVAILABLE 0
|
@@ -705,8 +727,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
705
727
|
#endif
|
706
728
|
#endif
|
707
729
|
|
708
|
-
#undef ABSL_INTERNAL_HAS_KEYWORD
|
709
|
-
|
710
730
|
// ABSL_DLL
|
711
731
|
//
|
712
732
|
// When building Abseil as a DLL, this macro expands to `__declspec(dllexport)`
|
@@ -732,8 +752,6 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
732
752
|
// a compiler instrumentation module and a run-time library.
|
733
753
|
#ifdef ABSL_HAVE_MEMORY_SANITIZER
|
734
754
|
#error "ABSL_HAVE_MEMORY_SANITIZER cannot be directly set."
|
735
|
-
#elif defined(__SANITIZE_MEMORY__)
|
736
|
-
#define ABSL_HAVE_MEMORY_SANITIZER 1
|
737
755
|
#elif !defined(__native_client__) && ABSL_HAVE_FEATURE(memory_sanitizer)
|
738
756
|
#define ABSL_HAVE_MEMORY_SANITIZER 1
|
739
757
|
#endif
|
@@ -760,6 +778,45 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
760
778
|
#define ABSL_HAVE_ADDRESS_SANITIZER 1
|
761
779
|
#endif
|
762
780
|
|
781
|
+
// ABSL_HAVE_HWADDRESS_SANITIZER
|
782
|
+
//
|
783
|
+
// Hardware-Assisted AddressSanitizer (or HWASAN) is even faster than asan
|
784
|
+
// memory error detector which can use CPU features like ARM TBI, Intel LAM or
|
785
|
+
// AMD UAI.
|
786
|
+
#ifdef ABSL_HAVE_HWADDRESS_SANITIZER
|
787
|
+
#error "ABSL_HAVE_HWADDRESS_SANITIZER cannot be directly set."
|
788
|
+
#elif defined(__SANITIZE_HWADDRESS__)
|
789
|
+
#define ABSL_HAVE_HWADDRESS_SANITIZER 1
|
790
|
+
#elif ABSL_HAVE_FEATURE(hwaddress_sanitizer)
|
791
|
+
#define ABSL_HAVE_HWADDRESS_SANITIZER 1
|
792
|
+
#endif
|
793
|
+
|
794
|
+
// ABSL_HAVE_LEAK_SANITIZER
|
795
|
+
//
|
796
|
+
// LeakSanitizer (or lsan) is a detector of memory leaks.
|
797
|
+
// https://clang.llvm.org/docs/LeakSanitizer.html
|
798
|
+
// https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer
|
799
|
+
//
|
800
|
+
// The macro ABSL_HAVE_LEAK_SANITIZER can be used to detect at compile-time
|
801
|
+
// whether the LeakSanitizer is potentially available. However, just because the
|
802
|
+
// LeakSanitizer is available does not mean it is active. Use the
|
803
|
+
// always-available run-time interface in //absl/debugging/leak_check.h for
|
804
|
+
// interacting with LeakSanitizer.
|
805
|
+
#ifdef ABSL_HAVE_LEAK_SANITIZER
|
806
|
+
#error "ABSL_HAVE_LEAK_SANITIZER cannot be directly set."
|
807
|
+
#elif defined(LEAK_SANITIZER)
|
808
|
+
// GCC provides no method for detecting the presense of the standalone
|
809
|
+
// LeakSanitizer (-fsanitize=leak), so GCC users of -fsanitize=leak should also
|
810
|
+
// use -DLEAK_SANITIZER.
|
811
|
+
#define ABSL_HAVE_LEAK_SANITIZER 1
|
812
|
+
// Clang standalone LeakSanitizer (-fsanitize=leak)
|
813
|
+
#elif ABSL_HAVE_FEATURE(leak_sanitizer)
|
814
|
+
#define ABSL_HAVE_LEAK_SANITIZER 1
|
815
|
+
#elif defined(ABSL_HAVE_ADDRESS_SANITIZER)
|
816
|
+
// GCC or Clang using the LeakSanitizer integrated into AddressSanitizer.
|
817
|
+
#define ABSL_HAVE_LEAK_SANITIZER 1
|
818
|
+
#endif
|
819
|
+
|
763
820
|
// ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION
|
764
821
|
//
|
765
822
|
// Class template argument deduction is a language feature added in C++17.
|
@@ -769,4 +826,88 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' ||
|
|
769
826
|
#define ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION 1
|
770
827
|
#endif
|
771
828
|
|
829
|
+
// ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
830
|
+
//
|
831
|
+
// Prior to C++17, static constexpr variables defined in classes required a
|
832
|
+
// separate definition outside of the class body, for example:
|
833
|
+
//
|
834
|
+
// class Foo {
|
835
|
+
// static constexpr int kBar = 0;
|
836
|
+
// };
|
837
|
+
// constexpr int Foo::kBar;
|
838
|
+
//
|
839
|
+
// In C++17, these variables defined in classes are considered inline variables,
|
840
|
+
// and the extra declaration is redundant. Since some compilers warn on the
|
841
|
+
// extra declarations, ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL can be used
|
842
|
+
// conditionally ignore them:
|
843
|
+
//
|
844
|
+
// #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
|
845
|
+
// constexpr int Foo::kBar;
|
846
|
+
// #endif
|
847
|
+
#if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
|
848
|
+
ABSL_INTERNAL_CPLUSPLUS_LANG < 201703L
|
849
|
+
#define ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL 1
|
850
|
+
#endif
|
851
|
+
|
852
|
+
// `ABSL_INTERNAL_HAS_RTTI` determines whether abseil is being compiled with
|
853
|
+
// RTTI support.
|
854
|
+
#ifdef ABSL_INTERNAL_HAS_RTTI
|
855
|
+
#error ABSL_INTERNAL_HAS_RTTI cannot be directly set
|
856
|
+
#elif !defined(__GNUC__) || defined(__GXX_RTTI)
|
857
|
+
#define ABSL_INTERNAL_HAS_RTTI 1
|
858
|
+
#endif // !defined(__GNUC__) || defined(__GXX_RTTI)
|
859
|
+
|
860
|
+
// ABSL_INTERNAL_HAVE_SSE is used for compile-time detection of SSE support.
|
861
|
+
// See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html for an overview of
|
862
|
+
// which architectures support the various x86 instruction sets.
|
863
|
+
#ifdef ABSL_INTERNAL_HAVE_SSE
|
864
|
+
#error ABSL_INTERNAL_HAVE_SSE cannot be directly set
|
865
|
+
#elif defined(__SSE__)
|
866
|
+
#define ABSL_INTERNAL_HAVE_SSE 1
|
867
|
+
#elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1)
|
868
|
+
// MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 1
|
869
|
+
// indicates that at least SSE was targeted with the /arch:SSE option.
|
870
|
+
// All x86-64 processors support SSE, so support can be assumed.
|
871
|
+
// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
872
|
+
#define ABSL_INTERNAL_HAVE_SSE 1
|
873
|
+
#endif
|
874
|
+
|
875
|
+
// ABSL_INTERNAL_HAVE_SSE2 is used for compile-time detection of SSE2 support.
|
876
|
+
// See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html for an overview of
|
877
|
+
// which architectures support the various x86 instruction sets.
|
878
|
+
#ifdef ABSL_INTERNAL_HAVE_SSE2
|
879
|
+
#error ABSL_INTERNAL_HAVE_SSE2 cannot be directly set
|
880
|
+
#elif defined(__SSE2__)
|
881
|
+
#define ABSL_INTERNAL_HAVE_SSE2 1
|
882
|
+
#elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2)
|
883
|
+
// MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 2
|
884
|
+
// indicates that at least SSE2 was targeted with the /arch:SSE2 option.
|
885
|
+
// All x86-64 processors support SSE2, so support can be assumed.
|
886
|
+
// https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros
|
887
|
+
#define ABSL_INTERNAL_HAVE_SSE2 1
|
888
|
+
#endif
|
889
|
+
|
890
|
+
// ABSL_INTERNAL_HAVE_SSSE3 is used for compile-time detection of SSSE3 support.
|
891
|
+
// See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html for an overview of
|
892
|
+
// which architectures support the various x86 instruction sets.
|
893
|
+
//
|
894
|
+
// MSVC does not have a mode that targets SSSE3 at compile-time. To use SSSE3
|
895
|
+
// with MSVC requires either assuming that the code will only every run on CPUs
|
896
|
+
// that support SSSE3, otherwise __cpuid() can be used to detect support at
|
897
|
+
// runtime and fallback to a non-SSSE3 implementation when SSSE3 is unsupported
|
898
|
+
// by the CPU.
|
899
|
+
#ifdef ABSL_INTERNAL_HAVE_SSSE3
|
900
|
+
#error ABSL_INTERNAL_HAVE_SSSE3 cannot be directly set
|
901
|
+
#elif defined(__SSSE3__)
|
902
|
+
#define ABSL_INTERNAL_HAVE_SSSE3 1
|
903
|
+
#endif
|
904
|
+
|
905
|
+
// ABSL_INTERNAL_HAVE_ARM_NEON is used for compile-time detection of NEON (ARM
|
906
|
+
// SIMD).
|
907
|
+
#ifdef ABSL_INTERNAL_HAVE_ARM_NEON
|
908
|
+
#error ABSL_INTERNAL_HAVE_ARM_NEON cannot be directly set
|
909
|
+
#elif defined(__ARM_NEON)
|
910
|
+
#define ABSL_INTERNAL_HAVE_ARM_NEON 1
|
911
|
+
#endif
|
912
|
+
|
772
913
|
#endif // ABSL_BASE_CONFIG_H_
|