aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-05-09epp: Implement the -if and -elif preprocessor directivesBjörn Gustavsson
Libraries or applications that support more than one major release of OTP may need to use conditional compilation of Erlang source code. Here are few examples where it would be necessary or desirable: * To support a new data type or language feature only available in the latest major release (real-world examples: maps and the stacktrace syntax). * To avoid warnings for deprecated functions. * To avoid dialyzer warnings. Previously, to do conditional compilation, one would have to use a parse transform or some external tool such as 'autoconf'. To simplify conditional compilation, introduce the -if and -elif preprocessor directives, to allow code like this to be written: -if(?OTP_RELEASE =:= 21). %% Code that will only work in OTP 21. -else. %% Fallback code. -endif. What kind of expressions should be allowed after an -if? We certainly don't want to allow anything with a side effect, such as a '!' or a 'receive'. We also don't want it to be possible to call erlang:system_info/1, as that could make the code depedent on features of the run-time system that could change very easily (such as the number of schedulers). Requiring the expression to be a guard expression makes most sense. It is to explain in the documentation and easy for users to understand. For simplicity of implementation, only a single guard expression will be supported; that is, the ',' and ';' syntax for guards is not supported. To allow some useful conditions to be written, there is a special built-in function: defined(Symbol) tests whether the preprocessor symbol is defined, just like -ifdef. The reason for having this defined/1 is that the defined test can be combined with other tests, for example: 'defined(SOME_NAME) andalso ?OTP_RELEASE > 21'.
2018-05-06epp: Add the pre-defined macro OTP_RELEASEBjörn Gustavsson
Add a new pre-defined macro called OTP_RELEASE that will expand to an integer being the OTP version. Thus, in OTP 19 the value will be the integer 19. The OTP_RELEASE macro is particularly useful in order to have different source code depending on new language features or new features in the type specification syntax. Those features are only introduced in major versions of OTP. To be truly useful, the -if preprocessor directive need to be implemented. That is the purpose of the next commit. Code that will need to work in both OTP 18 and OTP 19 can be structured in the following way: -ifdef(OTP_RELEASE). %% Code that only works in OTP 19 and later. -else. %% Code that will work in OTP 18. -endif.
2018-05-04Merge branch 'hans/ssh/rekey_limit/OTP-15069'Hans Nilsson
* hans/ssh/rekey_limit/OTP-15069: ssh: Extend rekey_limit to also take an optional time
2018-05-04ssh: Extend rekey_limit to also take an optional timeHans Nilsson
2018-05-04scripts/diffable: Include the hipe applicationBjörn Gustavsson
2018-05-04Merge pull request #1766 from seancribbs/add_erl_types_suiteHans Bolinder
Move erl_types test into a common_test suite
2018-05-04Merge branch 'bjorn/fix-typer-link'Björn Gustavsson
* bjorn/fix-typer-link: Fix the missing link to typer in an installed system
2018-05-04Merge branch 'john/kernel/add-file_int-to-release'John Högberg
* john/kernel/add-file_int-to-release: Add file_int.hrl to release target
2018-05-04Merge branch 'john/erts/fix-windows-symlinks/OTP-15062/ERL-615'John Högberg
* john/erts/fix-windows-symlinks/OTP-15062/ERL-615: Stop assuming that all NTFS reparse points are links
2018-05-03Stop assuming that all NTFS reparse points are linksJohn Högberg
This fixes a crash that would occur when using file:read_file_info/1 on a file with a non-link reparse point, which are commonly seen in RSS and OneDrive folders.
2018-05-03Merge branch 'ingela/ssl/testcuddling'Ingela Anderton Andin
* ingela/ssl/testcuddling: ssl: Exclude DTLS tests for one more OpenSSL version for now ssl: Use sane input data ssl: Make sure help function works from all parts of test suite
2018-05-03Merge branch 'lukas/kernel/logger-docs'Lukas Larsson
* lukas/kernel/logger-docs: Add xmllint to travis build kernel: Use formatter in simple logger example
2018-05-03Add xmllint to travis buildLukas Larsson
2018-05-03Merge branch 'maint'John Högberg
* maint: Updated OTP version Update release notes Update version numbers ssl: Prepare for release ssl: Proper handling of clients that choose to send an empty answer to a certificate request heart: Use ntohs instead of manual conversion
2018-05-03Merge branch 'maint-20' into maintJohn Högberg
* maint-20: Updated OTP version Update release notes Update version numbers ssl: Prepare for release ssl: Proper handling of clients that choose to send an empty answer to a certificate request heart: Use ntohs instead of manual conversion
2018-05-02kernel: Use formatter in simple logger exampleLukas Larsson
2018-05-02Add file_int.hrl to release targetJohn Högberg
2018-05-02ssl: Exclude DTLS tests for one more OpenSSL version for nowIngela Anderton Andin
2018-05-02ssl: Use sane input dataIngela Anderton Andin
2018-05-02Fix the missing link to typer in an installed systemBjörn Gustavsson
2018-05-02Updated OTP versionOTP-20.3.5Erlang/OTP
2018-05-02Update release notesErlang/OTP
2018-05-02Update version numbersErlang/OTP
2018-05-02Merge branch 'ingela/ssl/client-has-no-cert/ERL-599/OTP-15050' into maint-20Erlang/OTP
* ingela/ssl/client-has-no-cert/ERL-599/OTP-15050: ssl: Prepare for release ssl: Proper handling of clients that choose to send an empty answer to a certificate request
2018-05-02Merge branch 'john/erts/fix-heart-command-overflow/OTP-15034/ERIERL-166' ↵Erlang/OTP
into maint-20 * john/erts/fix-heart-command-overflow/OTP-15034/ERIERL-166: heart: Use ntohs instead of manual conversion # Conflicts: # lib/kernel/test/heart_SUITE.erl
2018-05-02ssl: Make sure help function works from all parts of test suiteIngela Anderton Andin
Depending on context trap_exit flag may be set or not. So always set trap_exit and consume the EXIT signal and then set it back.
2018-05-02Revert "Updated OTP version"Henrik
This reverts commit a0d7ce6d3613d9e031b674a6ba3dbb474c89b639.
2018-05-02Revert "Update release notes"Henrik
This reverts commit 202bb737e3deabfebee683266f4b7c42781eb521.
2018-05-02Revert "Update version numbers"Henrik
This reverts commit 345f7f527a4c26ef49cef0d81e2c8b71bf01ebc3.
2018-05-02Update OTP_VERSION for Release CandidateOTP-21.0-rc1Henrik
2018-04-30Updated OTP versionErlang/OTP
2018-04-30Update release notesErlang/OTP
2018-04-30Update version numbersErlang/OTP
2018-04-30Merge branch 'ingela/ssl/do-not-hardcode-cipher-suites'Ingela Anderton Andin
* ingela/ssl/do-not-hardcode-cipher-suites: ssl: Fix ECDSA key decode clause ssl: Avoid hardcoding of cipher suites and fix ECDH suite handling ssl: Run all test case combinations ssl: Update tests to reflect sslv3 is not supported by default
2018-04-30ssl: Fix ECDSA key decode clauseIngela Anderton Andin
2018-04-30ssl: Avoid hardcoding of cipher suites and fix ECDH suite handlingIngela Anderton Andin
ECDH suite handling did not use the EC parameters form the certs as expected.
2018-04-30ssl: Run all test case combinationsIngela Anderton Andin
Fix test case code to use keyAgreement for ECDH_ECDSA
2018-04-28ssl: Update tests to reflect sslv3 is not supported by defaultIngela Anderton Andin
2018-04-27Merge branch 'peterdmv/inets/prepare_for_release'Péter Dimitrov
* peterdmv/inets/prepare_for_release: inets: Correct runtime_dependencies before release Change-Id: I6d5bcfd870c072944df79a2f36ac69d8f88499d0
2018-04-27inets: Correct runtime_dependencies before releasePéter Dimitrov
Change-Id: Ia53fb6bbf0822608ce9f7afe9b905d3bb1ce0b11
2018-04-27Merge branch 'sverker/lc-thread-exit-free-fix'Sverker Eriksson
* sverker/lc-thread-exit-free-fix: erts: Fix memory leak in lock checker at thread exit
2018-04-27Merge branch 'rickard/process_info/OTP-14966'Rickard Green
* rickard/process_info/OTP-14966: Fix scheduled process_info() 'status' request Fix handling of process-info requests in receive
2018-04-27Fix scheduled process_info() 'status' requestRickard Green
2018-04-27Merge branch 'ingela/dtls/abbreviated'Ingela Anderton Andin
* ingela/dtls/abbreviated: dtls: Trigger resend in abbreviated handshake if change_cipher_spec is received to early.
2018-04-27dtls: Trigger resend in abbreviated handshake if change_cipher_specIngela Anderton Andin
is received to early.
2018-04-27Update primary bootstrapBjörn Gustavsson
2018-04-27Merge branch 'bjorn/compiler/yreg-init'Björn Gustavsson
* bjorn/compiler/yreg-init: beam_validator: Verify Y registers in exception-causing instructions Correct beam_utils:is_killed/3 (again)
2018-04-27Merge branch 'lars/crypto/test-suite-problem'Lars Thorsen
* lars/crypto/test-suite-problem: [crypto] Skip test cases for specific ssl version on old machine
2018-04-27[crypto] Skip test cases for specific ssl version on old machineLars Thorsen
Skip the test cases in the engine_SUITE on a specific ssl version used on one test machine.
2018-04-27Merge branch 'lars/remove-corba-applications/OTP-14283'Lars Thorsen
* lars/remove-corba-applications/OTP-14283: Move the corba applcations to separate repository