From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-2.8 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, FORGED_GMAIL_RCVD,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id F01A31F463 for ; Tue, 31 Dec 2019 06:46:40 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 28B1C1209E3; Tue, 31 Dec 2019 15:46:28 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id A02CB1209E2 for ; Tue, 31 Dec 2019 15:46:25 +0900 (JST) Received: by filterdrecv-p3las1-5bf99c48d-stcpj with SMTP id filterdrecv-p3las1-5bf99c48d-stcpj-19-5E0AEEC8-6 2019-12-31 06:46:32.14992437 +0000 UTC m=+1231251.535253335 Received: from herokuapp.com (unknown [3.82.119.120]) by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id 6R35OfzZQ5yClMmHYrf_QQ for ; Tue, 31 Dec 2019 06:46:32.009 +0000 (UTC) Date: Tue, 31 Dec 2019 06:46:32 +0000 (UTC) From: sam.saffron@gmail.com Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 72270 X-Redmine-Project: ruby-master X-Redmine-Issue-Id: 16029 X-Redmine-Issue-Author: byroot X-Redmine-Sender: sam.saffron X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: =?us-ascii?Q?GD31AXMrLYtZC3ZmvheLkg5nAqKYtjT=2Fa5aksj98ZWN5VIddUOOFP0ZEVivxco?= =?us-ascii?Q?79fD3kWAdE0p1MJVk80vCyUqAIe+o+tp2t=2FVs3l?= =?us-ascii?Q?LS8a075OjLyIKaC=2FGIOnKuF+LyTMQbmylSBzxBt?= =?us-ascii?Q?IsQnEEOqC9ZL4vN=2FFg56mzIHpBVZvhXs6WZOhup?= =?us-ascii?Q?q2s7d3V0LZGaMC1nkryo4I5MNCST4IYKxgHlroa?= =?us-ascii?Q?IQ=2FGqyy7dONdbx2+E=3D?= To: ruby-core@ruby-lang.org X-ML-Name: ruby-core X-Mail-Count: 96607 Subject: [ruby-core:96607] [Ruby master Feature#16029] Expose fstring related APIs to C-extensions X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #16029 has been updated by sam.saffron (Sam Saffron). @byroot I think it heavily depends on usage... MySQL gem / PG would benefit from "lookup" followed by "create fstring if missing" cause vast majority of string it is creating when querying tables. My proposal is for the minimal building block we could use for getting fstrings unconditionally which would offer a fast path for fstring reuse. ---------------------------------------- Feature #16029: Expose fstring related APIs to C-extensions https://bugs.ruby-lang.org/issues/16029#change-83575 * Author: byroot (Jean Boussier) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- As discussed with @tenderlove here: https://github.com/ruby/ruby/pull/2287#issuecomment-513865160 We'd like to update various data format parsers (JSON, MessagePack, etc) to add the possibility to deduplicate strings while parsing. But unfortunately the `rb_fstring_*` family of functions isn't available to C-extensions, so the only available fallback is `rb_funcall(str, rb_intern("-@"))` which most parsers will likely consider too slow. So the various `rb_fstring_*` functions would need to be public. Proposed patch: https://github.com/ruby/ruby/pull/2299 -- https://bugs.ruby-lang.org/