Commit graph

1552 commits

Author SHA1 Message Date
Nobuyoshi Nakada
c3f03da494
[EXPERIMENTAL] MakeMakefile::CXX for C++ 2019-09-18 18:47:02 +09:00
卜部昌平
20e428ec40 fix CentOS 6 compile error
See also 20190910T003005Z.fail.html.gz
2019-09-10 12:25:36 +09:00
Kazuhiro NISHIYAMA
99bfa6c165
Try to fix compile error on win32
213995386 (step):7:810
```
cxxanyargs.cpp
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\corecrt_malloc.h(54): error C2485: '__restrict': unrecognized extended attribute
```
2019-09-06 17:47:24 +09:00
卜部昌平
9ef51b0b89 drop-in type check for rb_define_method
The rb_define_method function takes a pointer to ANYARGS-ed functions,
which in fact varies 18 different prototypes.  We still need to
preserve ANYARGS for storages but why not check the consistencies if
possible.

Q&As:

Q: Where did the magic number "18" came from in the description above?

A: Count the case branch of vm_method.c:call_cfunc_invoker_func().
   Note also that the 18 branches has lasted for at least 25 years.
   See also 200e0ee2fd.

Q: What is this __weakref__ thing?

A: That is a kind of function overloading mechanism that GCC provides.
   In this case for instance rb_define_method0 is an alias of
   rb_define_method, with a strong type.

Q: What is this __transparent_union__ thing?

A: That is another kind of function overloading mechanism that GCC
   provides.  In this case the attributed function pointer is either
   VALUE(*)(int,VALUE*,VALUE) or VALUE(*)(int,const VALUE*,VALUE).

   This is better than void* or ANYARGS because we can reject all
   other possibilities than the two.

Q: What does this rb_define_method macro mean?

A: It selects appropriate alias of the rb_define_method function,
   depending on the arity.

Q: Why the prototype change of rb_f_notimplement?

A: Function pointer to rb_f_notimplement is special cased in
   vm_method.c:rb_add_method_cfunc().  That should be handled by the
   __builtin_choose_expr chain inside of rb_define_method macro
   expansion.  In order to do so, comparison like (func ==
   rb_f_notimplement) is inappropriate for __builtin_choose_expr's
   expression (which must be a compile-time integer constant but the
   address of rb_f_notimplement is not fixed until the linker).  So
   instead we are using __builtin_types_compatible_p, and in doing so
   we need to distinguish rb_f_notimplement from others, by type.
