Rebol3/Ren-C Branch Change Logs


#121

Date: 2017-06-22T01:01:46Z
Author: Brian Dickens
Commit: bd55c877ffed5f247944c6ebb3f368b712af667a
Message: Fix off-by-one-hour bug in NOW on UNIX/POSIX

The code producing times was using the gmtime() and localtime()
functions, which reuse a static buffer. Hence the pointed-to result
is unstable, and must be copied in order to avoid corruption.

Adds several comments explaining what the code is doing.

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-bd55c87
r3-bd55c87-debug

0.2.40 OSX x64
r3-bd55c87
r3-bd55c87-debug
r3-bd55c87-debug-cpp

0.3.40 Win64 x86
r3-bd55c87-debug-cpp.exe
r3-bd55c87-debug.exe

0.4.4 Linux32 x86
r3-bd55c87

0.4.40 Linux64 x86
r3-bd55c87
r3-bd55c87-debug-cpp


#122

Date: 2017-06-26T20:08:34Z
Author: Brian Dickens
Commit: fcae02d85b6e653b6f965f550d9d136e273dd164
Message: Permit colons in ISSUE!

Also adds a LOCK stub for r2r3-future.

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-fcae02d
r3-fcae02d-debug

0.2.40 OSX x64
r3-fcae02d
r3-fcae02d-debug
r3-fcae02d-debug-cpp

0.3.40 Win64 x86
r3-fcae02d-debug-cpp.exe
r3-fcae02d-debug.exe

0.4.4 Linux32 x86
r3-fcae02d

0.4.40 Linux64 x86
r3-fcae02d
r3-fcae02d-debug-cpp


#123

Date: 2017-06-27T00:49:53Z
Author: Brian Dickens
Commit: 3fea84c913c6626cb2260bf7635964e415625f31
Message: Un-methodize devreq size so it’s just req_size in the Device

A port has a certain fixed-size amount of state, which could contain
arbitrary C pointers or data structures. The ability to change the
size of this state at runtime was removed, as a step toward making the
devices store their state (strings, etc.) in Rebol-readable values.
To make things more specific, each device was allowed to have its own
specialized structure; but the size was acquired via a method call.

This simplifies that by just passing the sizeof() at the time of the
registering of the device.

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-3fea84c
r3-3fea84c-debug

0.2.40 OSX x64
r3-3fea84c
r3-3fea84c-debug
r3-3fea84c-debug-cpp

0.3.40 Win64 x86
r3-3fea84c-debug-cpp.exe
r3-3fea84c-debug.exe

0.4.4 Linux32 x86
r3-3fea84c

0.4.40 Linux64 x86
r3-3fea84c
r3-3fea84c-debug-cpp


#124

Date: 2017-06-22T17:43:01Z
Author: Shixin Zeng
Commit: 810bf990051dfe5f2b32bf737157a5ad2915c031
Message: Support platform dependant module natives

This commit adds a new block to the native spec: “platforms: []”, the
block can include os-base (in which case all platforms based on it will
be supported) or os-name, e.g [android linux-x64] to support only
android and linux-x64

When the “platforms” block is missing, it’s assumed to support all
platforms.

Adding “platforms” block only makes it visuable in the module for these
platforms, to make it really work, the C source has to be proteced by
#if” and “#endif”. So there’s repeatation in “platforms:” and the #if
directive. Ideally, this should be elimininated, but as they are
processed by different tools (make-ext-natives.r and compiler), more
work is needed.


#125

Date: 2017-06-22T17:51:15Z
Author: Shixin Zeng
Commit: 4ef83d96190527dbcabe46040d1347cbe66f8bac
Message: Hide unsupported native in the module “process”

Instead of raising “Not-Implemented” error, this removes the function
completely.

This is based on the new “platforms:” block in the native spec

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-4ef83d9
r3-4ef83d9-debug

0.2.40 OSX x64
r3-4ef83d9
r3-4ef83d9-debug
r3-4ef83d9-debug-cpp

0.3.40 Win64 x86
r3-4ef83d9-debug-cpp.exe
r3-4ef83d9-debug.exe

0.4.4 Linux32 x86
r3-4ef83d9

0.4.40 Linux64 x86
r3-4ef83d9
r3-4ef83d9-debug-cpp


#126

Date: 2017-07-01T22:45:15Z
Author: Shixin Zeng
Commit: f5134e1bdfbbc23b967e9925eef5e4bf295074bf
Message: Fix extra Drop_Frame

The frame has already been dropped when it gets to “return_defaulted”,
jumping to “return_thrown” will cause another frame drop, which is
redundant, and cause an assert failure.

This fixes the crash caused by:

switch/default 'a [][throw 'b]
Assertion failed!

Program: C:\work\ren-c.git\make\r3-make-broken.exe
File: …/src/include/sys-do.h, Line 169

Expression: GET_SER_INFO(f->source.array, SERIES_INFO_RUNNING)

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-f5134e1
r3-f5134e1-debug

0.2.40 OSX x64
r3-f5134e1
r3-f5134e1-debug
r3-f5134e1-debug-cpp

