[#115565] [Ruby master Feature#20034] [mkmf] Support creating a compilation database for C language tooling — "pounce (Calvin Lee) via ruby-core" <ruby-core@...>

Issue #20034 has been reported by pounce (Calvin Lee).

7 messages 2023/12/01

[#115595] [Ruby master Bug#20043] `defined?` checks for method existence but only sometimes — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

Issue #20043 has been reported by tenderlovemaking (Aaron Patterson).

10 messages 2023/12/05

[#115598] [Ruby master Bug#20044] Add runtime flag and environment variable for prism — "HParker (Adam Hess) via ruby-core" <ruby-core@...>

Issue #20044 has been reported by HParker (Adam Hess).

7 messages 2023/12/06

[#115647] [Ruby master Bug#20048] UDPSocket#remote_address spec errors — "vo.x (Vit Ondruch) via ruby-core" <ruby-core@...>

Issue #20048 has been reported by vo.x (Vit Ondruch).

9 messages 2023/12/07

[#115648] [Ruby master Feature#20049] Destructive drop_while for Array and Hash — "chucke (Tiago Cardoso) via ruby-core" <ruby-core@...>

Issue #20049 has been reported by chucke (Tiago Cardoso).

8 messages 2023/12/07

[#115649] [Ruby master Bug#20050] Segfault on Ruby 3.2.2 on x86_64 Darwin 20 (maybe in Array#hash) — "martinemde (Martin Emde) via ruby-core" <ruby-core@...>

Issue #20050 has been reported by martinemde (Martin Emde).

11 messages 2023/12/07

[#115671] [Ruby master Feature#20054] Replace the use of `def` in endless method definitions with a new sigil — "sawa (Tsuyoshi Sawada) via ruby-core" <ruby-core@...>

Issue #20054 has been reported by sawa (Tsuyoshi Sawada).

7 messages 2023/12/09

[#115682] [Ruby master Misc#20056] Dir#chdir inconsistency with Dir.chdir — "zverok (Victor Shepelev) via ruby-core" <ruby-core@...>

Issue #20056 has been reported by zverok (Victor Shepelev).

12 messages 2023/12/10

[#115684] [Ruby master Feature#20057] Change behaviour of rb_register_postponed_job for Ruby 3.3 — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>

Issue #20057 has been reported by kjtsanaktsidis (KJ Tsanaktsidis).

8 messages 2023/12/11

[#115688] [Ruby master Bug#20058] `warning: bigdecimal/util is found in bigdecimal` even if the gem spec has the `add_dependency "bigdecimal"` entry — "yahonda (Yasuo Honda) via ruby-core" <ruby-core@...>

Issue #20058 has been reported by yahonda (Yasuo Honda).

10 messages 2023/12/11

[#115749] [Ruby master Feature#20066] Reduce Implicit Array/Hash Allocations For Method Calls Involving Splats — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

Issue #20066 has been reported by jeremyevans0 (Jeremy Evans).

19 messages 2023/12/15

[#115764] [Ruby master Feature#20069] Buffer class in stdlib — "pynix (Pynix wang) via ruby-core" <ruby-core@...>

Issue #20069 has been reported by pynix (Pynix wang).

9 messages 2023/12/16

[#115830] [Ruby master Misc#20075] DevMeeting-2024-01-17 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

Issue #20075 has been reported by mame (Yusuke Endoh).

9 messages 2023/12/21

[#115831] [Ruby master Bug#20076] M:N scheduler crashes on macOS with RUBY_MN_THREADS=1 — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #20076 has been reported by hsbt (Hiroshi SHIBATA).

7 messages 2023/12/21

[#115847] [Ruby master Bug#20079] alexandria testsuite began to segfault recently — "mtasaka (Mamoru TASAKA) via ruby-core" <ruby-core@...>

Issue #20079 has been reported by mtasaka (Mamoru TASAKA).

15 messages 2023/12/22

[#115864] [Ruby master Feature#20080] Implement #begin_and_end method on Range — "stuyam (Stuart Yamartino) via ruby-core" <ruby-core@...>

Issue #20080 has been reported by stuyam (Stuart Yamartino).

17 messages 2023/12/22

[#115892] [Ruby master Bug#20085] Fiber.new{ }.resume causes Segmentation fault for Ruby 3.3.0 on aarch64-linux — "oleksii (Oleksii Leonov) via ruby-core" <ruby-core@...>

Issue #20085 has been reported by oleksii (Oleksii Leonov).

27 messages 2023/12/25

[#115912] [Ruby master Bug#20090] Anonymous arguments are now syntax errors in unambiguous cases — "willcosgrove (Will Cosgrove) via ruby-core" <ruby-core@...>

Issue #20090 has been reported by willcosgrove (Will Cosgrove).

8 messages 2023/12/26

[#115919] [Ruby master Feature#20093] Syntax or keyword to reopen existing classs/modules, never to define new classs/modules — "tagomoris (Satoshi Tagomori) via ruby-core" <ruby-core@...>

Issue #20093 has been reported by tagomoris (Satoshi Tagomori).

11 messages 2023/12/27

[#115923] [Ruby master Bug#20094] Inline while loop behavior changed unexpectedly in 3.3.0 — "sisyphus_cg (Sisyphus CG) via ruby-core" <ruby-core@...>

Issue #20094 has been reported by sisyphus_cg (Sisyphus CG).

12 messages 2023/12/27

[#115925] [Ruby master Bug#20096] Ruby 3.2.2 win32/registry: Junk appended to Windows Registry String Value — "jay4rubydev (Jay M) via ruby-core" <ruby-core@...>

SXNzdWUgIzIwMDk2IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGpheTRydWJ5ZGV2IChKYXkgTSkuDQ0K

8 messages 2023/12/27

[ruby-core:115573] [Ruby master Feature#20034] [mkmf] Support creating a compilation database for C language tooling

From: "rubyFeedback (robert heiler) via ruby-core" <ruby-core@...>
Date: 2023-12-02 07:17:45 UTC
List: ruby-core #115573
Issue #20034 has been updated by rubyFeedback (robert heiler).


kjtsanaktsidis wrote:

> I wonder if a middle ground between "in cruby" and "in a gem that ~nobody knows about" would be to include this functionality in the rake-compiler gem.

This may be useful in that the functionality could become part of rake or rake-addons. The total number of people searching, and finding, gems such as the one mentioned above (even more so if it is a rare gem or disjoint from other more common ruby gems/tools), is probably very small (or may never find it, considering how even Google search does not always yield the best results these days), so exposing or "bundling" this via rake (or any other popular tool/gem) would surely be helpful.

----------------------------------------
Feature #20034: [mkmf] Support creating a compilation database for C language tooling
https://bugs.ruby-lang.org/issues/20034#change-105507

* Author: pounce (Calvin Lee)
* Status: Open
* Priority: Normal
----------------------------------------
# Abstract

Ruby projects are often developed with C extensions. These can be easily compiled by ruby by using `create_makefile` in `mkmf.rb`. Unfortunately, most C tooling is unable to interpret the ruby build system for C files, and thus cannot provide useful diagnostics to users about their C extensions.

This request entails generating a compilation database (as discussed below), which would allow C tooling to understand how the extensions are compiled.

# Background
A [compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html) is a standard format used to describe how C and C++ translation units are compiled. This is primarily used for a build system to communicate to C language tooling (such as a language server). Language servers need this information in order to determine how symbols, definitions and declarations are related in different files; and allows them to show descriptive warnings that may occur during compilation. This also allows users to perform quick and efficient refactors in their text editor.

It is supported by many build systems by default, such as CMake and Meson. These build systems often place a `compile_commands.json` in the `build/` directory, which is automatically detected by most language servers. It is also supported by language servers such as clangd and ccls.

# Proposal

When generating a makefile in `create_makefile`, a compilation database should also be created for all targets that are to be compiled.

# Implementation

The location of the compilation database should be configurable, both by library and environment variable, so that a user may redirect the compilation database to a specific location if they desire.

# Evaluation

This feature should be evaluated as successful if it is compatible with common language servers such as clangd and ccls. For example, if a user first compiles a project and then edits a C file that is compiled, then clangd should work with little to no configuration.

# Discussion

For more information about compilation databases, please see [clangd's informational site](https://clangd.llvm.org/design/compile-commands) as well as [the ccls wiki])(https://github.com/MaskRay/ccls/wiki/Project-Setup). There is also an [article](https://sarcasm.github.io/notes/dev/compilation-database.html) by [Guillaume Papin](https://github.com/sarcasm) which discusses compilation databases and software which supports them.

As an alternative, users may use [Bear](https://github.com/rizsotto/Bear) to generate their compilation database. However, this is not optimal, as it only works on Linux. Furthermore, Bear is only able to capture flags for C files which are compiled during a single execution of the build system. Thus, is not able to record flags for C files which have been skipped.




-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/

In This Thread