2019-08-29 18:34:09 +09:00
Nobuyoshi Nakada
2283411265
Added license comment [Bug #12230] [ci skip] 2019-08-27 07:59:50 +09:00
git
1f3f50fb5e * expand tabs. [ci skip] 2019-08-19 14:34:29 +09:00
Nobuyoshi Nakada
574a9edfb3
Set flag to allow unprivileged users to create symlinks (#2381)
* [Win32] set flag to allow unprivileged users to create symlinks
2019-08-19 14:34:13 +09:00
Nobuyoshi Nakada
7adc8c79ea
[DOC] "nmake check" is preferable to "nmake exam" now [ci skip]
[Feature #14187]
2019-08-04 08:15:05 +09:00
Nobuyoshi Nakada
9b38c84550
[DOC] updated about icons in win32/README.win32 [ci skip]
[Bug #13348]
2019-08-04 08:07:06 +09:00
Nobuyoshi Nakada
9733b47eb8
[DOC] "nmake check" is preferable to "nmake exam" now [ci skip]
[Feature #14187]
2019-08-04 07:14:30 +09:00
Nobuyoshi Nakada
6a1458caf2
[DOC] Mark up path names to show a backslash [ci skip] 2019-08-04 07:14:17 +09:00
Nobuyoshi Nakada
0a63c4d5fb
Fix errno at seeking socket/pipe on Windows
[Bug #12230]
2019-07-25 06:39:40 +09:00
Samuel Williams
7291fef55c
Improve build process and coroutine implementation selection. 2019-07-18 20:54:54 +12:00
Samuel Williams
d17344cfc5 Remove IA64 support. 2019-06-19 23:30:04 +12:00
Nobuyoshi Nakada
0723c107f4
Do not export InitVM functions 2019-05-17 13:55:59 +09:00
Nobuyoshi Nakada
9a4d39b95e
No longer svn & git-svn are used 2019-05-10 15:22:54 +09:00
NAKAMURA Usaku
151b7d72bd
Forgotten to remove 2019-04-30 15:02:03 +09:00
NAKAMURA Usaku
320f0aba49
Revert previous commit; it was meaningless 2019-04-30 04:09:07 +09:00
git
ae3a986204 * expand tabs. 2019-04-30 03:33:51 +09:00
NAKAMURA Usaku
09022b6d70 Use CreateToolhelp32Snapshot instead of NtQueryInformationProcess to get ppid on Windows
Try to get rid of a spec error.
2019-04-30 03:33:31 +09:00
Nobuyoshi Nakada
fdcd640507
Makefiles need to be indented by tabs 2019-04-28 11:36:03 +09:00
NAKAMURA Usaku
beaddd1d32 Now only supports Git repository 2019-04-22 11:33:56 +09:00
usa
5906bcc95a Remove debug lines
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-21 04:53:44 +00:00
usa
66b6d76648 Show/unshow executing command as specified by V
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-21 04:52:38 +00:00
nobu
958798851d FindFirstFile cannot glob share names
* win32/file.c (replace_to_long_name): do not try to glob host
  names and share names by FindFirstFile which is useless for that
  purpose.  [ruby-core:91656] [Bug #15633]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-04 08:13:25 +00:00
nobu
bd8cb9f5d2 Parenthesize for to ignore errors
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67070 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-13 15:34:08 +00:00
nobu
43ee21f26d Ignore errors on cleaning
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-13 15:19:26 +00:00
nobu
af479d54dc README.win32: [DOC] added modeline [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-05 06:00:25 +00:00
usa
9acd2b20c8 Update requirements
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67000 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-04 08:10:24 +00:00
nobu
8f8b51c6ac README.win32: mention GIT as well as SVN
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-02 07:25:07 +00:00
nobu
c2781525ec README.win32: update required commands and platform names
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66991 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-02 07:18:50 +00:00
nobu
3f78209cd1 README.win32: use label-list
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-02 06:38:08 +00:00
nobu
adbdbff2df README.win32: reformat as RDoc
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66983 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-01 13:40:10 +00:00
k0kubun
6c1ed519ef win32/Makefile.sub: try to use __restrict on Visual Studio 2013
as well. Follows up r66598.

https://bugs.ruby-lang.org/issues/15347#note-7 is saying __restrict
is supported on Visual Studio 2013.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-01-04 15:41:29 +00:00
nobu
f826cde5a9 Add RUBY_API_VERSION to rbconfig.rb on mswin too
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66607 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-28 09:44:32 +00:00
nobu
9417d10fe1 RUBY_PROGRAM_VERSION for MJIT_PRECOMPILED_HEADER
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-28 03:55:28 +00:00
nobu
8422725408 Moved version numbers
* Define major and minor version numbers only in the public
  include/ruby/version.h header, as the API version numbers.

* Define only teeny version number in the private version.h
  header.

* RUBY_VERSION moved to version.c.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66599 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-28 02:12:34 +00:00
nobu
1095705c42 Check if restrict keyword is supported
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-28 01:56:20 +00:00
nobu
2ea54f0c1d win32/Makefile.sub: missing dependency of mjit_config.h
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-10 02:58:01 +00:00
nobu
0b343021da Fix compile error at r66280
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-08 03:32:39 +00:00
nobu
fddf7a0518 update-deps: support coroutine dependencies
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-03 13:12:34 +00:00
nobu
c5fe904f6e Fix for coroutine/win32/Context.obj
* coroutine/win32/Context.asm: old ml version 9 needs CPU
  directive before `.model` directive.

* win32/Makefile.sub: specify object directories to separate Win32
  and Win64 targets.  Win32 rule was overridden by Win64 rule and
  just ignored.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-28 01:04:39 +00:00
nobu
db67f542dc win32/Makefile.sub: add flags for AS
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66058 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-28 01:04:38 +00:00
normal
6a65f2b1e4 io + socket: make pipes and sockets nonblocking by default
All normal Ruby IO methods (IO#read, IO#gets, IO#write, ...) are
all capable of appearing to be "blocking" when presented with a
file description with the O_NONBLOCK flag set; so there is
little risk of incompatibility within Ruby-using programs.

The biggest compatibility risk is when spawning external
programs.  As a result, stdin, stdout, and stderr are now always
made blocking before exec-family calls.

This change will make an event-oriented MJIT usable if it is
waiting on pipes on POSIX_like platforms.

It is ALSO necessary to take advantage of (proposed lightweight
concurrency (aka "auto-Fiber") or any similar proposal for
network concurrency: https://bugs.ruby-lang.org/issues/13618

Named-pipe (FIFO) are NOT yet non-blocking by default since
they are rarely-used and may introduce compatibility problems
and extra syscall overhead for a common path.

Please revert this commit if there are problems and if I am afk
since I am afk a lot, lately.

[ruby-core:89950] [Bug #14968]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-22 08:46:51 +00:00
nobu
f1ed4b713b configure.ac: add --disable-fiber-coroutine option
* configure.ac: add --disable-fiber-coroutine option, and disable
  it on x86-mingw32 for now.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-21 03:26:59 +00:00
nobu
91e6ac3d96 Make coroutine object directory for each arch
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 12:02:29 +00:00
nobu
973bcc5953 Fix typo and make directory
* common.mk (coroutine/amd64/Context.$(OBJEXT)): fix a typo,
  $(OBJECT).

* common.mk (coroutine/amd64): recipe to make object directory.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:29:03 +00:00
samuel
3ccb5b9770 Support Visual C++ (mswin)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20 10:18:25 +00:00
nobu
45295303ac gmake.mk: force updating revision.h
Since `.revision.time` recipe needs `$(BASERUBY)`, it should not
try to get updated unconditionally, or tarballs fail to build on
environments where BASERUBY is not available.

All developers who build frequently use GNU make anyway, don't
you?

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-13 03:24:18 +00:00
nobu
1febaff10d win32/setup.mak: Substitute slashes in MJIT_CC
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65669 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-11 23:22:54 +00:00