0.3.40 Win64 x86
r3-f5134e1-debug-cpp.exe
r3-f5134e1-debug.exe

0.4.4 Linux32 x86
r3-f5134e1

0.4.40 Linux64 x86
r3-f5134e1
r3-f5134e1-debug-cpp


#127

Date: 2017-07-02T20:56:58Z
Author: Brian Dickens
Commit: c4076261316078d6fc8f2dadd79f29c3219a570e
Message: Rename SET_UNREADABLE_BLANK to Init_Unreadable_Blank

The fact that there’s only an unreadableness property in the debug
build raised a question of if calling it “Init_Unreadable_Blank” in
the release build made sense. That suggests some kind of property that
is not checked at runtime without a qualifier.

Although Init_Blank_Unreadable_If_Debug() is verbose, it might help
convey a better understanding of what’s actually going on. But it
can also be confusing, because it’s not clear if there is no operation
in the release build at all. So is it (Init_Blank_Unreadable) If_Debug
or (Init_Blank) Unreadable_If_Debug. Maybe just making matters worse.

Given that you’re never supposed to write to these in the release
build either, the simpler and easier to read Init_Unreadable_Blank()
is probably the better option, so this goes ahead and does that.

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-c407626
r3-c407626-debug

0.2.40 OSX x64
r3-c407626
r3-c407626-debug
r3-c407626-debug-cpp

0.3.40 Win64 x86
r3-c407626-debug-cpp.exe

0.4.4 Linux32 x86
r3-c407626

0.4.40 Linux64 x86
r3-c407626
r3-c407626-debug-cpp


#128

Date: 2017-07-02T21:14:36Z
Author: Brian Dickens
Commit: f52f772c7329a18ad42ad11d1b9d3b348bd7b098
Message: Set_Stack_Limit during PUSH_UNHALTABLE_TRAP

This is a trick which can be used to allow several different threads to
work with the same evaluator instance. The rule is that each thread
must PUSH_UNHALTABLE_TRAP, and when it does, that will reset the
stack limit used by the test in C_STACK_OVERFLOWING.

This is an attempt to be minimally invasive, given that switching
threads while keeping the same frame stack of Reb_States should not
longjmp in case of a fail() to another stack; hence pushing a trap
is always necessary. But it’s kludgey compared to a real solution,
which would have to be a future endeavor.

Also corrects a >= 0 comparison on an unsigned value from the previous
commit.

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-f52f772
r3-f52f772-debug

0.2.40 OSX x64
r3-f52f772
r3-f52f772-debug
r3-f52f772-debug-cpp

0.3.40 Win64 x86
r3-f52f772-debug-cpp.exe
r3-f52f772-debug.exe

0.4.4 Linux32 x86
r3-f52f772

0.4.40 Linux64 x86
r3-f52f772
r3-f52f772-debug-cpp


#129

Date: 2017-07-03T17:36:03Z
Author: Shixin Zeng
Commit: b71159424d689f4af32081857bacaced865241d1
Message: Fix warning message in Init_Break_Point

This was a copy-and-paste from R3_ALWAYS_MALLOC handling

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-b711594
r3-b711594-debug

0.2.40 OSX x64
r3-b711594
r3-b711594-debug
r3-b711594-debug-cpp

0.3.40 Win64 x86
r3-b711594-debug-cpp.exe
r3-b711594-debug.exe

0.4.4 Linux32 x86
r3-b711594

0.4.40 Linux64 x86
r3-b711594
r3-b711594-debug-cpp


#130

Date: 2017-06-28T03:13:06Z
Author: Shixin Zeng
Commit: fd315fef13ba818b7010f159ad1365bb189d978a
Message: Fix the guard for UNUSED


#131

Date: 2017-06-28T03:24:56Z
Author: Shixin Zeng
Commit: ac546dbac47093d576205abf38559b783a81ee0c
Message: Fix guard for LOGICAL/NOT

std::is_same was introduced in C++11


#132

Date: 2017-07-03T19:07:52Z
Author: Shixin Zeng
Commit: b319d81989b00065e538fcbe26ea95bfed72e7c8
Message: Mark devices with EXTERN_C

This is how the devices are defined by DEFINE_DEVICE, a change
introduced by f52f772c7329a18ad42ad11d1b9d3b348bd7b098 (Set_Stack_Limit
during PUSH_UNHALTABLE_TRAP)


#133

Date: 2017-06-15T19:25:26Z
Author: Shixin Zeng
Commit: 726f4ab2dee3086ce40c001adf9f128cbc43be36
Message: Rework on make-make.r

Now make-make.r is based on rebmake.r, which can generate Makefiles for
GNU make and Microsoft NMake, and supports different compilers
(currently, gcc and CL are supported). It can also run commands without
generating a makefile at all.

The goal of rebmake is to be a generic makefile/project generator.
make-make.r is the actual driver for bulding the interpreter and its
extensions.

The motivation to rework on the building system is to have a single
system that:

  1. user can choose which extension/modules to build, and developers can
    easily define module/extension/library dependencies, and how the
    extension should be built
  2. can generate IDE project file, being able to debug the interpreter in
    Visual Studio is invaluable when developing on Windows.

