Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/22320/?format=api
{ "id": 22320, "url": "https://patchwork.libcamera.org/api/1.1/covers/22320/?format=api", "web_url": "https://patchwork.libcamera.org/cover/22320/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20241215230206.11002-1-laurent.pinchart@ideasonboard.com>", "date": "2024-12-15T23:01:58", "name": "[RFC,0/8] libcamera: Use std::string_view", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/22320/mbox/", "series": [ { "id": 4889, "url": "https://patchwork.libcamera.org/api/1.1/series/4889/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4889", "date": "2024-12-15T23:01:58", "name": "libcamera: Use std::string_view", "version": 1, "mbox": "https://patchwork.libcamera.org/series/4889/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/22320/comments/", "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 43B7BC32F6\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 15 Dec 2024 23:02:26 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2665A67F2E;\n\tMon, 16 Dec 2024 00:02:25 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D31046189B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 16 Dec 2024 00:02:22 +0100 (CET)", "from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 82AD82C6;\n\tMon, 16 Dec 2024 00:01:46 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Rl8YL4pM\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1734303706;\n\tbh=ODz9WjcR17DqjYg2O1lgmx31zzjFxQ7GJnTw69xhXxo=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=Rl8YL4pM6pD3oIjPncM/DCpAO+mTIox+jpDzp0ZPVhbQ3Y7YykFW/gXH04478BV9v\n\txhod65taG7T/IKyRX68xxfaC61INO4DpnPXuoB73/VKiPelgCMJ1MyNeSQofX9aCMs\n\toXo7Dzw+eWs5z59Uol1/+kMzj+ENm5GeIpascS3Y=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>", "Subject": "[RFC PATCH 0/8] libcamera: Use std::string_view", "Date": "Mon, 16 Dec 2024 01:01:58 +0200", "Message-ID": "<20241215230206.11002-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.45.2", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Hello,\n\nThis patch series contains a bunch of changes I've had in my tree for\nsome time. As a similar change was recently proposed (\"[RFC PATCH v1]\ntreewide: Prefer `std::string_view` over `const std::string&` in\nparameters\"), I decided to clean my branch and post it as a base for\ndiscussions.\n\nAfter investigating string usage in C++ for a while, I'm convinced about\nthe fact that it's a mess more than the value of std::string_view. The\nclass isn't entirely bad, but it suffers from some limitations that make\nit painful to use until C++26. I tried to document usage guidelines in\nthe coding style document (1/8) and found that rules were not easy to\nexpress.\n\nSome of the limitations can be worked around, as shown by patch 2/8.\nPatches 3/8 to 8/8 then start exploring more efficient string handling\nthrough the libcamera code base, with some changes that look quite fine,\nand some that are more problematic.\n\nMy main issue with the string usage guidelines is perhaps that the best\nclass to use depends on the internal implementation of a function, which\nis clearly problematic when designing stable APIs. I'll let everybody\nread the series and share their opinion.\n\nLaurent Pinchart (8):\n Documentation: coding-style: Document usage of classes for strings\n libcamera: base: utils: Add string_view concatenation operators\n libcamera: base: file: Fix string usage in class API\n libcamera: base: log: Use std::string_view\n libcamera: base: utils: Use std::string_view\n libcamera: Update string usage in internal APIs\n [DNI] libcamera: Use std::string_view in controls\n [DNI] libcamera: yaml_parser: Replace std::string reference with\n std::string_view\n\n Documentation/coding-style.rst | 98 +++++++++++++++++++\n include/libcamera/base/file.h | 6 +-\n include/libcamera/base/log.h | 3 +-\n include/libcamera/base/utils.h | 62 ++++++++++--\n include/libcamera/control_ids.h.in | 3 +-\n include/libcamera/controls.h | 21 ++--\n .../internal/camera_sensor_properties.h | 4 +-\n include/libcamera/internal/converter.h | 3 +-\n .../internal/converter/converter_v4l2_m2m.h | 3 +-\n .../libcamera/internal/device_enumerator.h | 8 +-\n include/libcamera/internal/formats.h | 3 +-\n include/libcamera/internal/ipa_module.h | 3 +-\n include/libcamera/internal/ipa_proxy.h | 7 +-\n include/libcamera/internal/media_device.h | 9 +-\n include/libcamera/internal/pipeline_handler.h | 7 +-\n .../internal/software_isp/software_isp.h | 4 +-\n include/libcamera/internal/sysfs.h | 3 +-\n include/libcamera/internal/v4l2_device.h | 3 +-\n include/libcamera/internal/v4l2_subdevice.h | 3 +-\n include/libcamera/internal/v4l2_videodevice.h | 7 +-\n include/libcamera/internal/yaml_parser.h | 2 +-\n src/apps/cam/capture_script.h | 3 +-\n src/gstreamer/gstlibcamera-controls.cpp.in | 21 ++--\n src/libcamera/base/file.cpp | 14 +--\n src/libcamera/base/log.cpp | 31 +++---\n src/libcamera/base/meson.build | 12 +++\n src/libcamera/base/utils.cpp | 14 +--\n src/libcamera/control_ids.cpp.in | 4 +-\n src/libcamera/controls.cpp | 15 ++-\n src/libcamera/device_enumerator.cpp | 10 +-\n src/libcamera/formats.cpp | 2 +-\n src/libcamera/ipa_module.cpp | 2 +-\n src/libcamera/ipa_proxy.cpp | 8 +-\n src/libcamera/media_device.cpp | 16 +--\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 3 +-\n src/libcamera/pipeline_handler.cpp | 6 +-\n .../sensor/camera_sensor_properties.cpp | 4 +-\n src/libcamera/software_isp/software_isp.cpp | 3 +-\n src/libcamera/sysfs.cpp | 10 +-\n src/libcamera/v4l2_device.cpp | 2 +-\n src/libcamera/v4l2_subdevice.cpp | 3 +-\n src/libcamera/v4l2_videodevice.cpp | 7 +-\n src/libcamera/yaml_parser.cpp | 2 +-\n test/camera/camera_reconfigure.cpp | 2 +-\n test/hotplug-cameras.cpp | 3 +-\n test/utils.cpp | 34 +++++++\n 46 files changed, 352 insertions(+), 141 deletions(-)\n\n\nbase-commit: 8e15010b7dfa9c2a68dd57f924b5603784be0e09" }