rubycc 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +56 -0
- data/LICENSE.txt +21 -0
- data/NOTICE +52 -0
- data/README.md +208 -0
- data/data/README.md +117 -0
- data/data/r10_corpus_scan.json +4082 -0
- data/data/r10_manual_classification.json +5342 -0
- data/data/r10_verification_m4a.json +1531 -0
- data/data/r10_verification_m4b.json +1818 -0
- data/data/r10_verification_m4c.json +1489 -0
- data/data/r10_verification_m4d.json +318 -0
- data/data/r10_verification_rbs.json +192 -0
- data/data/verified_gems.json +397 -0
- data/exe/rmake +16 -0
- data/exe/rubycc +9 -0
- data/exe/rubycc-ar +114 -0
- data/exe/rubycc-doctor +14 -0
- data/exe/rubycc-pkgconf +8 -0
- data/include/float.h +87 -0
- data/include/iso646.h +18 -0
- data/include/libc/alloca.h +18 -0
- data/include/libc/arpa/inet.h +61 -0
- data/include/libc/assert.h +43 -0
- data/include/libc/dirent.h +72 -0
- data/include/libc/dlfcn.h +58 -0
- data/include/libc/features.h +205 -0
- data/include/libc/glibc/aarch64/ctype.h +108 -0
- data/include/libc/glibc/aarch64/endian.h +54 -0
- data/include/libc/glibc/aarch64/errno.h +154 -0
- data/include/libc/glibc/aarch64/fcntl.h +144 -0
- data/include/libc/glibc/aarch64/inttypes.h +182 -0
- data/include/libc/glibc/aarch64/limits.h +63 -0
- data/include/libc/glibc/aarch64/pthread.h +131 -0
- data/include/libc/glibc/aarch64/setjmp.h +84 -0
- data/include/libc/glibc/aarch64/stdint.h +174 -0
- data/include/libc/glibc/aarch64/sys/epoll.h +88 -0
- data/include/libc/glibc/aarch64/sys/fcntl.h +19 -0
- data/include/libc/glibc/aarch64/sys/select.h +75 -0
- data/include/libc/glibc/aarch64/sys/stat.h +136 -0
- data/include/libc/glibc/aarch64/sys/syscall.h +167 -0
- data/include/libc/glibc/aarch64/sys/time.h +74 -0
- data/include/libc/glibc/aarch64/sys/types.h +127 -0
- data/include/libc/glibc/aarch64/time.h +113 -0
- data/include/libc/glibc/x86_64/ctype.h +108 -0
- data/include/libc/glibc/x86_64/endian.h +54 -0
- data/include/libc/glibc/x86_64/errno.h +154 -0
- data/include/libc/glibc/x86_64/fcntl.h +134 -0
- data/include/libc/glibc/x86_64/inttypes.h +182 -0
- data/include/libc/glibc/x86_64/limits.h +61 -0
- data/include/libc/glibc/x86_64/pthread.h +111 -0
- data/include/libc/glibc/x86_64/setjmp.h +82 -0
- data/include/libc/glibc/x86_64/stdint.h +163 -0
- data/include/libc/glibc/x86_64/sys/epoll.h +91 -0
- data/include/libc/glibc/x86_64/sys/fcntl.h +19 -0
- data/include/libc/glibc/x86_64/sys/select.h +75 -0
- data/include/libc/glibc/x86_64/sys/stat.h +130 -0
- data/include/libc/glibc/x86_64/sys/syscall.h +188 -0
- data/include/libc/glibc/x86_64/sys/time.h +74 -0
- data/include/libc/glibc/x86_64/sys/types.h +123 -0
- data/include/libc/glibc/x86_64/time.h +113 -0
- data/include/libc/grp.h +50 -0
- data/include/libc/langinfo.h +126 -0
- data/include/libc/link.h +18 -0
- data/include/libc/locale.h +83 -0
- data/include/libc/math.h +191 -0
- data/include/libc/netinet/in.h +126 -0
- data/include/libc/netinet/tcp.h +44 -0
- data/include/libc/poll.h +46 -0
- data/include/libc/pwd.h +58 -0
- data/include/libc/regex.h +53 -0
- data/include/libc/sched.h +35 -0
- data/include/libc/signal.h +204 -0
- data/include/libc/stdio.h +157 -0
- data/include/libc/stdlib.h +92 -0
- data/include/libc/string.h +74 -0
- data/include/libc/strings.h +25 -0
- data/include/libc/sys/cdefs.h +126 -0
- data/include/libc/sys/inotify.h +111 -0
- data/include/libc/sys/ioctl.h +36 -0
- data/include/libc/sys/mman.h +65 -0
- data/include/libc/sys/param.h +41 -0
- data/include/libc/sys/resource.h +109 -0
- data/include/libc/sys/socket.h +167 -0
- data/include/libc/sys/statfs.h +82 -0
- data/include/libc/sys/timerfd.h +55 -0
- data/include/libc/sys/uio.h +40 -0
- data/include/libc/sys/un.h +25 -0
- data/include/libc/sys/utsname.h +35 -0
- data/include/libc/sys/wait.h +135 -0
- data/include/libc/termios.h +179 -0
- data/include/libc/unistd.h +194 -0
- data/include/stdalign.h +16 -0
- data/include/stdarg.h +31 -0
- data/include/stdatomic.h +158 -0
- data/include/stdbool.h +15 -0
- data/include/stdckdint.h +28 -0
- data/include/stddef.h +60 -0
- data/include/stdnoreturn.h +18 -0
- data/include/x86intrin.h +16 -0
- data/lib/rubycc/backend/aarch64.rb +1724 -0
- data/lib/rubycc/backend/x86_64.rb +1369 -0
- data/lib/rubycc/compile_error.rb +36 -0
- data/lib/rubycc/compiler.rb +305 -0
- data/lib/rubycc/doctor/builder.rb +151 -0
- data/lib/rubycc/doctor/cli.rb +190 -0
- data/lib/rubycc/doctor/fetcher.rb +84 -0
- data/lib/rubycc/doctor/gemfile.rb +115 -0
- data/lib/rubycc/doctor/verified_gems.rb +114 -0
- data/lib/rubycc/doctor.rb +16 -0
- data/lib/rubycc/driver.rb +463 -0
- data/lib/rubycc/front/ast.rb +528 -0
- data/lib/rubycc/front/constant_evaluator.rb +631 -0
- data/lib/rubycc/front/initializer_resolver.rb +592 -0
- data/lib/rubycc/front/lexeme_reader.rb +460 -0
- data/lib/rubycc/front/lexer.rb +232 -0
- data/lib/rubycc/front/parser.rb +4122 -0
- data/lib/rubycc/front/token.rb +49 -0
- data/lib/rubycc/ir/call_convention.rb +486 -0
- data/lib/rubycc/ir/generator.rb +6036 -0
- data/lib/rubycc/ir/ir.rb +417 -0
- data/lib/rubycc/link/compat_runtime.rb +89 -0
- data/lib/rubycc/link/errors.rb +13 -0
- data/lib/rubycc/link/executable_linker.rb +405 -0
- data/lib/rubycc/link/library_resolver.rb +437 -0
- data/lib/rubycc/link/partial_linker.rb +546 -0
- data/lib/rubycc/link/shared_linker.rb +1732 -0
- data/lib/rubycc/mkmf_shim.rb +83 -0
- data/lib/rubycc/objfile/ar_archive.rb +437 -0
- data/lib/rubycc/objfile/elf_reader.rb +646 -0
- data/lib/rubycc/objfile/elf_writer.rb +891 -0
- data/lib/rubycc/objfile/relocatable_writer.rb +376 -0
- data/lib/rubycc/pkgconf/cli.rb +139 -0
- data/lib/rubycc/pkgconf/errors.rb +39 -0
- data/lib/rubycc/pkgconf/model.rb +28 -0
- data/lib/rubycc/pkgconf/parser.rb +109 -0
- data/lib/rubycc/pkgconf/pkgconf.rb +15 -0
- data/lib/rubycc/pkgconf/resolver.rb +70 -0
- data/lib/rubycc/pkgconf/search_path.rb +38 -0
- data/lib/rubycc/pkgconf/system_path_filter.rb +131 -0
- data/lib/rubycc/preprocess/constant_expression.rb +219 -0
- data/lib/rubycc/preprocess/glibc_version.rb +124 -0
- data/lib/rubycc/preprocess/pp_token.rb +62 -0
- data/lib/rubycc/preprocess/preprocessor.rb +2020 -0
- data/lib/rubycc/preprocess/scanner.rb +290 -0
- data/lib/rubycc/preprocess/token_converter.rb +157 -0
- data/lib/rubycc/rmake/cli.rb +143 -0
- data/lib/rubycc/rmake/errors.rb +71 -0
- data/lib/rubycc/rmake/executor.rb +818 -0
- data/lib/rubycc/rmake/expander.rb +251 -0
- data/lib/rubycc/rmake/makefile.rb +352 -0
- data/lib/rubycc/rmake/model.rb +137 -0
- data/lib/rubycc/rmake/parser.rb +226 -0
- data/lib/rubycc/rmake/rmake.rb +15 -0
- data/lib/rubycc/type.rb +1236 -0
- data/lib/rubycc/version.rb +5 -0
- data/lib/rubycc.rb +36 -0
- data/lib/rubygems_plugin.rb +102 -0
- metadata +219 -0
data/lib/rubycc.rb
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "rubycc/version"
|
|
4
|
+
|
|
5
|
+
module Rubycc
|
|
6
|
+
class Error < StandardError; end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
require_relative "rubycc/compile_error"
|
|
10
|
+
require_relative "rubycc/type"
|
|
11
|
+
require_relative "rubycc/front/token"
|
|
12
|
+
require_relative "rubycc/front/lexeme_reader"
|
|
13
|
+
require_relative "rubycc/front/lexer"
|
|
14
|
+
require_relative "rubycc/preprocess/pp_token"
|
|
15
|
+
require_relative "rubycc/preprocess/scanner"
|
|
16
|
+
require_relative "rubycc/preprocess/token_converter"
|
|
17
|
+
require_relative "rubycc/front/ast"
|
|
18
|
+
require_relative "rubycc/front/constant_evaluator"
|
|
19
|
+
require_relative "rubycc/preprocess/constant_expression"
|
|
20
|
+
require_relative "rubycc/preprocess/preprocessor"
|
|
21
|
+
require_relative "rubycc/front/parser"
|
|
22
|
+
require_relative "rubycc/ir/ir"
|
|
23
|
+
require_relative "rubycc/ir/generator"
|
|
24
|
+
require_relative "rubycc/backend/x86_64"
|
|
25
|
+
require_relative "rubycc/backend/aarch64"
|
|
26
|
+
require_relative "rubycc/objfile/elf_writer"
|
|
27
|
+
require_relative "rubycc/objfile/elf_reader"
|
|
28
|
+
require_relative "rubycc/objfile/relocatable_writer"
|
|
29
|
+
require_relative "rubycc/objfile/ar_archive"
|
|
30
|
+
require_relative "rubycc/link/errors"
|
|
31
|
+
require_relative "rubycc/link/partial_linker"
|
|
32
|
+
require_relative "rubycc/link/shared_linker"
|
|
33
|
+
require_relative "rubycc/link/executable_linker"
|
|
34
|
+
require_relative "rubycc/link/library_resolver"
|
|
35
|
+
require_relative "rubycc/compiler"
|
|
36
|
+
require_relative "rubycc/driver"
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# RubyGems auto-loads every installed gem's `rubygems_plugin.rb` at startup
|
|
4
|
+
# (Gem.load_plugins), so this file runs in the `gem install <native-ext-gem>`
|
|
5
|
+
# process before any extension is built. Its whole job is to decide whether the
|
|
6
|
+
# build should go through rubycc and, if so, to inject the environment that makes
|
|
7
|
+
# RubyGems' extension build route to rubycc's toolchain instead of gcc/make —
|
|
8
|
+
# without the user passing any flags (DESIGN 5.4, ROADMAP §6 B6).
|
|
9
|
+
#
|
|
10
|
+
# The decision:
|
|
11
|
+
# * ENV["RUBYCC"] == "1" -> force on;
|
|
12
|
+
# * ENV["RUBYCC"] == "0" -> force off;
|
|
13
|
+
# * unset -> on only when neither `cc`, `gcc` nor `make` is on
|
|
14
|
+
# PATH (a toolchain-less host that needs rubycc).
|
|
15
|
+
#
|
|
16
|
+
# When off, the plugin must be inert — it is loaded on *every* `gem` command, so
|
|
17
|
+
# the disabled path does no work and touches no state. When on it rewrites four
|
|
18
|
+
# environment variables the RubyGems build inherits:
|
|
19
|
+
# * MAKE -> exe/rmake, which RubyGems runs as `$(MAKE)`; rmake builds the
|
|
20
|
+
# generated Makefile with rubycc always substituted for $(CC);
|
|
21
|
+
# * PKG_CONFIG -> exe/rubycc-pkgconf, the pkg-config shim;
|
|
22
|
+
# * RUBYLIB <- gains this gem's lib/ so the extconf child can require rubycc;
|
|
23
|
+
# * RUBYOPT <- gains `-rrubycc/mkmf_shim` so the extconf child's mkmf issues
|
|
24
|
+
# its conftests through rubycc and writes a `CC = <rubycc>`
|
|
25
|
+
# Makefile.
|
|
26
|
+
# Every rewrite is idempotent: re-running install! adds no duplicate PATH/RUBYOPT
|
|
27
|
+
# entries and re-assigns the same MAKE/PKG_CONFIG values.
|
|
28
|
+
module Rubycc
|
|
29
|
+
module GemPlugin
|
|
30
|
+
# This file lives at lib/rubygems_plugin.rb, so __dir__ is the gem's lib/ and
|
|
31
|
+
# the executables sit at ../exe relative to it.
|
|
32
|
+
LIB_DIR = __dir__
|
|
33
|
+
RMAKE_EXE = File.expand_path("../exe/rmake", __dir__)
|
|
34
|
+
PKGCONF_EXE = File.expand_path("../exe/rubycc-pkgconf", __dir__)
|
|
35
|
+
|
|
36
|
+
# The require the extconf child needs so mkmf's conftests route to rubycc.
|
|
37
|
+
MKMF_SHIM_FEATURE = "rubycc/mkmf_shim"
|
|
38
|
+
|
|
39
|
+
# The external programs whose absence (all three) turns rubycc on by default:
|
|
40
|
+
# a host with no C compiler and no make is one that cannot build extensions
|
|
41
|
+
# the conventional way, which is exactly where rubycc takes over.
|
|
42
|
+
AUTO_ENABLE_ABSENT_TOOLS = %w[cc gcc make].freeze
|
|
43
|
+
|
|
44
|
+
module_function
|
|
45
|
+
|
|
46
|
+
# Whether the rubycc build path should be active for this process.
|
|
47
|
+
def enabled?
|
|
48
|
+
case ENV["RUBYCC"]
|
|
49
|
+
when "1" then true
|
|
50
|
+
when "0" then false
|
|
51
|
+
else auto_enable?
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# The unset-RUBYCC default: on only when none of the conventional tools is
|
|
56
|
+
# available, so a host that already has gcc/make is left completely alone.
|
|
57
|
+
def auto_enable?
|
|
58
|
+
AUTO_ENABLE_ABSENT_TOOLS.none? { |tool| on_path?(tool) }
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Inject the environment that makes the RubyGems extension build use rubycc.
|
|
62
|
+
def install!
|
|
63
|
+
ENV["MAKE"] = RMAKE_EXE
|
|
64
|
+
ENV["PKG_CONFIG"] = PKGCONF_EXE
|
|
65
|
+
prepend_path_entry("RUBYLIB", LIB_DIR)
|
|
66
|
+
prepend_ruby_require(MKMF_SHIM_FEATURE)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# A PATH lookup that spawns nothing: scan the PATH directories for an
|
|
70
|
+
# executable file of that name (the same resolution `command -v` performs).
|
|
71
|
+
def on_path?(name)
|
|
72
|
+
ENV["PATH"].to_s.split(File::PATH_SEPARATOR).any? do |dir|
|
|
73
|
+
next false if dir.empty?
|
|
74
|
+
|
|
75
|
+
candidate = File.join(dir, name)
|
|
76
|
+
File.file?(candidate) && File.executable?(candidate)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Prepend +dir+ to a PATH-style environment variable (RUBYLIB) unless it is
|
|
81
|
+
# already the leading entry — so the extconf child can require rubycc from
|
|
82
|
+
# this gem's lib/.
|
|
83
|
+
def prepend_path_entry(var, dir)
|
|
84
|
+
entries = ENV[var].to_s.split(File::PATH_SEPARATOR)
|
|
85
|
+
return if entries.first == dir
|
|
86
|
+
|
|
87
|
+
ENV[var] = [dir, *entries].join(File::PATH_SEPARATOR)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Add `-r<feature>` to RUBYOPT (at the front, so the shim loads before the
|
|
91
|
+
# extconf script's own requires) unless it is already present.
|
|
92
|
+
def prepend_ruby_require(feature)
|
|
93
|
+
flag = "-r#{feature}"
|
|
94
|
+
current = ENV["RUBYOPT"].to_s
|
|
95
|
+
return if current.split(/\s+/).include?(flag)
|
|
96
|
+
|
|
97
|
+
ENV["RUBYOPT"] = current.empty? ? flag : "#{flag} #{current}"
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
Rubycc::GemPlugin.install! if Rubycc::GemPlugin.enabled?
|
metadata
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: rubycc
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- DATE Ken
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
12
|
+
description: |
|
|
13
|
+
rubycc builds Ruby C extensions on a machine that has no gcc, no binutils, no make
|
|
14
|
+
and no shell. It is a C11-subset compiler, an assembler-free ELF writer, a linker,
|
|
15
|
+
an ar, a make, a pkg-config shim and a preprocessor, written in Ruby, plus the libc
|
|
16
|
+
headers a build needs -- so a distroless image with no libc development package
|
|
17
|
+
still compiles ruby.h.
|
|
18
|
+
|
|
19
|
+
Targets x86-64 and AArch64 Linux (ELF64) against glibc and musl. Generated code is
|
|
20
|
+
unoptimized: the point is that the extension builds and its own test suite passes,
|
|
21
|
+
which is the level at which every gem recorded in data/verified_gems.json was
|
|
22
|
+
verified. See the README for the verified gems, the measured limits, and what is
|
|
23
|
+
out of scope.
|
|
24
|
+
email:
|
|
25
|
+
- itacchi@gmail.com
|
|
26
|
+
executables:
|
|
27
|
+
- rmake
|
|
28
|
+
- rubycc
|
|
29
|
+
- rubycc-ar
|
|
30
|
+
- rubycc-doctor
|
|
31
|
+
- rubycc-pkgconf
|
|
32
|
+
extensions: []
|
|
33
|
+
extra_rdoc_files: []
|
|
34
|
+
files:
|
|
35
|
+
- CHANGELOG.md
|
|
36
|
+
- LICENSE.txt
|
|
37
|
+
- NOTICE
|
|
38
|
+
- README.md
|
|
39
|
+
- data/README.md
|
|
40
|
+
- data/r10_corpus_scan.json
|
|
41
|
+
- data/r10_manual_classification.json
|
|
42
|
+
- data/r10_verification_m4a.json
|
|
43
|
+
- data/r10_verification_m4b.json
|
|
44
|
+
- data/r10_verification_m4c.json
|
|
45
|
+
- data/r10_verification_m4d.json
|
|
46
|
+
- data/r10_verification_rbs.json
|
|
47
|
+
- data/verified_gems.json
|
|
48
|
+
- exe/rmake
|
|
49
|
+
- exe/rubycc
|
|
50
|
+
- exe/rubycc-ar
|
|
51
|
+
- exe/rubycc-doctor
|
|
52
|
+
- exe/rubycc-pkgconf
|
|
53
|
+
- include/float.h
|
|
54
|
+
- include/iso646.h
|
|
55
|
+
- include/libc/alloca.h
|
|
56
|
+
- include/libc/arpa/inet.h
|
|
57
|
+
- include/libc/assert.h
|
|
58
|
+
- include/libc/dirent.h
|
|
59
|
+
- include/libc/dlfcn.h
|
|
60
|
+
- include/libc/features.h
|
|
61
|
+
- include/libc/glibc/aarch64/ctype.h
|
|
62
|
+
- include/libc/glibc/aarch64/endian.h
|
|
63
|
+
- include/libc/glibc/aarch64/errno.h
|
|
64
|
+
- include/libc/glibc/aarch64/fcntl.h
|
|
65
|
+
- include/libc/glibc/aarch64/inttypes.h
|
|
66
|
+
- include/libc/glibc/aarch64/limits.h
|
|
67
|
+
- include/libc/glibc/aarch64/pthread.h
|
|
68
|
+
- include/libc/glibc/aarch64/setjmp.h
|
|
69
|
+
- include/libc/glibc/aarch64/stdint.h
|
|
70
|
+
- include/libc/glibc/aarch64/sys/epoll.h
|
|
71
|
+
- include/libc/glibc/aarch64/sys/fcntl.h
|
|
72
|
+
- include/libc/glibc/aarch64/sys/select.h
|
|
73
|
+
- include/libc/glibc/aarch64/sys/stat.h
|
|
74
|
+
- include/libc/glibc/aarch64/sys/syscall.h
|
|
75
|
+
- include/libc/glibc/aarch64/sys/time.h
|
|
76
|
+
- include/libc/glibc/aarch64/sys/types.h
|
|
77
|
+
- include/libc/glibc/aarch64/time.h
|
|
78
|
+
- include/libc/glibc/x86_64/ctype.h
|
|
79
|
+
- include/libc/glibc/x86_64/endian.h
|
|
80
|
+
- include/libc/glibc/x86_64/errno.h
|
|
81
|
+
- include/libc/glibc/x86_64/fcntl.h
|
|
82
|
+
- include/libc/glibc/x86_64/inttypes.h
|
|
83
|
+
- include/libc/glibc/x86_64/limits.h
|
|
84
|
+
- include/libc/glibc/x86_64/pthread.h
|
|
85
|
+
- include/libc/glibc/x86_64/setjmp.h
|
|
86
|
+
- include/libc/glibc/x86_64/stdint.h
|
|
87
|
+
- include/libc/glibc/x86_64/sys/epoll.h
|
|
88
|
+
- include/libc/glibc/x86_64/sys/fcntl.h
|
|
89
|
+
- include/libc/glibc/x86_64/sys/select.h
|
|
90
|
+
- include/libc/glibc/x86_64/sys/stat.h
|
|
91
|
+
- include/libc/glibc/x86_64/sys/syscall.h
|
|
92
|
+
- include/libc/glibc/x86_64/sys/time.h
|
|
93
|
+
- include/libc/glibc/x86_64/sys/types.h
|
|
94
|
+
- include/libc/glibc/x86_64/time.h
|
|
95
|
+
- include/libc/grp.h
|
|
96
|
+
- include/libc/langinfo.h
|
|
97
|
+
- include/libc/link.h
|
|
98
|
+
- include/libc/locale.h
|
|
99
|
+
- include/libc/math.h
|
|
100
|
+
- include/libc/netinet/in.h
|
|
101
|
+
- include/libc/netinet/tcp.h
|
|
102
|
+
- include/libc/poll.h
|
|
103
|
+
- include/libc/pwd.h
|
|
104
|
+
- include/libc/regex.h
|
|
105
|
+
- include/libc/sched.h
|
|
106
|
+
- include/libc/signal.h
|
|
107
|
+
- include/libc/stdio.h
|
|
108
|
+
- include/libc/stdlib.h
|
|
109
|
+
- include/libc/string.h
|
|
110
|
+
- include/libc/strings.h
|
|
111
|
+
- include/libc/sys/cdefs.h
|
|
112
|
+
- include/libc/sys/inotify.h
|
|
113
|
+
- include/libc/sys/ioctl.h
|
|
114
|
+
- include/libc/sys/mman.h
|
|
115
|
+
- include/libc/sys/param.h
|
|
116
|
+
- include/libc/sys/resource.h
|
|
117
|
+
- include/libc/sys/socket.h
|
|
118
|
+
- include/libc/sys/statfs.h
|
|
119
|
+
- include/libc/sys/timerfd.h
|
|
120
|
+
- include/libc/sys/uio.h
|
|
121
|
+
- include/libc/sys/un.h
|
|
122
|
+
- include/libc/sys/utsname.h
|
|
123
|
+
- include/libc/sys/wait.h
|
|
124
|
+
- include/libc/termios.h
|
|
125
|
+
- include/libc/unistd.h
|
|
126
|
+
- include/stdalign.h
|
|
127
|
+
- include/stdarg.h
|
|
128
|
+
- include/stdatomic.h
|
|
129
|
+
- include/stdbool.h
|
|
130
|
+
- include/stdckdint.h
|
|
131
|
+
- include/stddef.h
|
|
132
|
+
- include/stdnoreturn.h
|
|
133
|
+
- include/x86intrin.h
|
|
134
|
+
- lib/rubycc.rb
|
|
135
|
+
- lib/rubycc/backend/aarch64.rb
|
|
136
|
+
- lib/rubycc/backend/x86_64.rb
|
|
137
|
+
- lib/rubycc/compile_error.rb
|
|
138
|
+
- lib/rubycc/compiler.rb
|
|
139
|
+
- lib/rubycc/doctor.rb
|
|
140
|
+
- lib/rubycc/doctor/builder.rb
|
|
141
|
+
- lib/rubycc/doctor/cli.rb
|
|
142
|
+
- lib/rubycc/doctor/fetcher.rb
|
|
143
|
+
- lib/rubycc/doctor/gemfile.rb
|
|
144
|
+
- lib/rubycc/doctor/verified_gems.rb
|
|
145
|
+
- lib/rubycc/driver.rb
|
|
146
|
+
- lib/rubycc/front/ast.rb
|
|
147
|
+
- lib/rubycc/front/constant_evaluator.rb
|
|
148
|
+
- lib/rubycc/front/initializer_resolver.rb
|
|
149
|
+
- lib/rubycc/front/lexeme_reader.rb
|
|
150
|
+
- lib/rubycc/front/lexer.rb
|
|
151
|
+
- lib/rubycc/front/parser.rb
|
|
152
|
+
- lib/rubycc/front/token.rb
|
|
153
|
+
- lib/rubycc/ir/call_convention.rb
|
|
154
|
+
- lib/rubycc/ir/generator.rb
|
|
155
|
+
- lib/rubycc/ir/ir.rb
|
|
156
|
+
- lib/rubycc/link/compat_runtime.rb
|
|
157
|
+
- lib/rubycc/link/errors.rb
|
|
158
|
+
- lib/rubycc/link/executable_linker.rb
|
|
159
|
+
- lib/rubycc/link/library_resolver.rb
|
|
160
|
+
- lib/rubycc/link/partial_linker.rb
|
|
161
|
+
- lib/rubycc/link/shared_linker.rb
|
|
162
|
+
- lib/rubycc/mkmf_shim.rb
|
|
163
|
+
- lib/rubycc/objfile/ar_archive.rb
|
|
164
|
+
- lib/rubycc/objfile/elf_reader.rb
|
|
165
|
+
- lib/rubycc/objfile/elf_writer.rb
|
|
166
|
+
- lib/rubycc/objfile/relocatable_writer.rb
|
|
167
|
+
- lib/rubycc/pkgconf/cli.rb
|
|
168
|
+
- lib/rubycc/pkgconf/errors.rb
|
|
169
|
+
- lib/rubycc/pkgconf/model.rb
|
|
170
|
+
- lib/rubycc/pkgconf/parser.rb
|
|
171
|
+
- lib/rubycc/pkgconf/pkgconf.rb
|
|
172
|
+
- lib/rubycc/pkgconf/resolver.rb
|
|
173
|
+
- lib/rubycc/pkgconf/search_path.rb
|
|
174
|
+
- lib/rubycc/pkgconf/system_path_filter.rb
|
|
175
|
+
- lib/rubycc/preprocess/constant_expression.rb
|
|
176
|
+
- lib/rubycc/preprocess/glibc_version.rb
|
|
177
|
+
- lib/rubycc/preprocess/pp_token.rb
|
|
178
|
+
- lib/rubycc/preprocess/preprocessor.rb
|
|
179
|
+
- lib/rubycc/preprocess/scanner.rb
|
|
180
|
+
- lib/rubycc/preprocess/token_converter.rb
|
|
181
|
+
- lib/rubycc/rmake/cli.rb
|
|
182
|
+
- lib/rubycc/rmake/errors.rb
|
|
183
|
+
- lib/rubycc/rmake/executor.rb
|
|
184
|
+
- lib/rubycc/rmake/expander.rb
|
|
185
|
+
- lib/rubycc/rmake/makefile.rb
|
|
186
|
+
- lib/rubycc/rmake/model.rb
|
|
187
|
+
- lib/rubycc/rmake/parser.rb
|
|
188
|
+
- lib/rubycc/rmake/rmake.rb
|
|
189
|
+
- lib/rubycc/type.rb
|
|
190
|
+
- lib/rubycc/version.rb
|
|
191
|
+
- lib/rubygems_plugin.rb
|
|
192
|
+
homepage: https://github.com/nuna/rubycc
|
|
193
|
+
licenses:
|
|
194
|
+
- MIT
|
|
195
|
+
metadata:
|
|
196
|
+
source_code_uri: https://github.com/nuna/rubycc
|
|
197
|
+
changelog_uri: https://github.com/nuna/rubycc/blob/master/CHANGELOG.md
|
|
198
|
+
bug_tracker_uri: https://github.com/nuna/rubycc/issues
|
|
199
|
+
documentation_uri: https://github.com/nuna/rubycc/blob/master/README.md
|
|
200
|
+
rubygems_mfa_required: 'true'
|
|
201
|
+
rdoc_options: []
|
|
202
|
+
require_paths:
|
|
203
|
+
- lib
|
|
204
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
205
|
+
requirements:
|
|
206
|
+
- - ">="
|
|
207
|
+
- !ruby/object:Gem::Version
|
|
208
|
+
version: '3.3'
|
|
209
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
|
+
requirements:
|
|
211
|
+
- - ">="
|
|
212
|
+
- !ruby/object:Gem::Version
|
|
213
|
+
version: '0'
|
|
214
|
+
requirements: []
|
|
215
|
+
rubygems_version: 3.6.9
|
|
216
|
+
specification_version: 4
|
|
217
|
+
summary: Almost Pure Ruby C toolchain for building Ruby native extensions without
|
|
218
|
+
gcc/binutils
|
|
219
|
+
test_files: []
|