Currently there are two parallel building systems: make-make.r and
CMake. Either of them is good enough for our purpose: make-make.r is
simple, but very limited; cmake is good at generating IDE project files,
but not well integrated with the system (not eays to define dependency,
or module/extension building procedure)


#134

Date: 2017-06-08T15:23:48Z
Author: Shixin Zeng
Commit: dc6ea39a7d9cd496933e1dd2295278d01f510211
Message: Add an extension uuid

On Linux, it depends on libuuid from
https://github.com/karelzak/util-linux/tree/master/libuuid. The libuuid
is fetched by the script make-libuuid.reb, which also modifies the code
such that it compiles cleanly with RIGOURS=yes.


#135

Date: 2017-06-27T18:06:10Z
Author: Shixin Zeng
Commit: f0389a8693a15ac639ea4598baf27ffab67bb9c4
Message: Add appveyor config file


#136

Date: 2017-07-03T19:21:39Z
Author: Shixin Zeng
Commit: ea535aeb562fc7eb55a2a8cd3daac35f904cf165
Message: More build combinations

Also builtin all extensions for first two env, because some of the
tests depend on extensions, e.g. image codecs

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-ea535ae
r3-ea535ae-debug

0.2.40 OSX x64
r3-ea535ae
r3-ea535ae-debug
r3-ea535ae-debug-cpp

0.3.40 Win64 x86
r3-ea535ae-debug-cpp.exe
r3-ea535ae-debug.exe

0.4.4 Linux32 x86
r3-ea535ae

0.4.40 Linux64 x86
r3-ea535ae
r3-ea535ae-debug-cpp


#137

Date: 2017-07-04T20:54:43Z
Author: Brian Dickens
Commit: 4384c49dbd17e3d4f22cbdc6a021f436a3d05c22
Message: Fix stack overflow when molding cyclical structures

There was an array of values used to notice when a mold was recursing,
that was used to stop the molding and output a “…” instead. At some
point when the logic behind having managed vs. unmanaged series was
being developed, the value being tested for in this array was not the
array itself, but the first value in the array. Hence it would only
stop recursions if the array recursed in its first element.

This commit simplifies the code, and dodges an issue about molding an
unmanaged series (e.g. for debugging) by using a series of raw pointers
instead of values for the recursion.

Also, this commit adds a recursive case to the test suite.

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-4384c49
r3-4384c49-debug

0.2.40 OSX x64
r3-4384c49
r3-4384c49-debug
r3-4384c49-debug-cpp

0.3.40 Win64 x86
r3-4384c49-debug-cpp.exe
r3-4384c49-debug.exe

0.4.4 Linux32 x86
r3-4384c49

0.4.40 Linux64 x86
r3-4384c49
r3-4384c49-debug-cpp


#138

Date: 2017-07-05T16:01:40Z
Author: Brian Dickens
Commit: 6ed55111a3b84157b4639a67d84122a064b2fafe
Message: Use empty blocks instead of BLANK! for %systems.r

In R3-Alpha, an underscore is just a WORD!. A compatibility hack makes
it evaluate to a #[none], but that hack only works in evaluative
contexts.

There’s no particularly compelling reason why an empty block couldn’t
be used in the %systems.r table, so this switches it…rather than try
and come up with a workaround.

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-6ed5511
r3-6ed5511-debug

0.2.40 OSX x64
r3-6ed5511
r3-6ed5511-debug
r3-6ed5511-debug-cpp

0.3.40 Win64 x86
r3-6ed5511-debug-cpp.exe
r3-6ed5511-debug.exe

0.4.4 Linux32 x86
r3-6ed5511

0.4.40 Linux64 x86
r3-6ed5511
r3-6ed5511-debug-cpp


#139

Date: 2017-07-05T20:25:18Z
Author: Shixin Zeng
Commit: b544aabb7349a4d016c15861cdd6505ca24dacad
Message: Add -rdynamic link option to r3

When extensions are built as dynamic loadable libraries, they need to
import symbols from the main executable, and these symbols have to be
exported by the executable. With ELF and GCC, this is done by
-rdynamic:

“Pass the flag -export-dynamic to the ELF linker, on targets that
support it. This instructs the linker to add all symbols, not only used
ones, to the dynamic symbol table. This option is needed for some uses
of dlopen or to allow obtaining backtraces from within a program.”

The binaries below are only available for a couple of weeks or so after commit date.

0.13.2 Android5-arm
r3-b544aab
r3-b544aab-debug

0.2.40 OSX x64
r3-b544aab
r3-b544aab-debug
r3-b544aab-debug-cpp

0.3.40 Win64 x86
r3-b544aab-debug-cpp.exe
r3-b544aab-debug.exe

0.4.4 Linux32 x86
r3-b544aab

0.4.40 Linux64 x86
r3-b544aab
r3-b544aab-debug-cpp


#140

Date: 2017-07-05T20:33:50Z
Author: Shixin Zeng
Commit: e3473eb730de9c2516f386d637e369245f37463e
Message: Fix flags to GCC when optimization is off