Skip to content

Commit 33b5edc

Browse files
committed
Merge branch 'master' into refactor/tokenizer
2 parents aa87143 + 72cf1a7 commit 33b5edc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1156
-719
lines changed

.gitattributes

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
# Override language auto-detection on GitHub.
12
libraries/* linguist-vendored
23
distribution/**/*.inc linguist-language=POV-Ray
4+
distribution/platform-specific/windows/Insert?Menu/*.txt linguist-language=POV-Ray
35
**/*.pov linguist-language=POV-Ray
6+
**/*.h linguist-language=C++
7+
source/povms/povms.h linguist-language=C
8+
libraries/**/*.h linguist-language=C
9+
libraries/boost/*.h linguist-language=C++
10+
libraries/ilmbase/*.h linguist-language=C++
11+
libraries/openexr/*.h linguist-language=C++
12+
13+
# Do not auto-merge version number file.
14+
source/base/version.h -merge

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[![AppVeyor Build status](https://img.shields.io/appveyor/ci/c-lipka/povray-exwy4.svg?label=appveyor)](https://ci.appveyor.com/project/c-lipka/povray-exwy4 "AppVeyor: Windows Server 2012 with Visual Studio 2015")
66
[![Travis CI Build Status](https://img.shields.io/travis/POV-Ray/povray.svg?label=travis%20ci)](https://travis-ci.org/POV-Ray/povray "Travis CI: Ubuntu 12.04 LTE 64-bit with gcc 4.6; OS X 10.11 with clang 4.2")
77
[![Coverity Code Analysis](https://scan.coverity.com/projects/269/badge.svg)](https://scan.coverity.com/projects/pov-ray "Coverity: Static Code Analysis")
8-
[![Maintenance Status](https://img.shields.io/maintenance/yes/2017.svg)](README.md "Last edited 2017-08-18")
8+
[![Maintenance Status](https://img.shields.io/maintenance/yes/2018.svg)](README.md "Last edited 2018-05-22")
99

1010
- [License](#license)
1111
- [Forums](#forums)

appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ for:
8080
$env:pov_release_type = ($env:pov_build_type).ToLower() + ' release'
8181
$env:pov_build_title = $env:pov_build_type + ' build'
8282
$env:pov_build_message += '**Note:** This is a binary-only ' + $env:pov_release_type + '; to install, copy the '
83-
$env:pov_build_message += 'binary into an existing POV-Ray 3.7 installation. (Make sure to backup the original '
83+
$env:pov_build_message += 'binary into an existing POV-Ray v3.7 installation. (Make sure to backup the original '
8484
$env:pov_build_message += 'binary first.)'
8585
$env:pov_build_message += "`n`n"
8686
$env:pov_build_message += 'These binaries require Windows Vista or higher, due to limitations of our automated '

changes.txt

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,6 @@ This version is still under active development, and not finalized yet.
3737
NOTE: This release cycle has been redesignated v3.8.0. There will not be a
3838
v3.7.1 release proper.
3939

40-
Performance Improvements
41-
------------------------
42-
43-
- Significantly improved parsing speed of skipped conditional blocks (e.g. in
44-
`#if(false) ... #end`), especially for blocks containing few directives
45-
(stuff that begins with `#`).
46-
4740
Changed Behaviour
4841
-----------------
4942

@@ -61,6 +54,22 @@ Changed Behaviour
6154
- Token counting in conditional blocks (e.g. in `#if ... #end`) has changed.
6255
Whenever such a block is skipped, the token count is now incremented only
6356
by directives (stuff that begins with `#`).
57+
- UV mapping of cylinder, cone and lemon primitives has been disabled again
58+
for now, due to their orientation being poorly defined.
59+
60+
New Features
61+
------------
62+
63+
- The `ovus` primitive has been extended in multiple ways. See the
64+
documentation (currently being maintained on <http://wiki.povray.org>) for
65+
details.
66+
67+
Performance Improvements
68+
------------------------
69+
70+
- Significantly improved parsing speed of skipped conditional blocks (e.g. in
71+
`#if(false) ... #end`), especially for blocks containing few directives
72+
(stuff that begins with `#`).
6473

6574
Fixed or Mitigated Bugs
6675
-----------------------
@@ -85,27 +94,53 @@ Reported via the Newsgroups:
8594
an orthographic camera.
8695
8796
(2018-01-05, povray.beta-test, "3.8.0 block pattern, density list parsing issue.")
97+
98+
(2018-08-27, povray.advanced-users, "Re: It gets even weirder.")
99+
Trying to `#declare Foo[A][B]=...` with `Foo` being an array of arrays and
100+
`Foo[A]` not yet initialized causes a hard crash instead of a parse error.
88101

89102
Miscellaneous:
90103

91104
- Fix `interior_texture` for text objects (as mentioned in GitHub issue #65)
92105
- Eliminated use of deprecated C++ `register` keyword (except in 3rd party
93106
libraries bundled with the POV-Ray source code).
107+
- Fix long-standing bug in Julia fractal primitive using hypercomplex numbers.
108+
109+
Development Related
110+
-------------------
111+
112+
- When compiled in debug mode, a new directive `#breakpoint` is now available,
113+
intended for triggering an unconditional breakpoint from the scene file, or
114+
priming a conditional breakpoint. See `Parser::Parse_Breakpoint()` in
115+
`source/parser/parser_tokenizer.cpp` for more details.
116+
- When compiled in debug mode, POV-Ray for Windows will now make do with
117+
the release version of the editor DLLs if it can't find the debug version.
118+
- A new version of the Git pre-commit hook is available; please, copy
119+
`pre-commit` from `tools/git/hooks/` to `.git/hooks/` in your local
120+
repository.
121+
- To simplify version number housekeeping, the file `unix/VERSION` is now
122+
created on the fly by the `unix/prebuild.sh` script, and has been dropped
123+
from the repository. To retrieve version information from the source
124+
package, use one of the new `get-source-version.*` scripts provided in
125+
`tools/unix/` and `tools/windows/`, respectively.
126+
- To simplify creating reproducible builds, the Unix build process has been
127+
amended to compile and link source files in a well-defined order.
94128

95129
Other Noteworthy
96130
----------------
97131

132+
- During alpha development phase, POV-Ray v3.8.0-alpha for Windows will
133+
piggypack on an existing v3.7 installation to allow for raw binary
134+
distribution.
98135
- The source code now requires a C++11-compliant compiler.
99136
- The Unix build process now officially requires Autoconf 2.68 or later.
100137
- Added `--generation` command-line switch to POV-Ray for Unix, which will
101138
cause POV-Ray to print its abbreviated version number to standard output.
102-
- To simplify version number housekeeping, the file `unix/VERSION` is now
103-
created on the fly by the `unix/prebuild.sh` script, and has been dropped
104-
from the repository. To retrieve version information from the source
105-
package, use one of the new `get-source-version.*` scripts provided in
106-
`tools/unix/` and `tools/windows/`, respectively.
107139
- The `unix/prebuild.sh` script can now be run from the main directory; it is
108140
no longer necessary to change to the unix directory first.
141+
- The `./configure` script can now be run without the `COMPILED_BY=...`
142+
option. In this case it defaults to `$USER <no contact address>`, where
143+
`$USER` is your login name.
109144

110145

111146
Changes between 3.7.1-beta.9 and 3.7.1-rc.1

revision.txt

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,75 @@ Notes:
3535
POV-Ray v3.8.0-???
3636
------------------------------------------------------------------------------
3737

38+
Commit c42e14e7 on 2018-08-27 by Christoph Lipka
39+
40+
Fix hard crash in `#declare Foo[A][B]=...` if `Foo` is an array of
41+
arrays and `Foo[A]` is uninitialized.
42+
43+
Commit 669144e1 on 2018-06-17 by Christoph Lipka
44+
45+
Fix bug in legacy `version` setting.
46+
47+
Commit ecad9eb1 on 2018-05-27 by Grimbert Jérôme
48+
49+
Correct (historical) typo for Julia fractal with hypercomplex (#359)
50+
51+
a small typo, a huge impact on rendered fractal (where .y component was
52+
used also as .z, ignoring the provided .z )
53+
54+
Commit 851a509b on 2018-05-22 by Christoph Lipka
55+
56+
Merge remote-tracking branch 'origin/master'
57+
58+
Commit d825eccf on 2018-05-22 by Christoph Lipka
59+
60+
Update maintenance status in README.md
61+
62+
Commit e561dfb2 on 2018-05-22 by Christoph Lipka
63+
64+
Fix another build error on Windows.
65+
66+
Commit cb744d84 on 2018-05-22 by Christoph Lipka
67+
68+
Check in a file that accidently didn't make it into ef3c54f8.
69+
70+
Commit d6cee867 on 2018-05-21 by Christoph Lipka
71+
72+
[ci skip] Bring unit test project back to life.
73+
74+
Commit ef3c54f8 on 2018-05-04 by Christoph Lipka
75+
76+
Eliminate use of `POV_LONG` in the role as 64-bit file offset, and
77+
redirect references to `lseek64` via an obvious macro.
78+
79+
Commit 8ef36699 on 2018-05-04 by Christoph Lipka
80+
81+
Move parser code into dedicated namespace.
82+
83+
Commit 06a120de on 2018-05-02 by Alec Perkins
84+
85+
Fix typo in README.md (#356)
86+
87+
Commit 576077ed on 2018-05-01 by Christoph Lipka
88+
89+
[ci skip] Some source documentation work.
90+
91+
Commit bf0e4bf8 on 2018-04-08 by Christoph Lipka
92+
93+
Some updates to the coding styleguide.
94+
95+
Commit a1ae5d69 on 2018-04-08 by Christoph Lipka
96+
97+
Work around thread_local-related compiler bug on Mac OS X.
98+
99+
Commit f4ca05e0 on 2018-04-07 by Christoph Lipka
100+
101+
Eliminate build error in photons code.
102+
103+
Commit 1c131b77 on 2018-04-07 by Christoph Lipka
104+
105+
Update revision.txt.
106+
38107
Commit d8b8ecfe on 2018-04-07 by Christoph Lipka
39108

40109
Fold v3.8.0 branch back into master branch for now.
@@ -932,7 +1001,7 @@ Commit 481db071 on 2017-01-09 by Christoph Lipka
9321001

9331002
- Beta now _does_ use the "v3.7-beta" registry key instead of "v3.7".
9341003
- Beta now only copies v3.6 registry data if no existing v3.7 proper
935-
installation is found.
1004+
installation is found.
9361005

9371006
Commit b6532d07 on 2017-01-09 by Christoph Lipka
9381007

source-doc/devutils.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ Git Utilities
1919
The newly generated `revision.txt` is _not_ intended to be committed as-is, but rather merged with the
2020
previous version manually.
2121

22+
- `git update-index --skip-workspace FILENAME`: Use this git command for any file that you have to
23+
change in your workspace but don't want to include in any commits nor have it overwritten
24+
during a reset (e.g. `source/base/build.h`, which must be edited in a Windows build environment
25+
to placate the `BUILT_BY` mechanism).
26+
2227

2328
Visual Studio 2010 Utilities
2429
============================

source/backend/configbackend.h

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/// @parblock
1111
///
1212
/// Persistence of Vision Ray Tracer ('POV-Ray') version 3.8.
13-
/// Copyright 1991-2017 Persistence of Vision Raytracer Pty. Ltd.
13+
/// Copyright 1991-2018 Persistence of Vision Raytracer Pty. Ltd.
1414
///
1515
/// POV-Ray is free software: you can redistribute it and/or modify
1616
/// it under the terms of the GNU Affero General Public License as
@@ -77,19 +77,17 @@
7777
#endif
7878

7979
/// @def POV_THREAD_STACK_SIZE
80-
/// Internally defaulted thread stack size which the user can override.
81-
///
82-
/// @note
83-
/// The defaulted minimum is 2MB, but later defaulted to 4MB for unix due user regression.
80+
/// Default thread stack size.
8481
///
8582
#ifndef POV_THREAD_STACK_SIZE
86-
#define POV_THREAD_STACK_SIZE (1024 * 1024 * 2)
87-
#else
88-
#if POV_THREAD_STACK_SIZE < (1024 * 64)
89-
#error "POV_THREAD_STACK_SIZE set less than 65KB or not a byte count."
90-
#endif
83+
#define POV_THREAD_STACK_SIZE (2 * 1024 * 1024) // 2 MiB
9184
#endif
9285

86+
static_assert(
87+
POV_THREAD_STACK_SIZE >= 1024 * 1024,
88+
"Unreasonably small thread stack size. Proceed at your own risk."
89+
);
90+
9391
/// @def POV_CONVERT_TEXT_TO_UCS2
9492
/// Convert text from system-specific format to UCS2.
9593
///

source/base/build.h

Lines changed: 69 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
/// @parblock
1414
///
1515
/// Persistence of Vision Ray Tracer ('POV-Ray') version 3.8.
16-
/// Copyright 1991-2017 Persistence of Vision Raytracer Pty. Ltd.
16+
/// Copyright 1991-2018 Persistence of Vision Raytracer Pty. Ltd.
1717
///
1818
/// POV-Ray is free software: you can redistribute it and/or modify
1919
/// it under the terms of the GNU Affero General Public License as
@@ -55,20 +55,78 @@
5555
///
5656
/// @{
5757

58-
// Placeholders for macros injected during automated builds - do not remove or change!
59-
//{POV_AUTOBUILD_A}
60-
//{POV_AUTOBUILD_B}
61-
//{POV_AUTOBUILD_C}
62-
//{POV_AUTOBUILD_1}
63-
//{POV_AUTOBUILD_2}
64-
//{POV_AUTOBUILD_3}
58+
/// @def POV_BUILD_INFO
59+
/// Additional version information pertaining to the build.
60+
///
61+
/// This optional macro should concisely identify the target runtime environment
62+
/// as well as the build environment used. For instance, POV-Ray for Windows,
63+
/// 32-bit binary with SSE2 enabled, built with Visual Studio 2015, might be
64+
/// identified as `msvc14.sse2.win32`.
65+
///
66+
/// @note
67+
/// If defined, this macro must evaluate to an ASCII string containing only
68+
/// alphanumeric characters or dots.
69+
///
70+
/// The content of this macro will be included in the binary's version string,
71+
/// separated from the source code version by a `+` character.
72+
///
73+
/// The intent is to be able to distinguish binaries generated from the same
74+
/// source code version but for different target platforms or using different
75+
/// build environments.
76+
///
77+
#if defined(DOXYGEN) && !defined(POV_BUILD_INFO)
78+
// Work around doxygen being unable to document undefined macros.
79+
#define POV_BUILD_INFO (undefined)
80+
#undef POV_BUILD_INFO
81+
#endif
82+
83+
/// @def POV_RAY_BUILD_ID
84+
/// Unique build identifier string.
85+
///
86+
/// This optional macro should be set to a different string each time the build
87+
/// process is run, for example by setting it to a timestamp or the value of a
88+
/// counter automatically incremented before each build.
89+
///
90+
/// @note
91+
/// If defined, this macro must evaluate to an ASCII string containing only
92+
/// alphanumeric characters or dots.
93+
///
94+
/// The content of this macro will effectively be appended to the
95+
/// @ref POV_BUILD_INFO, separated by a `.` character.
96+
///
97+
/// The intent is to be able to distinguish binaries generated from the same
98+
/// source code version for different target platforms and using similar build
99+
/// environments, but with potential minute differences that may or may not
100+
/// cause differences in the binaries.
101+
///
102+
/// @note
103+
/// This macro should never be defined in any source code, but rather
104+
/// injected via other means as part of the build process, e.g. via a
105+
/// compiler option (`-DPOV_RAY_BUILD_ID=...` in gcc).
106+
///
107+
#if defined(DOXYGEN) && !defined(POV_RAY_BUILD_ID)
108+
// Work around doxygen being unable to document undefined macros.
109+
#define POV_RAY_BUILD_ID (undefined)
110+
#undef POV_RAY_BUILD_ID
111+
#endif
65112

66113
/// @def BUILT_BY
67114
/// Specifies the person or organization responsible for this build.
68-
/// @attention Please set this to your real name, and/or include a working email or website address to contact you.
115+
///
116+
/// @attention
117+
/// Please set this to your real name, and/or include a working email or
118+
/// website address to contact you.
119+
///
120+
/// @note
121+
/// It is recommended to avoid editing this macro in the source code,
122+
/// and instead inject the macro via other means. If this is not feasible
123+
/// and you are working in a git workspace, it is recommended to run
124+
/// `git update-index --skip-worktree source/base/build.h` to avoid
125+
/// undesired interference between the repository and your local changes.
126+
///
69127
#ifndef BUILT_BY
70-
#define BUILT_BY "YOUR NAME (YOUR EMAIL)"
71-
#error "Please fill in BUILT_BY, then remove this line"
128+
#define BUILT_BY "YOUR NAME (YOUR EMAIL)"
129+
#error "Please fill in BUILT_BY, then remove this line"
72130
#endif
73131

74132
/// @}

source/base/colour.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
/// @parblock
99
///
1010
/// Persistence of Vision Ray Tracer ('POV-Ray') version 3.8.
11-
/// Copyright 1991-2017 Persistence of Vision Raytracer Pty. Ltd.
11+
/// Copyright 1991-2018 Persistence of Vision Raytracer Pty. Ltd.
1212
///
1313
/// POV-Ray is free software: you can redistribute it and/or modify
1414
/// it under the terms of the GNU Affero General Public License as
@@ -45,17 +45,20 @@ namespace pov_base
4545
#if (NUM_COLOUR_CHANNELS == 3)
4646

4747
// Approximate dominant wavelengths of primary hues.
48-
// Source: 3D Computer Graphics by John Vince (Addison Wesely)
48+
// Source: 3D Computer Graphics by John Vince (Addison Wesley)
4949
// These are user-adjustable with the irid_wavelength keyword.
5050
// Red = 700 nm Grn = 520 nm Blu = 480 nm
5151
// Divided by 1000 gives: rwl = 0.70; gwl = 0.52; bwl = 0.48;
52-
template<> const MathColour MathColour::mkDefaultWavelengths = MathColour(RGBColour(0.70, 0.52, 0.48));
53-
template<> const PreciseMathColour PreciseMathColour::mkDefaultWavelengths = PreciseMathColour(PreciseRGBColour(0.70, 0.52, 0.48));
52+
template<typename T>
53+
const GenericColour<T> GenericColour<T>::mkDefaultWavelengths = GenericColour<T>(GenericRGBColour<T>(0.70, 0.52, 0.48));
5454

5555
#else
5656

5757
#error "TODO!"
5858

5959
#endif
6060

61+
template class GenericColour<ColourChannel>;
62+
template class GenericColour<PreciseColourChannel>;
63+
6164
}

0 commit comments

Comments
 (0)