### Changes between 3.5 and 3.6 [xx XXX xxxx]
+ * An ANSI-C toolchain is no longer sufficient for building OpenSSL. The code
+ should build on compilers supporting C-99 features.
+
+ *Alexandr Nedvedicky*
+
* The VxWorks platforms have been removed. These platforms were unadopted,
unmaintained and reported to be non-functional.
* A "make" implementation
* Perl 5 with core modules (please read [NOTES-PERL.md](NOTES-PERL.md))
* The Perl module `Text::Template` (please read [NOTES-PERL.md](NOTES-PERL.md))
- * an ANSI C compiler
+ * a C-99 compiler
* POSIX C library (at least POSIX.1-2008), or compatible types and
functionality.
* a development environment in the form of development libraries and C
This release incorporates the following potentially significant or incompatible
changes:
+ * An ANSI-C toolchain is no longer sufficient for building OpenSSL. The code
+ should build on compilers supporting C-99 features.
+
* The VxWorks platforms have been removed.
* Added an `openssl configutl` utility for processing the openssl
+++ /dev/null
-Notes on ANSI C
-===============
-
-When building for pure ANSI C (C89/C90), you must configure with at least
-the following configuration settings:
-
-- `no-asm`
-
- There are cases of `asm()` calls in our C source, which isn't supported
- in pure ANSI C.
-
-- `no-secure-memory`
-
- The secure memory calls aren't supported with ANSI C.
-
-- `-D_XOPEN_SOURCE=1`
-
- This macro enables the use of the following types, functions and global
- variables:
-
- - `timezone`
-
-- `-D_POSIX_C_SOURCE=200809L`
-
- This macro enables the use of the following types, functions and global
- variables:
-
- - `ssize_t`
- - `strdup()`
-
-It's arguable that with gcc and clang, all of these issues are removed when
-defining the macro `_DEFAULT_SOURCE`. However, that effectively sets the C
-language level to C99, which isn't ANSI C.
--- /dev/null
+Notes on C-99
+=============
+
+This file contains a list of C-99 features we don't allow for OpenSSL.
+Starting with 3.6 OpenSSL project is going to gradually adopt C-99 features.
+The plan is to bring those features in small steps. Either with new
+code where particular C-99 construct makes sense (think of designated initializers),
+or when refactoring existing code and using C-99 language feature improves
+readability/maintainability of the code. C-99 seems to be implemented by major
+compilers ([clang](https://clang.llvm.org/c_status.html#c99), [gcc](https://gcc.gnu.org/c99status.html), [msvc](https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170)), therefore we can opt
+for permissive policy to adopt C-99 standard. This approach means OpenSSL
+project accepts all C-99 features except those explicitly listed here.
+The list here is going to be updated by features we either
+
+ - find not useful (or not a good match) for OpenSSL
+
+ - the feature is not implemented by some non-mainstream compiler which
+ we need to keep supported for benefit of OpenSSL users
+
+The list of C-99 features we don't support in OpenSSL project follows:
+
+ - do not use `//` for comments, stick to `/* ... */`