mirror of
https://github.com/JetBrains/JetBrainsRuntime.git
synced 2025-12-14 21:39:41 +01:00
Compare commits
74 Commits
jdk-11.0.2
...
jdk-11.0.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c5407b6a84 | ||
|
|
819a1fec8f | ||
|
|
d46f769e70 | ||
|
|
8894d6ad1b | ||
|
|
c4f2b0c0d9 | ||
|
|
9d55a69f64 | ||
|
|
bfc3bebd26 | ||
|
|
0df5d2700d | ||
|
|
61227856cc | ||
|
|
398ba91d4d | ||
|
|
276a157622 | ||
|
|
524170d5a0 | ||
|
|
ed62438860 | ||
|
|
1672eb1b5e | ||
|
|
c4a7b2c304 | ||
|
|
79faa19603 | ||
|
|
856bab316a | ||
|
|
8031251bc9 | ||
|
|
ea1389c971 | ||
|
|
11f9400936 | ||
|
|
dcc970180a | ||
|
|
2b70822671 | ||
|
|
2adb01e8c5 | ||
|
|
318c352e5b | ||
|
|
5ce10dfe2d | ||
|
|
710baba5ab | ||
|
|
198aef4f0b | ||
|
|
657f3cd3e5 | ||
|
|
690d595385 | ||
|
|
c0e7aa6c12 | ||
|
|
da5bfa9a70 | ||
|
|
c56a86d448 | ||
|
|
13dab160c6 | ||
|
|
6d469db3a6 | ||
|
|
6b7a312bd3 | ||
|
|
428c2a292a | ||
|
|
bf78d9b850 | ||
|
|
624cef6f9b | ||
|
|
8785172210 | ||
|
|
289644add4 | ||
|
|
ea3a0e4504 | ||
|
|
659a466920 | ||
|
|
86dddbcda6 | ||
|
|
6139332080 | ||
|
|
6d12f92616 | ||
|
|
aad0315a00 | ||
|
|
1fafc5d236 | ||
|
|
9ee1571d04 | ||
|
|
d158b8baef | ||
|
|
dba357f027 | ||
|
|
bbe28d9278 | ||
|
|
8322c66efa | ||
|
|
7dab5fef87 | ||
|
|
52c8606db4 | ||
|
|
cde36426cf | ||
|
|
33d19c4b29 | ||
|
|
6a9eb07c20 | ||
|
|
46ef0f6d7d | ||
|
|
c67732a5cd | ||
|
|
ecff933d69 | ||
|
|
8db58a006f | ||
|
|
a2983ce702 | ||
|
|
86a1b523c5 | ||
|
|
be6956b156 | ||
|
|
4adb4598c3 | ||
|
|
e8db40e490 | ||
|
|
f53cbeaa14 | ||
|
|
62858d88f5 | ||
|
|
8b258638e7 | ||
|
|
7cee7d037e | ||
|
|
a47c72fad4 | ||
|
|
bf34fd4d41 | ||
|
|
3b7bcdbd10 | ||
|
|
50da3f663a |
21
.github/scripts/gen-build-failure-report.sh
vendored
21
.github/scripts/gen-build-failure-report.sh
vendored
@@ -24,12 +24,19 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Import common utils
|
||||||
|
. .github/scripts/report-utils.sh
|
||||||
|
|
||||||
GITHUB_STEP_SUMMARY="$1"
|
GITHUB_STEP_SUMMARY="$1"
|
||||||
BUILD_DIR="$(ls -d build/*)"
|
BUILD_DIR="$(ls -d build/*)"
|
||||||
|
|
||||||
# Send signal to the do-build action that we failed
|
# Send signal to the do-build action that we failed
|
||||||
touch "$BUILD_DIR/build-failure"
|
touch "$BUILD_DIR/build-failure"
|
||||||
|
|
||||||
|
# Collect hs_errs for build-time crashes, e.g. javac, jmod, jlink, CDS.
|
||||||
|
# These usually land in make/
|
||||||
|
hs_err_files=$(ls make/hs_err*.log 2> /dev/null || true)
|
||||||
|
|
||||||
(
|
(
|
||||||
echo '### :boom: Build failure summary'
|
echo '### :boom: Build failure summary'
|
||||||
echo ''
|
echo ''
|
||||||
@@ -46,6 +53,20 @@ touch "$BUILD_DIR/build-failure"
|
|||||||
echo '</details>'
|
echo '</details>'
|
||||||
echo ''
|
echo ''
|
||||||
|
|
||||||
|
for hs_err in $hs_err_files; do
|
||||||
|
echo "<details><summary><b>View HotSpot error log: "$hs_err"</b></summary>"
|
||||||
|
echo ''
|
||||||
|
echo '```'
|
||||||
|
echo "$hs_err:"
|
||||||
|
echo ''
|
||||||
|
cat "$hs_err"
|
||||||
|
echo '```'
|
||||||
|
echo '</details>'
|
||||||
|
echo ''
|
||||||
|
done
|
||||||
|
|
||||||
echo ''
|
echo ''
|
||||||
echo ':arrow_right: To see the entire test log, click the job in the list to the left. To download logs, see the `failure-logs` [artifact above](#artifacts).'
|
echo ':arrow_right: To see the entire test log, click the job in the list to the left. To download logs, see the `failure-logs` [artifact above](#artifacts).'
|
||||||
) >> $GITHUB_STEP_SUMMARY
|
) >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
|
truncate_summary
|
||||||
|
|||||||
19
.github/scripts/gen-test-results.sh
vendored
19
.github/scripts/gen-test-results.sh
vendored
@@ -24,6 +24,9 @@
|
|||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Import common utils
|
||||||
|
. .github/scripts/report-utils.sh
|
||||||
|
|
||||||
GITHUB_STEP_SUMMARY="$1"
|
GITHUB_STEP_SUMMARY="$1"
|
||||||
|
|
||||||
test_suite_name=$(cat build/run-test-prebuilt/test-support/test-last-ids.txt)
|
test_suite_name=$(cat build/run-test-prebuilt/test-support/test-last-ids.txt)
|
||||||
@@ -75,18 +78,6 @@ for test in $failures $errors; do
|
|||||||
|
|
||||||
done >> $GITHUB_STEP_SUMMARY
|
done >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
# With many failures, the summary can easily exceed 1024 kB, the limit set by Github
|
|
||||||
# Trim it down if so.
|
|
||||||
summary_size=$(wc -c < $GITHUB_STEP_SUMMARY)
|
|
||||||
if [[ $summary_size -gt 1000000 ]]; then
|
|
||||||
# Trim to below 1024 kB, and cut off after the last detail group
|
|
||||||
head -c 1000000 $GITHUB_STEP_SUMMARY | tac | sed -n -e '/<\/details>/,$ p' | tac > $GITHUB_STEP_SUMMARY.tmp
|
|
||||||
mv $GITHUB_STEP_SUMMARY.tmp $GITHUB_STEP_SUMMARY
|
|
||||||
(
|
|
||||||
echo ''
|
|
||||||
echo ':x: **WARNING: Summary is too large and has been truncated.**'
|
|
||||||
echo ''
|
|
||||||
) >> $GITHUB_STEP_SUMMARY
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ':arrow_right: To see the entire test log, click the job in the list to the left.' >> $GITHUB_STEP_SUMMARY
|
echo ':arrow_right: To see the entire test log, click the job in the list to the left.' >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
|
truncate_summary
|
||||||
|
|||||||
41
.github/scripts/report-utils.sh
vendored
Normal file
41
.github/scripts/report-utils.sh
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
#
|
||||||
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License version 2 only, as
|
||||||
|
# published by the Free Software Foundation. Oracle designates this
|
||||||
|
# particular file as subject to the "Classpath" exception as provided
|
||||||
|
# by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
#
|
||||||
|
# This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
# version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
# accompanied this code).
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License version
|
||||||
|
# 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
#
|
||||||
|
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
|
# questions.
|
||||||
|
#
|
||||||
|
|
||||||
|
function truncate_summary() {
|
||||||
|
# With large hs_errs, the summary can easily exceed 1024 kB, the limit set by Github
|
||||||
|
# Trim it down if so.
|
||||||
|
summary_size=$(wc -c < $GITHUB_STEP_SUMMARY)
|
||||||
|
if [[ $summary_size -gt 1000000 ]]; then
|
||||||
|
# Trim to below 1024 kB, and cut off after the last detail group
|
||||||
|
head -c 1000000 $GITHUB_STEP_SUMMARY | tac | sed -n -e '/<\/details>/,$ p' | tac > $GITHUB_STEP_SUMMARY.tmp
|
||||||
|
mv $GITHUB_STEP_SUMMARY.tmp $GITHUB_STEP_SUMMARY
|
||||||
|
(
|
||||||
|
echo ''
|
||||||
|
echo ':x: **WARNING: Summary is too large and has been truncated.**'
|
||||||
|
echo ''
|
||||||
|
) >> $GITHUB_STEP_SUMMARY
|
||||||
|
fi
|
||||||
|
}
|
||||||
3
.github/workflows/build-macos.yml
vendored
3
.github/workflows/build-macos.yml
vendored
@@ -55,7 +55,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build-macos:
|
build-macos:
|
||||||
name: build
|
name: build
|
||||||
runs-on: macos-12
|
runs-on: macos-13
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -98,6 +98,7 @@ jobs:
|
|||||||
--with-jtreg=${{ steps.jtreg.outputs.path }}
|
--with-jtreg=${{ steps.jtreg.outputs.path }}
|
||||||
--enable-jtreg-failure-handler
|
--enable-jtreg-failure-handler
|
||||||
--with-zlib=system
|
--with-zlib=system
|
||||||
|
--disable-warnings-as-errors
|
||||||
${{ inputs.extra-conf-options }} ${{ inputs.configure-arguments }} || (
|
${{ inputs.extra-conf-options }} ${{ inputs.configure-arguments }} || (
|
||||||
echo "Dumping config.log:" &&
|
echo "Dumping config.log:" &&
|
||||||
cat config.log &&
|
cat config.log &&
|
||||||
|
|||||||
6
.github/workflows/main.yml
vendored
6
.github/workflows/main.yml
vendored
@@ -223,7 +223,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-macos.yml
|
uses: ./.github/workflows/build-macos.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-x64
|
platform: macos-x64
|
||||||
xcode-toolset-version: '13.4.1'
|
xcode-toolset-version: '14.3.1'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
if: needs.select.outputs.macos-x64 == 'true'
|
if: needs.select.outputs.macos-x64 == 'true'
|
||||||
@@ -234,7 +234,7 @@ jobs:
|
|||||||
uses: ./.github/workflows/build-macos.yml
|
uses: ./.github/workflows/build-macos.yml
|
||||||
with:
|
with:
|
||||||
platform: macos-aarch64
|
platform: macos-aarch64
|
||||||
xcode-toolset-version: '13.4.1'
|
xcode-toolset-version: '14.3.1'
|
||||||
extra-conf-options: '--openjdk-target=aarch64-apple-darwin'
|
extra-conf-options: '--openjdk-target=aarch64-apple-darwin'
|
||||||
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
configure-arguments: ${{ github.event.inputs.configure-arguments }}
|
||||||
make-arguments: ${{ github.event.inputs.make-arguments }}
|
make-arguments: ${{ github.event.inputs.make-arguments }}
|
||||||
@@ -298,7 +298,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
platform: macos-x64
|
platform: macos-x64
|
||||||
bootjdk-platform: macos-x64
|
bootjdk-platform: macos-x64
|
||||||
runs-on: macos-12
|
runs-on: macos-13
|
||||||
|
|
||||||
test-windows-x64:
|
test-windows-x64:
|
||||||
name: windows-x64
|
name: windows-x64
|
||||||
|
|||||||
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@@ -127,7 +127,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
# On macOS we need to install some dependencies for testing
|
# On macOS we need to install some dependencies for testing
|
||||||
brew install make
|
brew install make
|
||||||
sudo xcode-select --switch /Applications/Xcode_13.4.1.app/Contents/Developer
|
sudo xcode-select --switch /Applications/Xcode_14.3.1.app/Contents/Developer
|
||||||
# This will make GNU make available as 'make' and not only as 'gmake'
|
# This will make GNU make available as 'make' and not only as 'gmake'
|
||||||
echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
|
echo '/usr/local/opt/make/libexec/gnubin' >> $GITHUB_PATH
|
||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS'
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[general]
|
[general]
|
||||||
project=jdk-updates
|
project=jdk-updates
|
||||||
jbs=JDK
|
jbs=JDK
|
||||||
version=11.0.26
|
version=11.0.28
|
||||||
|
|
||||||
[checks]
|
[checks]
|
||||||
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists
|
error=author,committer,reviewers,merge,issues,executable,symlink,message,hg-tag,whitespace,problemlists
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
# Welcome to the JDK!
|
# Welcome to OpenJDK 11 Updates!
|
||||||
|
|
||||||
|
The JDK 11 Updates project uses two GitHub repositories.
|
||||||
|
Updates are continuously developed in the repository [jdk11u-dev](https://github.com/openjdk/jdk11u-dev). This is the repository usually targeted by contributors.
|
||||||
|
The [jdk11u](https://github.com/openjdk/jdk11u) repository is used for rampdown of the update releases of jdk11u and only accepts critical changes that must make the next release during rampdown. (You probably do not want to target jdk11u).
|
||||||
|
|
||||||
|
For more OpenJDK 11 updates specific information such as timelines and contribution guidelines see the [project wiki page](https://wiki.openjdk.org/display/JDKUpdates/JDK11u).
|
||||||
|
|
||||||
|
|
||||||
For build instructions please see the
|
For build instructions please see the
|
||||||
[online documentation](https://openjdk.java.net/groups/build/doc/building.html),
|
[online documentation](https://openjdk.java.net/groups/build/doc/building.html),
|
||||||
|
|||||||
@@ -175,26 +175,26 @@
|
|||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="header">
|
<tr class="header">
|
||||||
<th style="text-align: left;">Operating system</th>
|
<th>Operating system</th>
|
||||||
<th style="text-align: left;">Vendor/version used</th>
|
<th>Vendor/version used</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">Linux</td>
|
<td>Linux</td>
|
||||||
<td style="text-align: left;">Oracle Enterprise Linux 6.4 / 7.1 (using kernel 3.8.13)</td>
|
<td>Oracle Enterprise Linux 6.4 / 7.1 (using kernel 3.8.13)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">Solaris</td>
|
<td>Solaris</td>
|
||||||
<td style="text-align: left;">Solaris 11.1 SRU 21.4.1 / 11.2 SRU 5.5</td>
|
<td>Solaris 11.1 SRU 21.4.1 / 11.2 SRU 5.5</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">macOS</td>
|
<td>macOS</td>
|
||||||
<td style="text-align: left;">Mac OS X 10.9 (Mavericks) / 10.10 (Yosemite)</td>
|
<td>Mac OS X 10.9 (Mavericks) / 10.10 (Yosemite)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">Windows</td>
|
<td>Windows</td>
|
||||||
<td style="text-align: left;">Windows Server 2012 R2</td>
|
<td>Windows Server 2012 R2</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -296,7 +296,6 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<p>All compilers are expected to be able to compile to the C99 language standard, as some C99 features are used in the source code. Microsoft Visual Studio doesn't fully support C99 so in practice shared code is limited to using C99 features that it does support.</p>
|
|
||||||
<h3 id="gcc">gcc</h3>
|
<h3 id="gcc">gcc</h3>
|
||||||
<p>The minimum accepted version of gcc is 4.8. Older versions will generate a warning by <code>configure</code> and are unlikely to work.</p>
|
<p>The minimum accepted version of gcc is 4.8. Older versions will generate a warning by <code>configure</code> and are unlikely to work.</p>
|
||||||
<p>The JDK is currently known to be able to compile with at least version 7.4 of gcc.</p>
|
<p>The JDK is currently known to be able to compile with at least version 7.4 of gcc.</p>
|
||||||
@@ -320,50 +319,50 @@
|
|||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="header">
|
<tr class="header">
|
||||||
<th style="text-align: left;">Package</th>
|
<th>Package</th>
|
||||||
<th style="text-align: left;">Version</th>
|
<th>Version</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/backend</td>
|
<td>developer/solarisstudio-124/backend</td>
|
||||||
<td style="text-align: left;">12.4-1.0.6.0</td>
|
<td>12.4-1.0.6.0</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/c++</td>
|
<td>developer/solarisstudio-124/c++</td>
|
||||||
<td style="text-align: left;">12.4-1.0.10.0</td>
|
<td>12.4-1.0.10.0</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/cc</td>
|
<td>developer/solarisstudio-124/cc</td>
|
||||||
<td style="text-align: left;">12.4-1.0.4.0</td>
|
<td>12.4-1.0.4.0</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/library/c++-libs</td>
|
<td>developer/solarisstudio-124/library/c++-libs</td>
|
||||||
<td style="text-align: left;">12.4-1.0.10.0</td>
|
<td>12.4-1.0.10.0</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/library/math-libs</td>
|
<td>developer/solarisstudio-124/library/math-libs</td>
|
||||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
<td>12.4-1.0.0.1</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/library/studio-gccrt</td>
|
<td>developer/solarisstudio-124/library/studio-gccrt</td>
|
||||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
<td>12.4-1.0.0.1</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/studio-common</td>
|
<td>developer/solarisstudio-124/studio-common</td>
|
||||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
<td>12.4-1.0.0.1</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/studio-ja</td>
|
<td>developer/solarisstudio-124/studio-ja</td>
|
||||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
<td>12.4-1.0.0.1</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/studio-legal</td>
|
<td>developer/solarisstudio-124/studio-legal</td>
|
||||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
<td>12.4-1.0.0.1</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">developer/solarisstudio-124/studio-zhCN</td>
|
<td>developer/solarisstudio-124/studio-zhCN</td>
|
||||||
<td style="text-align: left;">12.4-1.0.0.1</td>
|
<td>12.4-1.0.0.1</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -747,103 +746,103 @@ ls build/linux-aarch64-normal-server-release/</code></pre></li>
|
|||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="header">
|
<tr class="header">
|
||||||
<th style="text-align: left;">Target</th>
|
<th>Target</th>
|
||||||
<th style="text-align: left;">Debian tree</th>
|
<th>Debian tree</th>
|
||||||
<th style="text-align: left;">Debian arch</th>
|
<th>Debian arch</th>
|
||||||
<th style="text-align: left;"><code>--openjdk-target=...</code></th>
|
<th><code>--openjdk-target=...</code></th>
|
||||||
<th><code>--with-jvm-variants=...</code></th>
|
<th><code>--with-jvm-variants=...</code></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">x86</td>
|
<td>x86</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">i386</td>
|
<td>i386</td>
|
||||||
<td style="text-align: left;">i386-linux-gnu</td>
|
<td>i386-linux-gnu</td>
|
||||||
<td>(all)</td>
|
<td>(all)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">arm</td>
|
<td>arm</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">armhf</td>
|
<td>armhf</td>
|
||||||
<td style="text-align: left;">arm-linux-gnueabihf</td>
|
<td>arm-linux-gnueabihf</td>
|
||||||
<td>(all)</td>
|
<td>(all)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">aarch64</td>
|
<td>aarch64</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">arm64</td>
|
<td>arm64</td>
|
||||||
<td style="text-align: left;">aarch64-linux-gnu</td>
|
<td>aarch64-linux-gnu</td>
|
||||||
<td>(all)</td>
|
<td>(all)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">ppc64le</td>
|
<td>ppc64le</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">ppc64el</td>
|
<td>ppc64el</td>
|
||||||
<td style="text-align: left;">powerpc64le-linux-gnu</td>
|
<td>powerpc64le-linux-gnu</td>
|
||||||
<td>(all)</td>
|
<td>(all)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">s390x</td>
|
<td>s390x</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">s390x</td>
|
<td>s390x</td>
|
||||||
<td style="text-align: left;">s390x-linux-gnu</td>
|
<td>s390x-linux-gnu</td>
|
||||||
<td>(all)</td>
|
<td>(all)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">mipsle</td>
|
<td>mipsle</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">mipsel</td>
|
<td>mipsel</td>
|
||||||
<td style="text-align: left;">mipsel-linux-gnu</td>
|
<td>mipsel-linux-gnu</td>
|
||||||
<td>zero</td>
|
<td>zero</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">mips64le</td>
|
<td>mips64le</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">mips64el</td>
|
<td>mips64el</td>
|
||||||
<td style="text-align: left;">mips64el-linux-gnueabi64</td>
|
<td>mips64el-linux-gnueabi64</td>
|
||||||
<td>zero</td>
|
<td>zero</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">armel</td>
|
<td>armel</td>
|
||||||
<td style="text-align: left;">buster</td>
|
<td>buster</td>
|
||||||
<td style="text-align: left;">arm</td>
|
<td>arm</td>
|
||||||
<td style="text-align: left;">arm-linux-gnueabi</td>
|
<td>arm-linux-gnueabi</td>
|
||||||
<td>zero</td>
|
<td>zero</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">ppc</td>
|
<td>ppc</td>
|
||||||
<td style="text-align: left;">sid</td>
|
<td>sid</td>
|
||||||
<td style="text-align: left;">powerpc</td>
|
<td>powerpc</td>
|
||||||
<td style="text-align: left;">powerpc-linux-gnu</td>
|
<td>powerpc-linux-gnu</td>
|
||||||
<td>zero</td>
|
<td>zero</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">ppc64be</td>
|
<td>ppc64be</td>
|
||||||
<td style="text-align: left;">sid</td>
|
<td>sid</td>
|
||||||
<td style="text-align: left;">ppc64</td>
|
<td>ppc64</td>
|
||||||
<td style="text-align: left;">powerpc64-linux-gnu</td>
|
<td>powerpc64-linux-gnu</td>
|
||||||
<td>(all)</td>
|
<td>(all)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">m68k</td>
|
<td>m68k</td>
|
||||||
<td style="text-align: left;">sid</td>
|
<td>sid</td>
|
||||||
<td style="text-align: left;">m68k</td>
|
<td>m68k</td>
|
||||||
<td style="text-align: left;">m68k-linux-gnu</td>
|
<td>m68k-linux-gnu</td>
|
||||||
<td>zero</td>
|
<td>zero</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="even">
|
<tr class="even">
|
||||||
<td style="text-align: left;">alpha</td>
|
<td>alpha</td>
|
||||||
<td style="text-align: left;">sid</td>
|
<td>sid</td>
|
||||||
<td style="text-align: left;">alpha</td>
|
<td>alpha</td>
|
||||||
<td style="text-align: left;">alpha-linux-gnu</td>
|
<td>alpha-linux-gnu</td>
|
||||||
<td>zero</td>
|
<td>zero</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="odd">
|
<tr class="odd">
|
||||||
<td style="text-align: left;">sh4</td>
|
<td>sh4</td>
|
||||||
<td style="text-align: left;">sid</td>
|
<td>sid</td>
|
||||||
<td style="text-align: left;">sh4</td>
|
<td>sh4</td>
|
||||||
<td style="text-align: left;">sh4-linux-gnu</td>
|
<td>sh4-linux-gnu</td>
|
||||||
<td>zero</td>
|
<td>zero</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -151,12 +151,12 @@ This table lists the OS versions used by Oracle when building the JDK. Such
|
|||||||
information is always subject to change, but this table is up to date at the
|
information is always subject to change, but this table is up to date at the
|
||||||
time of writing.
|
time of writing.
|
||||||
|
|
||||||
Operating system Vendor/version used
|
| Operating system | Vendor/version used |
|
||||||
----------------- -------------------------------------------------------
|
| ----------------- | ------------------------------------------------------- |
|
||||||
Linux Oracle Enterprise Linux 6.4 / 7.1 (using kernel 3.8.13)
|
| Linux | Oracle Enterprise Linux 6.4 / 7.1 (using kernel 3.8.13) |
|
||||||
Solaris Solaris 11.1 SRU 21.4.1 / 11.2 SRU 5.5
|
| Solaris | Solaris 11.1 SRU 21.4.1 / 11.2 SRU 5.5 |
|
||||||
macOS Mac OS X 10.9 (Mavericks) / 10.10 (Yosemite)
|
| macOS | Mac OS X 10.9 (Mavericks) / 10.10 (Yosemite) |
|
||||||
Windows Windows Server 2012 R2
|
| Windows | Windows Server 2012 R2 |
|
||||||
|
|
||||||
The double version numbers for Linux, Solaris and macOS is due to the hybrid
|
The double version numbers for Linux, Solaris and macOS is due to the hybrid
|
||||||
model used at Oracle, where header files and external libraries from an older
|
model used at Oracle, where header files and external libraries from an older
|
||||||
@@ -363,18 +363,18 @@ configure.
|
|||||||
|
|
||||||
The Solaris Studio installation should contain at least these packages:
|
The Solaris Studio installation should contain at least these packages:
|
||||||
|
|
||||||
Package Version
|
| Package | Version |
|
||||||
-------------------------------------------------- -------------
|
| -------------------------------------------------- | ------------- |
|
||||||
developer/solarisstudio-124/backend 12.4-1.0.6.0
|
| developer/solarisstudio-124/backend | 12.4-1.0.6.0 |
|
||||||
developer/solarisstudio-124/c++ 12.4-1.0.10.0
|
| developer/solarisstudio-124/c++ | 12.4-1.0.10.0 |
|
||||||
developer/solarisstudio-124/cc 12.4-1.0.4.0
|
| developer/solarisstudio-124/cc | 12.4-1.0.4.0 |
|
||||||
developer/solarisstudio-124/library/c++-libs 12.4-1.0.10.0
|
| developer/solarisstudio-124/library/c++-libs | 12.4-1.0.10.0 |
|
||||||
developer/solarisstudio-124/library/math-libs 12.4-1.0.0.1
|
| developer/solarisstudio-124/library/math-libs | 12.4-1.0.0.1 |
|
||||||
developer/solarisstudio-124/library/studio-gccrt 12.4-1.0.0.1
|
| developer/solarisstudio-124/library/studio-gccrt | 12.4-1.0.0.1 |
|
||||||
developer/solarisstudio-124/studio-common 12.4-1.0.0.1
|
| developer/solarisstudio-124/studio-common | 12.4-1.0.0.1 |
|
||||||
developer/solarisstudio-124/studio-ja 12.4-1.0.0.1
|
| developer/solarisstudio-124/studio-ja | 12.4-1.0.0.1 |
|
||||||
developer/solarisstudio-124/studio-legal 12.4-1.0.0.1
|
| developer/solarisstudio-124/studio-legal | 12.4-1.0.0.1 |
|
||||||
developer/solarisstudio-124/studio-zhCN 12.4-1.0.0.1
|
| developer/solarisstudio-124/studio-zhCN | 12.4-1.0.0.1 |
|
||||||
|
|
||||||
Compiling with Solaris Studio can sometimes be finicky. This is the exact
|
Compiling with Solaris Studio can sometimes be finicky. This is the exact
|
||||||
version used by Oracle, which worked correctly at the time of writing:
|
version used by Oracle, which worked correctly at the time of writing:
|
||||||
@@ -965,14 +965,14 @@ https://sourceware.org/autobook/autobook/autobook_17.html). If no
|
|||||||
targets are given, a native toolchain for the current platform will be
|
targets are given, a native toolchain for the current platform will be
|
||||||
created. Currently, at least the following targets are known to work:
|
created. Currently, at least the following targets are known to work:
|
||||||
|
|
||||||
Supported devkit targets
|
| Supported devkit targets |
|
||||||
------------------------
|
| ------------------------ |
|
||||||
x86_64-linux-gnu
|
| x86_64-linux-gnu |
|
||||||
aarch64-linux-gnu
|
| aarch64-linux-gnu |
|
||||||
arm-linux-gnueabihf
|
| arm-linux-gnueabihf |
|
||||||
ppc64-linux-gnu
|
| ppc64-linux-gnu |
|
||||||
ppc64le-linux-gnu
|
| ppc64le-linux-gnu |
|
||||||
s390x-linux-gnu
|
| s390x-linux-gnu |
|
||||||
|
|
||||||
`BASE_OS` must be one of "OEL6" for Oracle Enterprise Linux 6 or
|
`BASE_OS` must be one of "OEL6" for Oracle Enterprise Linux 6 or
|
||||||
"Fedora" (if not specified "OEL6" will be the default). If the base OS
|
"Fedora" (if not specified "OEL6" will be the default). If the base OS
|
||||||
@@ -1199,21 +1199,21 @@ it might require a little nudge with:
|
|||||||
|
|
||||||
Architectures that are known to successfully cross-compile like this are:
|
Architectures that are known to successfully cross-compile like this are:
|
||||||
|
|
||||||
Target Debian tree Debian arch `--openjdk-target=...` `--with-jvm-variants=...`
|
| Target | Debian tree | Debian arch | `--openjdk-target=...` | `--with-jvm-variants=...` |
|
||||||
------------ ------------ ------------- ------------------------ --------------
|
| ------------ | ------------ | ------------- | ------------------------ | ------------------------- |
|
||||||
x86 buster i386 i386-linux-gnu (all)
|
| x86 | buster | i386 | i386-linux-gnu | (all) |
|
||||||
arm buster armhf arm-linux-gnueabihf (all)
|
| arm | buster | armhf | arm-linux-gnueabihf | (all) |
|
||||||
aarch64 buster arm64 aarch64-linux-gnu (all)
|
| aarch64 | buster | arm64 | aarch64-linux-gnu | (all) |
|
||||||
ppc64le buster ppc64el powerpc64le-linux-gnu (all)
|
| ppc64le | buster | ppc64el | powerpc64le-linux-gnu | (all) |
|
||||||
s390x buster s390x s390x-linux-gnu (all)
|
| s390x | buster | s390x | s390x-linux-gnu | (all) |
|
||||||
mipsle buster mipsel mipsel-linux-gnu zero
|
| mipsle | buster | mipsel | mipsel-linux-gnu | zero |
|
||||||
mips64le buster mips64el mips64el-linux-gnueabi64 zero
|
| mips64le | buster | mips64el | mips64el-linux-gnueabi64 | zero |
|
||||||
armel buster arm arm-linux-gnueabi zero
|
| armel | buster | arm | arm-linux-gnueabi | zero |
|
||||||
ppc sid powerpc powerpc-linux-gnu zero
|
| ppc | sid | powerpc | powerpc-linux-gnu | zero |
|
||||||
ppc64be sid ppc64 powerpc64-linux-gnu (all)
|
| ppc64be | sid | ppc64 | powerpc64-linux-gnu | (all) |
|
||||||
m68k sid m68k m68k-linux-gnu zero
|
| m68k | sid | m68k | m68k-linux-gnu | zero |
|
||||||
alpha sid alpha alpha-linux-gnu zero
|
| alpha | sid | alpha | alpha-linux-gnu | zero |
|
||||||
sh4 sid sh4 sh4-linux-gnu zero
|
| sh4 | sid | sh4 | sh4-linux-gnu | zero |
|
||||||
|
|
||||||
### Building for ARM/aarch64
|
### Building for ARM/aarch64
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
#
|
#
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
# This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -28,16 +28,16 @@
|
|||||||
|
|
||||||
DEFAULT_VERSION_FEATURE=11
|
DEFAULT_VERSION_FEATURE=11
|
||||||
DEFAULT_VERSION_INTERIM=0
|
DEFAULT_VERSION_INTERIM=0
|
||||||
DEFAULT_VERSION_UPDATE=26
|
DEFAULT_VERSION_UPDATE=28
|
||||||
DEFAULT_VERSION_PATCH=0
|
DEFAULT_VERSION_PATCH=0
|
||||||
DEFAULT_VERSION_EXTRA1=0
|
DEFAULT_VERSION_EXTRA1=0
|
||||||
DEFAULT_VERSION_EXTRA2=0
|
DEFAULT_VERSION_EXTRA2=0
|
||||||
DEFAULT_VERSION_EXTRA3=0
|
DEFAULT_VERSION_EXTRA3=0
|
||||||
DEFAULT_VERSION_DATE=2025-01-21
|
DEFAULT_VERSION_DATE=2025-07-15
|
||||||
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
DEFAULT_VERSION_CLASSFILE_MAJOR=55 # "`$EXPR $DEFAULT_VERSION_FEATURE + 44`"
|
||||||
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
DEFAULT_VERSION_CLASSFILE_MINOR=0
|
||||||
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
DEFAULT_ACCEPTABLE_BOOT_VERSIONS="10 11"
|
||||||
DEFAULT_PROMOTED_VERSION_PRE=ea
|
DEFAULT_PROMOTED_VERSION_PRE=
|
||||||
|
|
||||||
LAUNCHER_NAME=openjdk
|
LAUNCHER_NAME=openjdk
|
||||||
PRODUCT_NAME=OpenJDK
|
PRODUCT_NAME=OpenJDK
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ ifeq ($(HAS_FILE_FUNCTION), true)
|
|||||||
else
|
else
|
||||||
# Use printf to get consistent behavior on all platforms.
|
# Use printf to get consistent behavior on all platforms.
|
||||||
WriteFile = \
|
WriteFile = \
|
||||||
$(shell $(PRINTF) "%s" $(call ShellQuote, $1) > $2)
|
$(shell $(PRINTF) "%s\n" $(strip $(call ShellQuote, $1)) > $2)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Param 1 - Text to write
|
# Param 1 - Text to write
|
||||||
@@ -268,5 +268,5 @@ ifeq ($(HAS_FILE_FUNCTION), true)
|
|||||||
else
|
else
|
||||||
# Use printf to get consistent behavior on all platforms.
|
# Use printf to get consistent behavior on all platforms.
|
||||||
AppendFile = \
|
AppendFile = \
|
||||||
$(shell $(PRINTF) "%s" $(call ShellQuote, $1) >> $2)
|
$(shell $(PRINTF) "%s\n" $(strip $(call ShellQuote, $1)) >> $2)
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -29,13 +29,13 @@ GTEST_VERSION=1.8.1
|
|||||||
JTREG_VERSION=7.3.1+1
|
JTREG_VERSION=7.3.1+1
|
||||||
|
|
||||||
LINUX_X64_BOOT_JDK_EXT=tar.gz
|
LINUX_X64_BOOT_JDK_EXT=tar.gz
|
||||||
LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.23_9.tar.gz
|
LINUX_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_x64_linux_hotspot_11.0.26_4.tar.gz
|
||||||
LINUX_X64_BOOT_JDK_SHA256=23e47ea7a3015be3240f21185fd902adebdcf76530757c9b482c7eb5bd3417c2
|
LINUX_X64_BOOT_JDK_SHA256=7def4c5807b38ef1a7bb30a86572a795ca604127cc8d1f5b370abf23618104e6
|
||||||
|
|
||||||
WINDOWS_X64_BOOT_JDK_EXT=zip
|
|
||||||
WINDOWS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_windows_hotspot_11.0.23_9.zip
|
|
||||||
WINDOWS_X64_BOOT_JDK_SHA256=d7a9f8ceee9a5785dcbbcbec20a07b1366efec59ba652ef7e03f6f7d10f52b85
|
|
||||||
|
|
||||||
MACOS_X64_BOOT_JDK_EXT=tar.gz
|
MACOS_X64_BOOT_JDK_EXT=tar.gz
|
||||||
MACOS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.23%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.23_9.tar.gz
|
MACOS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_x64_mac_hotspot_11.0.26_4.tar.gz
|
||||||
MACOS_X64_BOOT_JDK_SHA256=4dbd21d9a0311d321f5886eda50c3086026ed61d02e1a85f7b8c2e9ad557bf03
|
MACOS_X64_BOOT_JDK_SHA256=b0142c2c85da43bb3565321164e8129b1166de5d6a43c88e567a92c39128c003
|
||||||
|
|
||||||
|
WINDOWS_X64_BOOT_JDK_EXT=zip
|
||||||
|
WINDOWS_X64_BOOT_JDK_URL=https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.26%2B4/OpenJDK11U-jdk_x64_windows_hotspot_11.0.26_4.zip
|
||||||
|
WINDOWS_X64_BOOT_JDK_SHA256=a221ae370f609f00e5869c385f4853fecb622a99f8637b95c22ec66c04e15051
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
Owner: CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE
|
|
||||||
Issuer: CN=Baltimore CyberTrust Root, OU=CyberTrust, O=Baltimore, C=IE
|
|
||||||
Serial number: 20000b9
|
|
||||||
Valid from: Fri May 12 18:46:00 GMT 2000 until: Mon May 12 23:59:00 GMT 2025
|
|
||||||
Signature algorithm name: SHA1withRSA
|
|
||||||
Subject Public Key Algorithm: 2048-bit RSA key
|
|
||||||
Version: 3
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
|
|
||||||
RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
|
|
||||||
VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
|
|
||||||
DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
|
|
||||||
ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
|
|
||||||
VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
|
|
||||||
mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
|
|
||||||
IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
|
|
||||||
mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
|
|
||||||
XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
|
|
||||||
dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
|
|
||||||
jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
|
|
||||||
BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
|
|
||||||
DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
|
|
||||||
9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
|
|
||||||
jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
|
|
||||||
Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
|
|
||||||
ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
|
|
||||||
R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
Owner: CN=Chambers of Commerce Root, OU=http://www.chambersign.org, O=AC Camerfirma SA CIF A82743287, C=EU
|
|
||||||
Issuer: CN=Chambers of Commerce Root, OU=http://www.chambersign.org, O=AC Camerfirma SA CIF A82743287, C=EU
|
|
||||||
Serial number: 0
|
|
||||||
Valid from: Tue Sep 30 16:13:43 GMT 2003 until: Wed Sep 30 16:13:44 GMT 2037
|
|
||||||
Signature algorithm name: SHA1withRSA
|
|
||||||
Subject Public Key Algorithm: 2048-bit RSA key
|
|
||||||
Version: 3
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn
|
|
||||||
MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL
|
|
||||||
ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg
|
|
||||||
b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa
|
|
||||||
MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB
|
|
||||||
ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw
|
|
||||||
IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B
|
|
||||||
AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb
|
|
||||||
unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d
|
|
||||||
BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq
|
|
||||||
7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3
|
|
||||||
0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX
|
|
||||||
roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG
|
|
||||||
A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j
|
|
||||||
aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p
|
|
||||||
26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA
|
|
||||||
BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud
|
|
||||||
EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN
|
|
||||||
BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
|
||||||
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB
|
|
||||||
AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd
|
|
||||||
p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi
|
|
||||||
1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc
|
|
||||||
XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0
|
|
||||||
eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu
|
|
||||||
tGWaIZDgqtCYvDi1czyL+Nw=
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
Owner: CN=Global Chambersign Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU
|
|
||||||
Issuer: CN=Global Chambersign Root - 2008, O=AC Camerfirma S.A., SERIALNUMBER=A82743287, L=Madrid (see current address at www.camerfirma.com/address), C=EU
|
|
||||||
Serial number: c9cdd3e9d57d23ce
|
|
||||||
Valid from: Fri Aug 01 12:31:40 GMT 2008 until: Sat Jul 31 12:31:40 GMT 2038
|
|
||||||
Signature algorithm name: SHA1withRSA
|
|
||||||
Subject Public Key Algorithm: 4096-bit RSA key
|
|
||||||
Version: 3
|
|
||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD
|
|
||||||
VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0
|
|
||||||
IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3
|
|
||||||
MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
|
||||||
aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx
|
|
||||||
MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy
|
|
||||||
cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG
|
|
||||||
A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl
|
|
||||||
BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI
|
|
||||||
hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed
|
|
||||||
KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7
|
|
||||||
G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2
|
|
||||||
zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4
|
|
||||||
ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG
|
|
||||||
HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2
|
|
||||||
Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V
|
|
||||||
yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e
|
|
||||||
beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r
|
|
||||||
6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
|
||||||
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog
|
|
||||||
zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW
|
|
||||||
BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr
|
|
||||||
ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp
|
|
||||||
ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk
|
|
||||||
cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt
|
|
||||||
YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC
|
|
||||||
CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow
|
|
||||||
KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI
|
|
||||||
hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ
|
|
||||||
UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz
|
|
||||||
X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x
|
|
||||||
fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz
|
|
||||||
a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd
|
|
||||||
Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd
|
|
||||||
SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O
|
|
||||||
AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso
|
|
||||||
M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge
|
|
||||||
v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
|
||||||
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
File-Date: 2024-06-14
|
File-Date: 2024-11-19
|
||||||
%%
|
%%
|
||||||
Type: language
|
Type: language
|
||||||
Subtag: aa
|
Subtag: aa
|
||||||
@@ -47991,6 +47991,16 @@ Added: 2008-10-14
|
|||||||
Prefix: kw
|
Prefix: kw
|
||||||
%%
|
%%
|
||||||
Type: variant
|
Type: variant
|
||||||
|
Subtag: kleinsch
|
||||||
|
Description: Kleinschmidt orthography
|
||||||
|
Description: Allattaasitaamut
|
||||||
|
Added: 2024-07-20
|
||||||
|
Prefix: kl
|
||||||
|
Prefix: kl-tunumiit
|
||||||
|
Comments: Orthography for Greenlandic designed by Samuel Kleinschmidt,
|
||||||
|
used from 1851 to 1973.
|
||||||
|
%%
|
||||||
|
Type: variant
|
||||||
Subtag: kociewie
|
Subtag: kociewie
|
||||||
Description: The Kociewie dialect of Polish
|
Description: The Kociewie dialect of Polish
|
||||||
Added: 2014-11-27
|
Added: 2014-11-27
|
||||||
|
|||||||
@@ -21,4 +21,4 @@
|
|||||||
# or visit www.oracle.com if you need additional information or have any
|
# or visit www.oracle.com if you need additional information or have any
|
||||||
# questions.
|
# questions.
|
||||||
#
|
#
|
||||||
tzdata2024b
|
tzdata2025b
|
||||||
|
|||||||
@@ -197,6 +197,8 @@ Zone Antarctica/Mawson 0 - -00 1954 Feb 13
|
|||||||
|
|
||||||
# France & Italy - year-round base
|
# France & Italy - year-round base
|
||||||
# Concordia, -750600+1232000, since 2005
|
# Concordia, -750600+1232000, since 2005
|
||||||
|
# https://en.wikipedia.org/wiki/Concordia_Station
|
||||||
|
# Can use Asia/Singapore, which it has agreed with since inception.
|
||||||
|
|
||||||
# Germany - year-round base
|
# Germany - year-round base
|
||||||
# Neumayer III, -704080-0081602, since 2009
|
# Neumayer III, -704080-0081602, since 2009
|
||||||
|
|||||||
@@ -1523,6 +1523,16 @@ Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
|
|||||||
# (UIT No. 143 17.XI.1977) and not 23 September (UIT No. 141 13.IX.1977).
|
# (UIT No. 143 17.XI.1977) and not 23 September (UIT No. 141 13.IX.1977).
|
||||||
# UIT is the Operational Bulletin of International Telecommunication Union.
|
# UIT is the Operational Bulletin of International Telecommunication Union.
|
||||||
|
|
||||||
|
# From Roozbeh Pournader (2025-03-18):
|
||||||
|
# ... the exact time of Iran's transition from +0400 to +0330 ... was Friday
|
||||||
|
# 1357/8/19 AP=1978-11-10. Here's a newspaper clip from the Ettela'at
|
||||||
|
# newspaper, dated 1357/8/14 AP=1978-11-05, translated from Persian
|
||||||
|
# (at https://w.wiki/DUEY):
|
||||||
|
# Following the government's decision about returning the official time
|
||||||
|
# to the previous status, the spokesperson for the Ministry of Energy
|
||||||
|
# announced today: At the hour 24 of Friday 19th of Aban (=1978-11-10),
|
||||||
|
# the country's time will be pulled back half an hour.
|
||||||
|
#
|
||||||
# From Roozbeh Pournader (2003-03-15):
|
# From Roozbeh Pournader (2003-03-15):
|
||||||
# This is an English translation of what I just found (originally in Persian).
|
# This is an English translation of what I just found (originally in Persian).
|
||||||
# The Gregorian dates in brackets are mine:
|
# The Gregorian dates in brackets are mine:
|
||||||
@@ -1650,7 +1660,7 @@ Rule Iran 2021 2022 - Sep 21 24:00 0 -
|
|||||||
Zone Asia/Tehran 3:25:44 - LMT 1916
|
Zone Asia/Tehran 3:25:44 - LMT 1916
|
||||||
3:25:44 - TMT 1935 Jun 13 # Tehran Mean Time
|
3:25:44 - TMT 1935 Jun 13 # Tehran Mean Time
|
||||||
3:30 Iran %z 1977 Oct 20 24:00
|
3:30 Iran %z 1977 Oct 20 24:00
|
||||||
4:00 Iran %z 1979
|
4:00 Iran %z 1978 Nov 10 24:00
|
||||||
3:30 Iran %z
|
3:30 Iran %z
|
||||||
|
|
||||||
|
|
||||||
@@ -3688,21 +3698,70 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
|
|||||||
# be immediately followed by 1845-01-01; see R.H. van Gent's
|
# be immediately followed by 1845-01-01; see R.H. van Gent's
|
||||||
# History of the International Date Line
|
# History of the International Date Line
|
||||||
# https://webspace.science.uu.nl/~gent0113/idl/idl_philippines.htm
|
# https://webspace.science.uu.nl/~gent0113/idl/idl_philippines.htm
|
||||||
# The rest of the data entries are from Shanks & Pottenger.
|
|
||||||
|
|
||||||
# From Jesper Nørgaard Welen (2006-04-26):
|
# From P Chan (2021-05-10):
|
||||||
# ... claims that Philippines had DST last time in 1990:
|
# Here's a fairly comprehensive article in Japanese:
|
||||||
# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
|
# https://wiki.suikawiki.org/n/Philippine%20Time
|
||||||
# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
|
# (2021-05-16):
|
||||||
# but no details]
|
# According to the references listed in the article,
|
||||||
|
# the periods that the Philippines (Manila) observed DST or used +9 are:
|
||||||
# From Paul Eggert (2014-08-14):
|
#
|
||||||
# The following source says DST may be instituted November-January and again
|
# 1936-10-31 24:00 to 1937-01-15 24:00
|
||||||
# March-June, but this is not definite. It also says DST was last proclaimed
|
# (Proclamation No. 104, Proclamation No. 126)
|
||||||
# during the Ramos administration (1992-1998); but again, no details.
|
# 1941-12-15 24:00 to 1945-11-30 24:00
|
||||||
# Carcamo D. PNoy urged to declare use of daylight saving time.
|
# (Proclamation No. 789, Proclamation No. 20)
|
||||||
# Philippine Star 2014-08-05
|
# 1954-04-11 24:00 to 1954-06-04 24:00
|
||||||
# http://www.philstar.com/headlines/2014/08/05/1354152/pnoy-urged-declare-use-daylight-saving-time
|
# (Proclamation No. 13, Proclamation No. 33)
|
||||||
|
# 1977-03-27 24:00 to 1977-09-21 24:00
|
||||||
|
# (Proclamation No. 1629, Proclamation No. 1641)
|
||||||
|
# 1990-05-21 00:00 to 1990-07-28 24:00
|
||||||
|
# (National Emergency Memorandum Order No. 17, Executive Order No. 415)
|
||||||
|
#
|
||||||
|
# Proclamation No. 104 ... October 30, 1936
|
||||||
|
# https://www.officialgazette.gov.ph/1936/10/30/proclamation-no-104-s-1936/
|
||||||
|
# Proclamation No. 126 ... January 15, 1937
|
||||||
|
# https://www.officialgazette.gov.ph/1937/01/15/proclamation-no-126-s-1937/
|
||||||
|
# Proclamation No. 789 ... December 13, 1941
|
||||||
|
# https://www.officialgazette.gov.ph/1941/12/13/proclamation-no-789-s-1941/
|
||||||
|
# Proclamation No. 20 ... November 11, 1945
|
||||||
|
# https://www.officialgazette.gov.ph/1945/11/11/proclamation-no-20-s-1945/
|
||||||
|
# Proclamation No. 13 ... April 6, 1954
|
||||||
|
# https://www.officialgazette.gov.ph/1954/04/06/proclamation-no-13-s-1954/
|
||||||
|
# Proclamation No. 33 ... June 3, 1954
|
||||||
|
# https://www.officialgazette.gov.ph/1954/06/03/proclamation-no-33-s-1954/
|
||||||
|
# Proclamation No. 1629 ... March 25, 1977
|
||||||
|
# https://www.officialgazette.gov.ph/1977/03/25/proclamation-no-1629-s-1977/
|
||||||
|
# Proclamation No. 1641 ...May 26, 1977
|
||||||
|
# https://www.officialgazette.gov.ph/1977/05/26/proclamation-no-1641-s-1977/
|
||||||
|
# National Emergency Memorandum Order No. 17 ... May 2, 1990
|
||||||
|
# https://www.officialgazette.gov.ph/1990/05/02/national-emergency-memorandum-order-no-17-s-1990/
|
||||||
|
# Executive Order No. 415 ... July 20, 1990
|
||||||
|
# https://www.officialgazette.gov.ph/1990/07/20/executive-order-no-415-s-1990/
|
||||||
|
#
|
||||||
|
# During WWII, Proclamation No. 789 fixed two periods of DST. The first period
|
||||||
|
# was set to continue only until January 31, 1942. But Manila was occupied by
|
||||||
|
# the Japanese earlier in the month....
|
||||||
|
#
|
||||||
|
# For the date of the adoption of standard time, Shank[s] gives 1899-05-11.
|
||||||
|
# The article is not able to state the basis of that. I guess it was based on
|
||||||
|
# a US War Department Circular issued on that date.
|
||||||
|
# https://books.google.com/books?id=JZ1PAAAAYAAJ&pg=RA3-PA8
|
||||||
|
#
|
||||||
|
# However, according to other sources, standard time was adopted on
|
||||||
|
# 1899-09-06. Also, the LMT was GMT+8:03:52
|
||||||
|
# https://books.google.com/books?id=MOYIAQAAIAAJ&pg=PA521
|
||||||
|
# https://books.google.com/books?id=lSnqqatpYikC&pg=PA21
|
||||||
|
#
|
||||||
|
# From Paul Eggert (2024-09-05):
|
||||||
|
# The penultimate URL in P Chan's email refers to page 521 of
|
||||||
|
# Selga M, The Time Service in the Philippines.
|
||||||
|
# Proc Pan-Pacific Science Congress. Vol. 1 (1923), 519-532.
|
||||||
|
# It says, "The change from the meridian 120° 58' 04" to the 120th implied a
|
||||||
|
# change of 3 min. 52s.26 in time; consequently on 6th September, 1899,
|
||||||
|
# Manila Observatory gave the noon signal 3 min. 52s.26 later than before".
|
||||||
|
#
|
||||||
|
# Wikipedia says the US declared Manila liberated on March 4, 1945;
|
||||||
|
# this doesn't affect clocks, just our time zone abbreviation and DST flag.
|
||||||
|
|
||||||
# From Paul Goyette (2018-06-15) with URLs updated by Guy Harris (2024-02-15):
|
# From Paul Goyette (2018-06-15) with URLs updated by Guy Harris (2024-02-15):
|
||||||
# In the Philippines, there is a national law, Republic Act No. 10535
|
# In the Philippines, there is a national law, Republic Act No. 10535
|
||||||
@@ -3720,24 +3779,26 @@ Zone Asia/Hebron 2:20:23 - LMT 1900 Oct
|
|||||||
# influence of the sources. There is no current abbreviation for DST,
|
# influence of the sources. There is no current abbreviation for DST,
|
||||||
# so use "PDT", the usual American style.
|
# so use "PDT", the usual American style.
|
||||||
|
|
||||||
# From P Chan (2021-05-10):
|
|
||||||
# Here's a fairly comprehensive article in Japanese:
|
|
||||||
# https://wiki.suikawiki.org/n/Philippine%20Time
|
|
||||||
# From Paul Eggert (2021-05-10):
|
|
||||||
# The info in the Japanese table has not been absorbed (yet) below.
|
|
||||||
|
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
Rule Phil 1936 only - Nov 1 0:00 1:00 D
|
Rule Phil 1936 only - Oct 31 24:00 1:00 D
|
||||||
Rule Phil 1937 only - Feb 1 0:00 0 S
|
Rule Phil 1937 only - Jan 15 24:00 0 S
|
||||||
Rule Phil 1954 only - Apr 12 0:00 1:00 D
|
Rule Phil 1941 only - Dec 15 24:00 1:00 D
|
||||||
Rule Phil 1954 only - Jul 1 0:00 0 S
|
# The following three rules were canceled by Japan:
|
||||||
Rule Phil 1978 only - Mar 22 0:00 1:00 D
|
#Rule Phil 1942 only - Jan 31 24:00 0 S
|
||||||
Rule Phil 1978 only - Sep 21 0:00 0 S
|
#Rule Phil 1942 only - Mar 1 0:00 1:00 D
|
||||||
|
#Rule Phil 1942 only - Jun 30 24:00 0 S
|
||||||
|
Rule Phil 1945 only - Nov 30 24:00 0 S
|
||||||
|
Rule Phil 1954 only - Apr 11 24:00 1:00 D
|
||||||
|
Rule Phil 1954 only - Jun 4 24:00 0 S
|
||||||
|
Rule Phil 1977 only - Mar 27 24:00 1:00 D
|
||||||
|
Rule Phil 1977 only - Sep 21 24:00 0 S
|
||||||
|
Rule Phil 1990 only - May 21 0:00 1:00 D
|
||||||
|
Rule Phil 1990 only - Jul 28 24:00 0 S
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31
|
Zone Asia/Manila -15:56:08 - LMT 1844 Dec 31
|
||||||
8:04:00 - LMT 1899 May 11
|
8:03:52 - LMT 1899 Sep 6 4:00u
|
||||||
8:00 Phil P%sT 1942 May
|
8:00 Phil P%sT 1942 Feb 11 24:00
|
||||||
9:00 - JST 1944 Nov
|
9:00 - JST 1945 Mar 4
|
||||||
8:00 Phil P%sT
|
8:00 Phil P%sT
|
||||||
|
|
||||||
# Bahrain
|
# Bahrain
|
||||||
|
|||||||
@@ -1262,10 +1262,10 @@ Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
|
|||||||
# The 1992 ending date used in the rules is a best guess;
|
# The 1992 ending date used in the rules is a best guess;
|
||||||
# it matches what was used in the past.
|
# it matches what was used in the past.
|
||||||
|
|
||||||
# The Australian Bureau of Meteorology FAQ
|
# From Christopher Hunt (2006-11-21), after an advance warning
|
||||||
# http://www.bom.gov.au/faq/faqgen.htm
|
# from Jesper Nørgaard Welen (2006-11-01):
|
||||||
# (1999-09-27) writes that Giles Meteorological Station uses
|
# WA are trialing DST for three years.
|
||||||
# South Australian time even though it's located in Western Australia.
|
# http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf
|
||||||
|
|
||||||
# From Paul Eggert (2018-04-01):
|
# From Paul Eggert (2018-04-01):
|
||||||
# The Guardian Express of Perth, Australia reported today that the
|
# The Guardian Express of Perth, Australia reported today that the
|
||||||
@@ -1277,54 +1277,10 @@ Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
|
|||||||
# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/
|
# https://www.communitynews.com.au/guardian-express/news/exclusive-daylight-savings-coming-wa-summer-2018/
|
||||||
# [The article ends with "Today's date is April 1."]
|
# [The article ends with "Today's date is April 1."]
|
||||||
|
|
||||||
# Queensland
|
# The Australian Bureau of Meteorology FAQ
|
||||||
|
# http://www.bom.gov.au/faq/faqgen.htm
|
||||||
# From Paul Eggert (2018-02-26):
|
# (1999-09-27) writes that Giles Meteorological Station uses
|
||||||
# I lack access to the following source for Queensland DST:
|
# South Australian time even though it's located in Western Australia.
|
||||||
# Pearce C. History of daylight saving time in Queensland.
|
|
||||||
# Queensland Hist J. 2017 Aug;23(6):389-403
|
|
||||||
# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS
|
|
||||||
|
|
||||||
# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
|
|
||||||
# # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
|
|
||||||
# # [ Dec 1990 ]
|
|
||||||
# ...
|
|
||||||
# Zone Australia/Queensland 10:00 AQ %sST
|
|
||||||
# ...
|
|
||||||
# Rule AQ 1971 only - Oct lastSun 2:00 1:00 D
|
|
||||||
# Rule AQ 1972 only - Feb lastSun 3:00 0 E
|
|
||||||
# Rule AQ 1989 max - Oct lastSun 2:00 1:00 D
|
|
||||||
# Rule AQ 1990 max - Mar Sun>=1 3:00 0 E
|
|
||||||
|
|
||||||
# From Bradley White (1989-12-24):
|
|
||||||
# "Australia/Queensland" now observes daylight time (i.e. from
|
|
||||||
# October 1989).
|
|
||||||
|
|
||||||
# From Bradley White (1991-03-04):
|
|
||||||
# A recent excerpt from an Australian newspaper...
|
|
||||||
# ...Queensland...[has] agreed to end daylight saving
|
|
||||||
# at 3am tomorrow (March 3)...
|
|
||||||
|
|
||||||
# From John Mackin (1991-03-06):
|
|
||||||
# I can certainly confirm for my part that Daylight Saving in NSW did in fact
|
|
||||||
# end on Sunday, 3 March. I don't know at what hour, though. (It surprised
|
|
||||||
# me.)
|
|
||||||
|
|
||||||
# From Bradley White (1992-03-08):
|
|
||||||
# ...there was recently a referendum in Queensland which resulted
|
|
||||||
# in the experimental daylight saving system being abandoned. So, ...
|
|
||||||
# ...
|
|
||||||
# Rule QLD 1989 1991 - Oct lastSun 2:00 1:00 D
|
|
||||||
# Rule QLD 1990 1992 - Mar Sun>=1 3:00 0 S
|
|
||||||
# ...
|
|
||||||
|
|
||||||
# From Arthur David Olson (1992-03-08):
|
|
||||||
# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
|
|
||||||
|
|
||||||
# From Christopher Hunt (2006-11-21), after an advance warning
|
|
||||||
# from Jesper Nørgaard Welen (2006-11-01):
|
|
||||||
# WA are trialing DST for three years.
|
|
||||||
# http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf
|
|
||||||
|
|
||||||
# From Rives McDow (2002-04-09):
|
# From Rives McDow (2002-04-09):
|
||||||
# The most interesting region I have found consists of three towns on the
|
# The most interesting region I have found consists of three towns on the
|
||||||
@@ -1382,6 +1338,59 @@ Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
|
|||||||
# For lack of better info, assume the tradition dates back to the
|
# For lack of better info, assume the tradition dates back to the
|
||||||
# introduction of standard time in 1895.
|
# introduction of standard time in 1895.
|
||||||
|
|
||||||
|
# From Stuart Bishop (2024-11-12):
|
||||||
|
# An article discussing the in-use but technically unofficial timezones
|
||||||
|
# in the Western Australian portion of the Nullarbor Plain.
|
||||||
|
# https://www.abc.net.au/news/2024-11-22/outback-wa-properties-strange-time-zones/104542494
|
||||||
|
# From Paul Eggert (2024-11-12):
|
||||||
|
# As the article says, the Eyre Bird Observatory and nearby sheep stations
|
||||||
|
# can use Tokyo time. Other possibilities include Asia/Chita, Asia/Seoul,
|
||||||
|
# and Asia/Jayapura.
|
||||||
|
|
||||||
|
# Queensland
|
||||||
|
|
||||||
|
# From Paul Eggert (2018-02-26):
|
||||||
|
# I lack access to the following source for Queensland DST:
|
||||||
|
# Pearce C. History of daylight saving time in Queensland.
|
||||||
|
# Queensland Hist J. 2017 Aug;23(6):389-403
|
||||||
|
# https://search.informit.com.au/documentSummary;dn=994682348436426;res=IELHSS
|
||||||
|
|
||||||
|
# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
|
||||||
|
# # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
|
||||||
|
# # [ Dec 1990 ]
|
||||||
|
# ...
|
||||||
|
# Zone Australia/Queensland 10:00 AQ %sST
|
||||||
|
# ...
|
||||||
|
# Rule AQ 1971 only - Oct lastSun 2:00 1:00 D
|
||||||
|
# Rule AQ 1972 only - Feb lastSun 3:00 0 E
|
||||||
|
# Rule AQ 1989 max - Oct lastSun 2:00 1:00 D
|
||||||
|
# Rule AQ 1990 max - Mar Sun>=1 3:00 0 E
|
||||||
|
|
||||||
|
# From Bradley White (1989-12-24):
|
||||||
|
# "Australia/Queensland" now observes daylight time (i.e. from
|
||||||
|
# October 1989).
|
||||||
|
|
||||||
|
# From Bradley White (1991-03-04):
|
||||||
|
# A recent excerpt from an Australian newspaper...
|
||||||
|
# ...Queensland...[has] agreed to end daylight saving
|
||||||
|
# at 3am tomorrow (March 3)...
|
||||||
|
|
||||||
|
# From John Mackin (1991-03-06):
|
||||||
|
# I can certainly confirm for my part that Daylight Saving in NSW did in fact
|
||||||
|
# end on Sunday, 3 March. I don't know at what hour, though. (It surprised
|
||||||
|
# me.)
|
||||||
|
|
||||||
|
# From Bradley White (1992-03-08):
|
||||||
|
# ...there was recently a referendum in Queensland which resulted
|
||||||
|
# in the experimental daylight saving system being abandoned. So, ...
|
||||||
|
# ...
|
||||||
|
# Rule QLD 1989 1991 - Oct lastSun 2:00 1:00 D
|
||||||
|
# Rule QLD 1990 1992 - Mar Sun>=1 3:00 0 S
|
||||||
|
# ...
|
||||||
|
|
||||||
|
# From Arthur David Olson (1992-03-08):
|
||||||
|
# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
|
||||||
|
|
||||||
|
|
||||||
# southeast Australia
|
# southeast Australia
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -74,6 +74,10 @@ Link Etc/GMT GMT
|
|||||||
# so we moved the names into the Etc subdirectory.
|
# so we moved the names into the Etc subdirectory.
|
||||||
# Also, the time zone abbreviations are now compatible with %z.
|
# Also, the time zone abbreviations are now compatible with %z.
|
||||||
|
|
||||||
|
# There is no "Etc/Unknown" entry, as CLDR says that "Etc/Unknown"
|
||||||
|
# corresponds to an unknown or invalid time zone, and things would get
|
||||||
|
# confusing if Etc/Unknown were made valid here.
|
||||||
|
|
||||||
Zone Etc/GMT-14 14 - %z
|
Zone Etc/GMT-14 14 - %z
|
||||||
Zone Etc/GMT-13 13 - %z
|
Zone Etc/GMT-13 13 - %z
|
||||||
Zone Etc/GMT-12 12 - %z
|
Zone Etc/GMT-12 12 - %z
|
||||||
|
|||||||
@@ -1170,7 +1170,7 @@ Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Tórshavn
|
|||||||
# However, Greenland will change to Daylight Saving Time again in 2024
|
# However, Greenland will change to Daylight Saving Time again in 2024
|
||||||
# and onwards.
|
# and onwards.
|
||||||
|
|
||||||
# From a contributor who wishes to remain anonymous for now (2023-10-29):
|
# From Jule Dabars (2023-10-29):
|
||||||
# https://www.dr.dk/nyheder/seneste/i-nat-skal-uret-stilles-en-time-tilbage-men-foerste-gang-sker-det-ikke-i-groenland
|
# https://www.dr.dk/nyheder/seneste/i-nat-skal-uret-stilles-en-time-tilbage-men-foerste-gang-sker-det-ikke-i-groenland
|
||||||
# with a link to that page:
|
# with a link to that page:
|
||||||
# https://naalakkersuisut.gl/Nyheder/2023/10/2710_sommertid
|
# https://naalakkersuisut.gl/Nyheder/2023/10/2710_sommertid
|
||||||
|
|||||||
@@ -31,5 +31,15 @@
|
|||||||
# time zone abbreviation "-00", indicating that the actual time zone
|
# time zone abbreviation "-00", indicating that the actual time zone
|
||||||
# is unknown.
|
# is unknown.
|
||||||
|
|
||||||
|
# TZ="Factory" was added to TZDB in 1989, and in 2016 its abbreviation
|
||||||
|
# was changed to "-00" from a longish English-language error message.
|
||||||
|
# Around 2010, CLDR added "Etc/Unknown" for use with TZDB, to stand
|
||||||
|
# for an unknown or invalid time zone. These two notions differ:
|
||||||
|
# TZ="Factory" is a valid timezone, so tzalloc("Factory") succeeds, whereas
|
||||||
|
# TZ="Etc/Unknown" is invalid and tzalloc("Etc/Unknown") fails.
|
||||||
|
# Also, a downstream distributor could modify Factory to be a
|
||||||
|
# default timezone suitable for the devices it manufactures,
|
||||||
|
# whereas that cannot happen for Etc/Unknown.
|
||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT
|
# Zone NAME STDOFF RULES FORMAT
|
||||||
Zone Factory 0 - -00
|
Zone Factory 0 - -00
|
||||||
|
|||||||
@@ -92,11 +92,11 @@ Leap 2016 Dec 31 23:59:60 + S
|
|||||||
# Any additional leap seconds will come after this.
|
# Any additional leap seconds will come after this.
|
||||||
# This Expires line is commented out for now,
|
# This Expires line is commented out for now,
|
||||||
# so that pre-2020a zic implementations do not reject this file.
|
# so that pre-2020a zic implementations do not reject this file.
|
||||||
#Expires 2025 Jun 28 00:00:00
|
#Expires 2025 Dec 28 00:00:00
|
||||||
|
|
||||||
# POSIX timestamps for the data in this file:
|
# POSIX timestamps for the data in this file:
|
||||||
#updated 1720104763 (2024-07-04 14:52:43 UTC)
|
#updated 1736208000 (2025-01-07 00:00:00 UTC)
|
||||||
#expires 1751068800 (2025-06-28 00:00:00 UTC)
|
#expires 1766880000 (2025-12-28 00:00:00 UTC)
|
||||||
|
|
||||||
# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
|
# Updated through IERS Bulletin C (https://hpiers.obspm.fr/iers/bul/bulc/bulletinc.dat)
|
||||||
# File expires on 28 June 2025
|
# File expires on 28 December 2025
|
||||||
|
|||||||
@@ -50,9 +50,12 @@
|
|||||||
# in New York City (1869-10). His 1870 proposal was based on Washington, DC,
|
# in New York City (1869-10). His 1870 proposal was based on Washington, DC,
|
||||||
# but in 1872-05 he moved the proposed origin to Greenwich.
|
# but in 1872-05 he moved the proposed origin to Greenwich.
|
||||||
|
|
||||||
# From Paul Eggert (2018-03-20):
|
# From Paul Eggert (2024-11-18):
|
||||||
# Dowd's proposal left many details unresolved, such as where to draw
|
# Dowd's proposal left many details unresolved, such as where to draw
|
||||||
# lines between time zones. The key individual who made time zones
|
# lines between time zones. Sandford Fleming of the Canadian Pacific Railway
|
||||||
|
# argued for Dowd's proposal in 1876, and Cleveland Abbe of the American
|
||||||
|
# Meteorology Society published a report in 1879 recommending four US time
|
||||||
|
# zones based on GMT. However, the key individual who made time zones
|
||||||
# work in the US was William Frederick Allen - railway engineer,
|
# work in the US was William Frederick Allen - railway engineer,
|
||||||
# managing editor of the Travelers' Guide, and secretary of the
|
# managing editor of the Travelers' Guide, and secretary of the
|
||||||
# General Time Convention, a railway standardization group. Allen
|
# General Time Convention, a railway standardization group. Allen
|
||||||
@@ -1631,6 +1634,15 @@ Zone America/Moncton -4:19:08 - LMT 1883 Dec 9
|
|||||||
# For more on Orillia, see: Daubs K. Bold attempt at daylight saving
|
# For more on Orillia, see: Daubs K. Bold attempt at daylight saving
|
||||||
# time became a comic failure in Orillia. Toronto Star 2017-07-08.
|
# time became a comic failure in Orillia. Toronto Star 2017-07-08.
|
||||||
# https://www.thestar.com/news/insight/2017/07/08/bold-attempt-at-daylight-saving-time-became-a-comic-failure-in-orillia.html
|
# https://www.thestar.com/news/insight/2017/07/08/bold-attempt-at-daylight-saving-time-became-a-comic-failure-in-orillia.html
|
||||||
|
# From Paul Eggert (2025-03-20):
|
||||||
|
# Also see the 1912-06-17 front page of The Evening Sunbeam,
|
||||||
|
# reproduced in: Richardson M. "Daylight saving was a confusing
|
||||||
|
# time in Orillia" in the 2025-03-15 Orillia Matters. Richardson writes,
|
||||||
|
# "The first Sunday after the switch was made, [DST proponent and
|
||||||
|
# Orillia mayor William Sword] Frost walked into church an hour late.
|
||||||
|
# This became a symbol of the downfall of daylight saving in Orillia."
|
||||||
|
# The mayor became known as "Daylight Bill".
|
||||||
|
# https://www.orilliamatters.com/local-news/column-daylight-saving-was-a-confusing-time-in-orillia-10377529
|
||||||
|
|
||||||
# From Mark Brader (2010-03-06):
|
# From Mark Brader (2010-03-06):
|
||||||
#
|
#
|
||||||
@@ -2654,7 +2666,7 @@ Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
|
|||||||
# http://puentelibre.mx/noticia/ciudad_juarez_cambio_horario_noviembre_2022/
|
# http://puentelibre.mx/noticia/ciudad_juarez_cambio_horario_noviembre_2022/
|
||||||
|
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
Rule Mexico 1931 only - April 30 0:00 1:00 D
|
Rule Mexico 1931 only - Apr 30 0:00 1:00 D
|
||||||
Rule Mexico 1931 only - Oct 1 0:00 0 S
|
Rule Mexico 1931 only - Oct 1 0:00 0 S
|
||||||
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
|
Rule Mexico 1939 only - Feb 5 0:00 1:00 D
|
||||||
Rule Mexico 1939 only - Jun 25 0:00 0 S
|
Rule Mexico 1939 only - Jun 25 0:00 0 S
|
||||||
|
|||||||
@@ -1,26 +1,3 @@
|
|||||||
#
|
|
||||||
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
||||||
#
|
|
||||||
# This code is free software; you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU General Public License version 2 only, as
|
|
||||||
# published by the Free Software Foundation. Oracle designates this
|
|
||||||
# particular file as subject to the "Classpath" exception as provided
|
|
||||||
# by Oracle in the LICENSE file that accompanied this code.
|
|
||||||
#
|
|
||||||
# This code is distributed in the hope that it will be useful, but WITHOUT
|
|
||||||
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
||||||
# version 2 for more details (a copy is included in the LICENSE file that
|
|
||||||
# accompanied this code).
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License version
|
|
||||||
# 2 along with this work; if not, write to the Free Software Foundation,
|
|
||||||
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
|
||||||
# or visit www.oracle.com if you need additional information or have any
|
|
||||||
# questions.
|
|
||||||
#
|
|
||||||
# tzdb data for South America and environs
|
# tzdb data for South America and environs
|
||||||
|
|
||||||
# This file is in the public domain, so clarified as of
|
# This file is in the public domain, so clarified as of
|
||||||
@@ -1269,35 +1246,45 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
|||||||
# dates to 2014.
|
# dates to 2014.
|
||||||
# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
|
# DST End: last Saturday of April 2014 (Sun 27 Apr 2014 03:00 UTC)
|
||||||
# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
|
# DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
|
||||||
# http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf
|
# From Tim Parenti (2025-03-22):
|
||||||
|
# Decreto 307 of 2014 of the Ministry of the Interior and Public Security,
|
||||||
|
# promulgated 2014-01-30 and published 2014-02-19:
|
||||||
|
# https://www.diariooficial.interior.gob.cl/media/2014/02/19/do-20140219.pdf#page=1
|
||||||
|
# https://www.bcn.cl/leychile/navegar?idNorma=1059557
|
||||||
|
|
||||||
# From Eduardo Romero Urra (2015-03-03):
|
# From Eduardo Romero Urra (2015-03-03):
|
||||||
# Today has been published officially that Chile will use the DST time
|
# Today has been published officially that Chile will use the DST time
|
||||||
# permanently until March 25 of 2017
|
# permanently until March 25 of 2017
|
||||||
# http://www.diariooficial.interior.gob.cl/media/2015/03/03/1-large.jpg
|
# From Tim Parenti (2025-03-22):
|
||||||
#
|
# Decreto 106 of 2015 of the Ministry of the Interior and Public Security,
|
||||||
# From Paul Eggert (2015-03-03):
|
# promulgated 2015-01-27 and published 2015-03-03:
|
||||||
# For now, assume that the extension will persist indefinitely.
|
# https://www.diariooficial.interior.gob.cl/media/2015/03/03/do-20150303.pdf#page=1
|
||||||
|
# https://www.bcn.cl/leychile/navegar?idNorma=1075157
|
||||||
|
|
||||||
# From Juan Correa (2016-03-18):
|
# From Juan Correa (2016-03-18):
|
||||||
# The decree regarding DST has been published in today's Official Gazette:
|
# The decree regarding DST has been published in today's Official Gazette...
|
||||||
# http://www.diariooficial.interior.gob.cl/versiones-anteriores/do/20160318/
|
|
||||||
# http://www.leychile.cl/Navegar?idNorma=1088502
|
|
||||||
# It does consider the second Saturday of May and August as the dates
|
# It does consider the second Saturday of May and August as the dates
|
||||||
# for the transition; and it lists DST dates until 2019, but I think
|
# for the transition; and it lists DST dates until 2019, but I think
|
||||||
# this scheme will stick.
|
# this scheme will stick.
|
||||||
#
|
|
||||||
# From Paul Eggert (2016-03-18):
|
# From Paul Eggert (2016-03-18):
|
||||||
# For now, assume the pattern holds for the indefinite future.
|
|
||||||
# The decree says transitions occur at 24:00; in practice this appears
|
# The decree says transitions occur at 24:00; in practice this appears
|
||||||
# to mean 24:00 mainland time, not 24:00 local time, so that Easter
|
# to mean 24:00 mainland time, not 24:00 local time, so that Easter
|
||||||
# Island is always two hours behind the mainland.
|
# Island is always two hours behind the mainland.
|
||||||
|
# From Tim Parenti (2025-03-22):
|
||||||
|
# Decreto 253 of 2016 of the Ministry of the Interior and Public Security,
|
||||||
|
# promulgated 2016-03-16 and published 2016-03-18.
|
||||||
|
# https://www.diariooficial.interior.gob.cl/media/2016/03/18/do-20160318.pdf#page=1
|
||||||
|
# https://www.bcn.cl/leychile/navegar?idNorma=1088502
|
||||||
|
|
||||||
# From Juan Correa (2016-12-04):
|
# From Juan Correa (2016-12-04):
|
||||||
# Magallanes region ... will keep DST (UTC -3) all year round....
|
# Magallanes region ... will keep DST (UTC -3) all year round....
|
||||||
# http://www.soychile.cl/Santiago/Sociedad/2016/12/04/433428/Bachelet-firmo-el-decreto-para-establecer-un-horario-unico-para-la-Region-de-Magallanes.aspx
|
# http://www.soychile.cl/Santiago/Sociedad/2016/12/04/433428/Bachelet-firmo-el-decreto-para-establecer-un-horario-unico-para-la-Region-de-Magallanes.aspx
|
||||||
# From Deborah Goldsmith (2017-01-19):
|
# From Tim Parenti (2025-03-22), via Deborah Goldsmith (2017-01-19):
|
||||||
# http://www.diariooficial.interior.gob.cl/publicaciones/2017/01/17/41660/01/1169626.pdf
|
# Decreto 1820 of 2016 of the Ministry of the Interior and Public Security,
|
||||||
|
# promulgated 2016-12-02 and published 2017-01-17:
|
||||||
|
# https://www.diariooficial.interior.gob.cl/publicaciones/2017/01/17/41660/01/1169626.pdf
|
||||||
|
# https://www.bcn.cl/leychile/Navegar?idNorma=1099217
|
||||||
|
# Model this as a change to standard offset effective 2016-12-04.
|
||||||
|
|
||||||
# From Juan Correa (2018-08-13):
|
# From Juan Correa (2018-08-13):
|
||||||
# As of moments ago, the Ministry of Energy in Chile has announced the new
|
# As of moments ago, the Ministry of Energy in Chile has announced the new
|
||||||
@@ -1316,13 +1303,20 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
|||||||
# https://twitter.com/MinEnergia/status/1029009354001973248
|
# https://twitter.com/MinEnergia/status/1029009354001973248
|
||||||
# "We will keep the new time policy unchanged for at least the next 4 years."
|
# "We will keep the new time policy unchanged for at least the next 4 years."
|
||||||
# So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
|
# So we extend the new rules on Saturdays at 24:00 mainland time indefinitely.
|
||||||
# From Juan Correa (2019-02-04):
|
# From Tim Parenti (2025-03-22), via Juan Correa (2019-02-04):
|
||||||
# http://www.diariooficial.interior.gob.cl/publicaciones/2018/11/23/42212/01/1498738.pdf
|
# Decreto 1286 of 2018 of the Ministry of the Interior and Public Security,
|
||||||
|
# promulgated 2018-09-21 and published 2018-11-23:
|
||||||
|
# https://www.diariooficial.interior.gob.cl/publicaciones/2018/11/23/42212/01/1498738.pdf
|
||||||
|
# https://www.bcn.cl/leychile/Navegar?idNorma=1125760
|
||||||
|
|
||||||
# From Juan Correa (2022-04-02):
|
# From Juan Correa (2022-04-02):
|
||||||
# I found there was a decree published last Thursday that will keep
|
# I found there was a decree published last Thursday that will keep
|
||||||
# Magallanes region to UTC -3 "indefinitely". The decree is available at
|
# Magallanes region to UTC -3 "indefinitely".
|
||||||
|
# From Tim Parenti (2025-03-22):
|
||||||
|
# Decreto 143 of 2022 of the Ministry of the Interior and Public Security,
|
||||||
|
# promulgated 2022-03-29 and published 2022-03-31:
|
||||||
# https://www.diariooficial.interior.gob.cl/publicaciones/2022/03/31/43217-B/01/2108910.pdf
|
# https://www.diariooficial.interior.gob.cl/publicaciones/2022/03/31/43217-B/01/2108910.pdf
|
||||||
|
# https://www.bcn.cl/leychile/Navegar?idNorma=1174342
|
||||||
|
|
||||||
# From Juan Correa (2022-08-09):
|
# From Juan Correa (2022-08-09):
|
||||||
# the Internal Affairs Ministry (Ministerio del Interior) informed DST
|
# the Internal Affairs Ministry (Ministerio del Interior) informed DST
|
||||||
@@ -1331,13 +1325,36 @@ Zone America/Rio_Branco -4:31:12 - LMT 1914
|
|||||||
# will keep UTC -3 "indefinitely"... This is because on September 4th
|
# will keep UTC -3 "indefinitely"... This is because on September 4th
|
||||||
# we will have a voting whether to approve a new Constitution.
|
# we will have a voting whether to approve a new Constitution.
|
||||||
#
|
#
|
||||||
# From Eduardo Romero Urra (2022-08-17):
|
# From Tim Parenti (2025-03-22), via Eduardo Romero Urra (2022-08-17):
|
||||||
|
# Decreto 224 of 2022 of the Ministry of the Interior and Public Security,
|
||||||
|
# promulgated 2022-07-14 and published 2022-08-13:
|
||||||
# https://www.diariooficial.interior.gob.cl/publicaciones/2022/08/13/43327/01/2172567.pdf
|
# https://www.diariooficial.interior.gob.cl/publicaciones/2022/08/13/43327/01/2172567.pdf
|
||||||
|
# https://www.bcn.cl/leychile/navegar?idNorma=1179983
|
||||||
#
|
#
|
||||||
# From Paul Eggert (2022-08-17):
|
# From Paul Eggert (2022-08-17):
|
||||||
# Although the presidential decree stops at fall 2026, assume that
|
# Although the presidential decree stops at fall 2026, assume that
|
||||||
# similar DST rules will continue thereafter.
|
# similar DST rules will continue thereafter.
|
||||||
|
|
||||||
|
# From Paul Eggert (2025-01-15):
|
||||||
|
# Diario Regional Aysén's Sebastián Martel reports that 94% of Aysén
|
||||||
|
# citizens polled in November favored changing the rules from
|
||||||
|
# -04/-03-with-DST to -03 all year...
|
||||||
|
# https://www.diarioregionalaysen.cl/noticia/actualidad/2024/12/presentan-decision-que-gano-la-votacion-sobre-el-cambio-del-huso-horario-en-aysen
|
||||||
|
#
|
||||||
|
# From Yonathan Dossow (2025-03-20):
|
||||||
|
# [T]oday we have more confirmation of the change. [Aysén] region will keep
|
||||||
|
# UTC-3 all year...
|
||||||
|
# https://www.cnnchile.com/pais/region-de-aysen-mantendra-horario-de-verano-todo-el-ano_20250320/
|
||||||
|
# https://www.latercera.com/nacional/noticia/tras-consulta-ciudadana-region-de-aysen-mantendra-el-horario-de-verano-durante-todo-el-ano/
|
||||||
|
# https://x.com/min_interior/status/1902692504270672098
|
||||||
|
#
|
||||||
|
# From Tim Parenti (2025-03-22), via Eduardo Romero Urra (2025-03-20):
|
||||||
|
# Decreto 93 of 2025 of the Ministry of the Interior and Public Security,
|
||||||
|
# promulgated 2025-03-11 and published 2025-03-20:
|
||||||
|
# https://www.diariooficial.interior.gob.cl/publicaciones/2025/03/20/44104/01/2624263.pdf
|
||||||
|
# https://www.bcn.cl/leychile/Navegar?idNorma=1211955
|
||||||
|
# Model this as a change to standard offset effective 2025-03-20.
|
||||||
|
|
||||||
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
# Rule NAME FROM TO - IN ON AT SAVE LETTER/S
|
||||||
Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
|
Rule Chile 1927 1931 - Sep 1 0:00 1:00 -
|
||||||
Rule Chile 1928 1932 - Apr 1 0:00 0 -
|
Rule Chile 1928 1932 - Apr 1 0:00 0 -
|
||||||
@@ -1394,6 +1411,20 @@ Zone America/Santiago -4:42:45 - LMT 1890
|
|||||||
-5:00 1:00 %z 1947 Mar 31 24:00
|
-5:00 1:00 %z 1947 Mar 31 24:00
|
||||||
-5:00 - %z 1947 May 21 23:00
|
-5:00 - %z 1947 May 21 23:00
|
||||||
-4:00 Chile %z
|
-4:00 Chile %z
|
||||||
|
Zone America/Coyhaique -4:48:16 - LMT 1890
|
||||||
|
-4:42:45 - SMT 1910 Jan 10
|
||||||
|
-5:00 - %z 1916 Jul 1
|
||||||
|
-4:42:45 - SMT 1918 Sep 10
|
||||||
|
-4:00 - %z 1919 Jul 1
|
||||||
|
-4:42:45 - SMT 1927 Sep 1
|
||||||
|
-5:00 Chile %z 1932 Sep 1
|
||||||
|
-4:00 - %z 1942 Jun 1
|
||||||
|
-5:00 - %z 1942 Aug 1
|
||||||
|
-4:00 - %z 1946 Aug 28 24:00
|
||||||
|
-5:00 1:00 %z 1947 Mar 31 24:00
|
||||||
|
-5:00 - %z 1947 May 21 23:00
|
||||||
|
-4:00 Chile %z 2025 Mar 20
|
||||||
|
-3:00 - %z
|
||||||
Zone America/Punta_Arenas -4:43:40 - LMT 1890
|
Zone America/Punta_Arenas -4:43:40 - LMT 1890
|
||||||
-4:42:45 - SMT 1910 Jan 10
|
-4:42:45 - SMT 1910 Jan 10
|
||||||
-5:00 - %z 1916 Jul 1
|
-5:00 - %z 1916 Jul 1
|
||||||
@@ -1710,7 +1741,7 @@ Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
|
|||||||
# and that on the first Sunday of the month of October, it is to be set
|
# and that on the first Sunday of the month of October, it is to be set
|
||||||
# forward 60 minutes, in all the territory of the Paraguayan Republic.
|
# forward 60 minutes, in all the territory of the Paraguayan Republic.
|
||||||
# ...
|
# ...
|
||||||
Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
|
Rule Para 2010 2024 - Oct Sun>=1 0:00 1:00 -
|
||||||
Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
|
Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
|
||||||
#
|
#
|
||||||
# From Steffen Thorsen (2013-03-07):
|
# From Steffen Thorsen (2013-03-07):
|
||||||
@@ -1729,14 +1760,35 @@ Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
|
|||||||
# https://www.abc.com.py/politica/2023/07/12/promulgacion-el-cambio-de-hora-sera-por-ley/
|
# https://www.abc.com.py/politica/2023/07/12/promulgacion-el-cambio-de-hora-sera-por-ley/
|
||||||
# From Carlos Raúl Perasso (2023-07-27):
|
# From Carlos Raúl Perasso (2023-07-27):
|
||||||
# http://silpy.congreso.gov.py/descarga/ley-144138
|
# http://silpy.congreso.gov.py/descarga/ley-144138
|
||||||
Rule Para 2013 max - Mar Sun>=22 0:00 0 -
|
Rule Para 2013 2024 - Mar Sun>=22 0:00 0 -
|
||||||
|
#
|
||||||
|
# From Heitor David Pinto (2024-09-24):
|
||||||
|
# Today the Congress of Paraguay passed a bill to observe UTC-3 permanently....
|
||||||
|
# The text of the bill says that it would enter into force on the first
|
||||||
|
# Sunday in October 2024, the same date currently scheduled to start DST....
|
||||||
|
# https://silpy.congreso.gov.py/web/expediente/132531
|
||||||
|
# (2024-10-14):
|
||||||
|
# The president approved the law on 11 October 2024,
|
||||||
|
# and it was officially published on 14 October 2024.
|
||||||
|
# https://www.gacetaoficial.gov.py/index/detalle_publicacion/89723
|
||||||
|
# The text of the law says that it enters into force on the first
|
||||||
|
# Sunday in October 2024 (6 October 2024). But the constitution
|
||||||
|
# prohibits retroactive effect, and the civil code says that laws
|
||||||
|
# enter into force on the day after their publication or on the day
|
||||||
|
# that they specify, and it also says that they don't have retroactive
|
||||||
|
# effect. So I think that the time change on 6 October 2024 should
|
||||||
|
# still be considered as DST according to the previous law, and
|
||||||
|
# permanently UTC-3 from 15 October 2024 according to the new law....
|
||||||
|
# https://www.constituteproject.org/constitution/Paraguay_2011
|
||||||
|
# https://www.oas.org/dil/esp/codigo_civil_paraguay.pdf
|
||||||
|
|
||||||
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
# Zone NAME STDOFF RULES FORMAT [UNTIL]
|
||||||
Zone America/Asuncion -3:50:40 - LMT 1890
|
Zone America/Asuncion -3:50:40 - LMT 1890
|
||||||
-3:50:40 - AMT 1931 Oct 10 # Asunción Mean Time
|
-3:50:40 - AMT 1931 Oct 10 # Asunción Mean Time
|
||||||
-4:00 - %z 1972 Oct
|
-4:00 - %z 1972 Oct
|
||||||
-3:00 - %z 1974 Apr
|
-3:00 - %z 1974 Apr
|
||||||
-4:00 Para %z
|
-4:00 Para %z 2024 Oct 15
|
||||||
|
-3:00 - %z
|
||||||
|
|
||||||
# Peru
|
# Peru
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -162,7 +162,8 @@ CH +4723+00832 Europe/Zurich
|
|||||||
CI +0519-00402 Africa/Abidjan
|
CI +0519-00402 Africa/Abidjan
|
||||||
CK -2114-15946 Pacific/Rarotonga
|
CK -2114-15946 Pacific/Rarotonga
|
||||||
CL -3327-07040 America/Santiago most of Chile
|
CL -3327-07040 America/Santiago most of Chile
|
||||||
CL -5309-07055 America/Punta_Arenas Region of Magallanes
|
CL -4534-07204 America/Coyhaique Aysen Region
|
||||||
|
CL -5309-07055 America/Punta_Arenas Magallanes Region
|
||||||
CL -2709-10926 Pacific/Easter Easter Island
|
CL -2709-10926 Pacific/Easter Easter Island
|
||||||
CM +0403+00942 Africa/Douala
|
CM +0403+00942 Africa/Douala
|
||||||
CN +3114+12128 Asia/Shanghai Beijing Time
|
CN +3114+12128 Asia/Shanghai Beijing Time
|
||||||
@@ -333,7 +334,7 @@ PF -0900-13930 Pacific/Marquesas Marquesas Islands
|
|||||||
PF -2308-13457 Pacific/Gambier Gambier Islands
|
PF -2308-13457 Pacific/Gambier Gambier Islands
|
||||||
PG -0930+14710 Pacific/Port_Moresby most of Papua New Guinea
|
PG -0930+14710 Pacific/Port_Moresby most of Papua New Guinea
|
||||||
PG -0613+15534 Pacific/Bougainville Bougainville
|
PG -0613+15534 Pacific/Bougainville Bougainville
|
||||||
PH +1435+12100 Asia/Manila
|
PH +143512+1205804 Asia/Manila
|
||||||
PK +2452+06703 Asia/Karachi
|
PK +2452+06703 Asia/Karachi
|
||||||
PL +5215+02100 Europe/Warsaw
|
PL +5215+02100 Europe/Warsaw
|
||||||
PM +4703-05620 America/Miquelon
|
PM +4703-05620 America/Miquelon
|
||||||
|
|||||||
@@ -388,7 +388,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBLCMS, \
|
|||||||
common/awt/debug \
|
common/awt/debug \
|
||||||
libawt/java2d, \
|
libawt/java2d, \
|
||||||
HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \
|
HEADERS_FROM_SRC := $(LIBLCMS_HEADERS_FROM_SRC), \
|
||||||
DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation stringop-truncation, \
|
DISABLED_WARNINGS_gcc := format-nonliteral misleading-indentation stringop-truncation, \
|
||||||
DISABLED_WARNINGS_clang := tautological-compare, \
|
DISABLED_WARNINGS_clang := tautological-compare, \
|
||||||
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
|
DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
|
||||||
DISABLED_WARNINGS_microsoft := 4819, \
|
DISABLED_WARNINGS_microsoft := 4819, \
|
||||||
@@ -887,9 +887,10 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false)
|
|||||||
$(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
|
$(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS) $(LIBZ_CFLAGS), \
|
||||||
EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \
|
EXTRA_HEADER_DIRS := $(LIBSPLASHSCREEN_HEADER_DIRS), \
|
||||||
DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \
|
DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result \
|
||||||
maybe-uninitialized shift-negative-value implicit-fallthrough, \
|
maybe-uninitialized shift-negative-value implicit-fallthrough \
|
||||||
|
unused-function, \
|
||||||
DISABLED_WARNINGS_clang := incompatible-pointer-types deprecated-declarations \
|
DISABLED_WARNINGS_clang := incompatible-pointer-types deprecated-declarations \
|
||||||
$(LIBZ_DISABLED_WARNINGS_CLANG), \
|
unused-function $(LIBZ_DISABLED_WARNINGS_CLANG), \
|
||||||
DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
|
DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
|
||||||
E_STATEMENT_NOT_REACHED, \
|
E_STATEMENT_NOT_REACHED, \
|
||||||
DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
|
DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ bool frame::safe_for_sender(JavaThread *thread) {
|
|||||||
// So unextended sp must be within the stack but we need not to check
|
// So unextended sp must be within the stack but we need not to check
|
||||||
// that unextended sp >= sp
|
// that unextended sp >= sp
|
||||||
|
|
||||||
bool unextended_sp_safe = (unextended_sp < thread->stack_base());
|
bool unextended_sp_safe = (unextended_sp < thread->stack_base() && unextended_sp >= thread->stack_end());
|
||||||
|
|
||||||
if (!unextended_sp_safe) {
|
if (!unextended_sp_safe) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -225,9 +225,9 @@ void CgroupV1Subsystem::print_version_specific_info(outputStream* st) {
|
|||||||
jlong kmem_limit = kernel_memory_limit_in_bytes();
|
jlong kmem_limit = kernel_memory_limit_in_bytes();
|
||||||
jlong kmem_max_usage = kernel_memory_max_usage_in_bytes();
|
jlong kmem_max_usage = kernel_memory_max_usage_in_bytes();
|
||||||
|
|
||||||
|
OSContainer::print_container_helper(st, kmem_limit, "kernel_memory_limit_in_bytes");
|
||||||
OSContainer::print_container_helper(st, kmem_usage, "kernel_memory_usage_in_bytes");
|
OSContainer::print_container_helper(st, kmem_usage, "kernel_memory_usage_in_bytes");
|
||||||
OSContainer::print_container_helper(st, kmem_limit, "kernel_memory_max_usage_in_bytes");
|
OSContainer::print_container_helper(st, kmem_max_usage, "kernel_memory_max_usage_in_bytes");
|
||||||
OSContainer::print_container_helper(st, kmem_max_usage, "kernel_memory_limit_in_bytes");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char * CgroupV1Subsystem::cpu_cpuset_cpus() {
|
char * CgroupV1Subsystem::cpu_cpuset_cpus() {
|
||||||
|
|||||||
@@ -1741,7 +1741,10 @@ void os::win32::print_windows_version(outputStream* st) {
|
|||||||
// - 2016 GA 10/2016 build: 14393
|
// - 2016 GA 10/2016 build: 14393
|
||||||
// - 2019 GA 11/2018 build: 17763
|
// - 2019 GA 11/2018 build: 17763
|
||||||
// - 2022 GA 08/2021 build: 20348
|
// - 2022 GA 08/2021 build: 20348
|
||||||
if (build_number > 20347) {
|
// - 2025 Preview build : 26040
|
||||||
|
if (build_number > 26039) {
|
||||||
|
st->print("Server 2025");
|
||||||
|
} else if (build_number > 20347) {
|
||||||
st->print("Server 2022");
|
st->print("Server 2022");
|
||||||
} else if (build_number > 17762) {
|
} else if (build_number > 17762) {
|
||||||
st->print("Server 2019");
|
st->print("Server 2019");
|
||||||
|
|||||||
@@ -1100,7 +1100,7 @@ CodeString* CodeStrings::find(intptr_t offset) const {
|
|||||||
// Convenience for add_comment.
|
// Convenience for add_comment.
|
||||||
CodeString* CodeStrings::find_last(intptr_t offset) const {
|
CodeString* CodeStrings::find_last(intptr_t offset) const {
|
||||||
CodeString* a = _strings_last;
|
CodeString* a = _strings_last;
|
||||||
while (a != NULL && !a->is_comment() && a->offset() > offset) {
|
while (a != NULL && !(a->is_comment() && a->offset() == offset)) {
|
||||||
a = a->_prev;
|
a = a->_prev;
|
||||||
}
|
}
|
||||||
return a;
|
return a;
|
||||||
|
|||||||
@@ -614,6 +614,21 @@ void ClassLoaderData::unload() {
|
|||||||
// after erroneous classes are released.
|
// after erroneous classes are released.
|
||||||
classes_do(InstanceKlass::notify_unload_class);
|
classes_do(InstanceKlass::notify_unload_class);
|
||||||
|
|
||||||
|
// Method::clear_jmethod_ids only sets the jmethod_ids to NULL without
|
||||||
|
// releasing the memory for related JNIMethodBlocks and JNIMethodBlockNodes.
|
||||||
|
// This is done intentionally because native code (e.g. JVMTI agent) holding
|
||||||
|
// jmethod_ids may access them after the associated classes and class loader
|
||||||
|
// are unloaded. The Java Native Interface Specification says "method ID
|
||||||
|
// does not prevent the VM from unloading the class from which the ID has
|
||||||
|
// been derived. After the class is unloaded, the method or field ID becomes
|
||||||
|
// invalid". In real world usages, the native code may rely on jmethod_ids
|
||||||
|
// being NULL after class unloading. Hence, it is unsafe to free the memory
|
||||||
|
// from the VM side without knowing when native code is going to stop using
|
||||||
|
// them.
|
||||||
|
if (_jmethod_ids != NULL) {
|
||||||
|
Method::clear_jmethod_ids(this);
|
||||||
|
}
|
||||||
|
|
||||||
// Clean up global class iterator for compiler
|
// Clean up global class iterator for compiler
|
||||||
static_klass_iterator.adjust_saved_class(this);
|
static_klass_iterator.adjust_saved_class(this);
|
||||||
}
|
}
|
||||||
@@ -749,15 +764,6 @@ ClassLoaderData::~ClassLoaderData() {
|
|||||||
_metaspace = NULL;
|
_metaspace = NULL;
|
||||||
delete m;
|
delete m;
|
||||||
}
|
}
|
||||||
// Clear all the JNI handles for methods
|
|
||||||
// These aren't deallocated and are going to look like a leak, but that's
|
|
||||||
// needed because we can't really get rid of jmethodIDs because we don't
|
|
||||||
// know when native code is going to stop using them. The spec says that
|
|
||||||
// they're "invalid" but existing programs likely rely on their being
|
|
||||||
// NULL after class unloading.
|
|
||||||
if (_jmethod_ids != NULL) {
|
|
||||||
Method::clear_jmethod_ids(this);
|
|
||||||
}
|
|
||||||
// Delete lock
|
// Delete lock
|
||||||
delete _metaspace_lock;
|
delete _metaspace_lock;
|
||||||
|
|
||||||
|
|||||||
@@ -2191,10 +2191,15 @@ bool Method::is_method_id(jmethodID mid) {
|
|||||||
Method* Method::checked_resolve_jmethod_id(jmethodID mid) {
|
Method* Method::checked_resolve_jmethod_id(jmethodID mid) {
|
||||||
if (mid == NULL) return NULL;
|
if (mid == NULL) return NULL;
|
||||||
Method* o = resolve_jmethod_id(mid);
|
Method* o = resolve_jmethod_id(mid);
|
||||||
if (o == NULL || o == JNIMethodBlock::_free_method || !((Metadata*)o)->is_method()) {
|
if (o == NULL || o == JNIMethodBlock::_free_method) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return o;
|
// Method should otherwise be valid. Assert for testing.
|
||||||
|
assert(is_valid_method(o), "should be valid jmethodid");
|
||||||
|
// If the method's class holder object is unreferenced, but not yet marked as
|
||||||
|
// unloaded, we need to return NULL here too because after a safepoint, its memory
|
||||||
|
// will be reclaimed.
|
||||||
|
return o->method_holder()->is_loader_alive() ? o : NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
void Method::set_on_stack(const bool value) {
|
void Method::set_on_stack(const bool value) {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -941,6 +941,14 @@ static bool can_overflow(const TypeInt* t, jint c) {
|
|||||||
(c > 0 && (java_add(t_hi, c) < t_hi)));
|
(c > 0 && (java_add(t_hi, c) < t_hi)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if addition of a long with type 't' and a constant 'c' can overflow.
|
||||||
|
static bool can_overflow(const TypeLong* t, jlong c) {
|
||||||
|
jlong t_lo = t->_lo;
|
||||||
|
jlong t_hi = t->_hi;
|
||||||
|
return ((c < 0 && (java_add(t_lo, c) > t_lo)) ||
|
||||||
|
(c > 0 && (java_add(t_hi, c) < t_hi)));
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//------------------------------Idealize---------------------------------------
|
//------------------------------Idealize---------------------------------------
|
||||||
// MINs show up in range-check loop limit calculations. Look for
|
// MINs show up in range-check loop limit calculations. Look for
|
||||||
@@ -1062,6 +1070,31 @@ const Type *MinINode::add_ring( const Type *t0, const Type *t1 ) const {
|
|||||||
//
|
//
|
||||||
// Note: we assume that SubL was already replaced by an AddL, and that the stride
|
// Note: we assume that SubL was already replaced by an AddL, and that the stride
|
||||||
// has its sign flipped: SubL(limit, stride) -> AddL(limit, -stride).
|
// has its sign flipped: SubL(limit, stride) -> AddL(limit, -stride).
|
||||||
|
//
|
||||||
|
// Proof MaxL collapsed version equivalent to original (MinL version similar):
|
||||||
|
// is_sub_con ensures that con1, con2 ∈ [min_int, 0[
|
||||||
|
//
|
||||||
|
// Original:
|
||||||
|
// - AddL2 underflow => x + con2 ∈ ]max_long - min_int, max_long], ALWAYS BAILOUT as x + con1 + con2 surely fails can_overflow (*)
|
||||||
|
// - AddL2 no underflow => x + con2 ∈ [min_long, max_long]
|
||||||
|
// - MaxL2 clamp => min_int
|
||||||
|
// - AddL1 underflow: NOT POSSIBLE: cannot underflow since min_int + con1 ∈ [2 * min_int, min_int] always > min_long
|
||||||
|
// - AddL1 no underflow => min_int + con1 ∈ [2 * min_int, min_int]
|
||||||
|
// - MaxL1 clamp => min_int (RESULT 1)
|
||||||
|
// - MaxL1 no clamp: NOT POSSIBLE: min_int + con1 ∈ [2 * min_int, min_int] always <= min_int, so clamp always taken
|
||||||
|
// - MaxL2 no clamp => x + con2 ∈ [min_int, max_long]
|
||||||
|
// - AddL1 underflow: NOT POSSIBLE: cannot underflow since x + con2 + con1 ∈ [2 * min_int, max_long] always > min_long
|
||||||
|
// - AddL1 no underflow => x + con2 + con1 ∈ [2 * min_int, max_long]
|
||||||
|
// - MaxL1 clamp => min_int (RESULT 2)
|
||||||
|
// - MaxL1 no clamp => x + con2 + con1 ∈ ]min_int, max_long] (RESULT 3)
|
||||||
|
//
|
||||||
|
// Collapsed:
|
||||||
|
// - AddL2 (cannot underflow) => con2 + con1 ∈ [2 * min_int, 0]
|
||||||
|
// - AddL1 underflow: NOT POSSIBLE: would have bailed out at can_overflow (*)
|
||||||
|
// - AddL1 no underflow => x + con2 + con1 ∈ [min_long, max_long]
|
||||||
|
// - MaxL clamp => min_int (RESULT 1 and RESULT 2)
|
||||||
|
// - MaxL no clamp => x + con2 + con1 ∈ ]min_int, max_long] (RESULT 3)
|
||||||
|
//
|
||||||
static bool is_clamp(PhaseGVN* phase, Node* n, Node* c) {
|
static bool is_clamp(PhaseGVN* phase, Node* n, Node* c) {
|
||||||
// Check that the two clamps have the correct values.
|
// Check that the two clamps have the correct values.
|
||||||
jlong clamp = (n->Opcode() == Op_MaxL) ? min_jint : max_jint;
|
jlong clamp = (n->Opcode() == Op_MaxL) ? min_jint : max_jint;
|
||||||
@@ -1093,6 +1126,10 @@ Node* fold_subI_no_underflow_pattern(Node* n, PhaseGVN* phase) {
|
|||||||
Node* x = add2->in(1);
|
Node* x = add2->in(1);
|
||||||
Node* con2 = add2->in(2);
|
Node* con2 = add2->in(2);
|
||||||
if (is_sub_con(phase, n, con2)) {
|
if (is_sub_con(phase, n, con2)) {
|
||||||
|
// Collapsed graph not equivalent if potential over/underflow -> bailing out (*)
|
||||||
|
if (can_overflow(phase->type(x)->is_long(), con1->get_long() + con2->get_long())) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
Node* new_con = phase->transform(new AddLNode(con1, con2));
|
Node* new_con = phase->transform(new AddLNode(con1, con2));
|
||||||
Node* new_sub = phase->transform(new AddLNode(x, new_con));
|
Node* new_sub = phase->transform(new AddLNode(x, new_con));
|
||||||
n->set_req_X(1, new_sub, phase);
|
n->set_req_X(1, new_sub, phase);
|
||||||
|
|||||||
@@ -1455,8 +1455,8 @@ Node* Node::last_out(DUIterator_Last& i) const {
|
|||||||
class SimpleDUIterator : public StackObj {
|
class SimpleDUIterator : public StackObj {
|
||||||
private:
|
private:
|
||||||
Node* node;
|
Node* node;
|
||||||
DUIterator_Fast i;
|
|
||||||
DUIterator_Fast imax;
|
DUIterator_Fast imax;
|
||||||
|
DUIterator_Fast i;
|
||||||
public:
|
public:
|
||||||
SimpleDUIterator(Node* n): node(n), i(n->fast_outs(imax)) {}
|
SimpleDUIterator(Node* n): node(n), i(n->fast_outs(imax)) {}
|
||||||
bool has_next() { return i < imax; }
|
bool has_next() { return i < imax; }
|
||||||
|
|||||||
@@ -1489,44 +1489,86 @@ Node *BoolNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
|||||||
return new BoolNode( ncmp, _test.negate() );
|
return new BoolNode( ncmp, _test.negate() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change ((x & m) u<= m) or ((m & x) u<= m) to always true
|
// We use the following Lemmas/insights for the following two transformations (1) and (2):
|
||||||
// Same with ((x & m) u< m+1) and ((m & x) u< m+1)
|
// x & y <=u y, for any x and y (Lemma 1, masking always results in a smaller unsigned number)
|
||||||
|
// y <u y + 1 is always true if y != -1 (Lemma 2, (uint)(-1 + 1) == (uint)(UINT_MAX + 1) which overflows)
|
||||||
|
// y <u 0 is always false for any y (Lemma 3, 0 == UINT_MIN and nothing can be smaller than that)
|
||||||
|
//
|
||||||
|
// (1a) Always: Change ((x & m) <=u m ) or ((m & x) <=u m ) to always true (true by Lemma 1)
|
||||||
|
// (1b) If m != -1: Change ((x & m) <u m + 1) or ((m & x) <u m + 1) to always true:
|
||||||
|
// x & m <=u m is always true // (Lemma 1)
|
||||||
|
// x & m <=u m <u m + 1 is always true // (Lemma 2: m <u m + 1, if m != -1)
|
||||||
|
//
|
||||||
|
// A counter example for (1b), if we allowed m == -1:
|
||||||
|
// (x & m) <u m + 1
|
||||||
|
// (x & -1) <u 0
|
||||||
|
// x <u 0
|
||||||
|
// which is false for any x (Lemma 3)
|
||||||
if (cop == Op_CmpU &&
|
if (cop == Op_CmpU &&
|
||||||
cmp1_op == Op_AndI) {
|
cmp1_op == Op_AndI) {
|
||||||
Node* bound = NULL;
|
Node* m = NULL;
|
||||||
if (_test._test == BoolTest::le) {
|
if (_test._test == BoolTest::le) {
|
||||||
bound = cmp2;
|
// (1a) "((x & m) <=u m)", cmp2 = m
|
||||||
|
m = cmp2;
|
||||||
} else if (_test._test == BoolTest::lt &&
|
} else if (_test._test == BoolTest::lt &&
|
||||||
cmp2->Opcode() == Op_AddI &&
|
cmp2->Opcode() == Op_AddI &&
|
||||||
cmp2->in(2)->find_int_con(0) == 1) {
|
cmp2->in(2)->find_int_con(0) == 1) {
|
||||||
bound = cmp2->in(1);
|
// (1b) "(x & m) <u m + 1" and "(m & x) <u m + 1", cmp2 = m + 1
|
||||||
|
Node* rhs_m = cmp2->in(1);
|
||||||
|
const TypeInt* rhs_m_type = phase->type(rhs_m)->isa_int();
|
||||||
|
if (rhs_m_type->_lo > -1 || rhs_m_type->_hi < -1) {
|
||||||
|
// Exclude any case where m == -1 is possible.
|
||||||
|
m = rhs_m;
|
||||||
}
|
}
|
||||||
if (cmp1->in(2) == bound || cmp1->in(1) == bound) {
|
}
|
||||||
|
if (cmp1->in(2) == m || cmp1->in(1) == m) {
|
||||||
return ConINode::make(1);
|
return ConINode::make(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change ((x & (m - 1)) u< m) into (m > 0)
|
// (2) Change ((x & (m - 1)) <u m) or (((m - 1) & x) <u m) to (m >u 0)
|
||||||
// This is the off-by-one variant of the above
|
// This is the off-by-one variant of the above.
|
||||||
|
//
|
||||||
|
// We now prove that this replacement is correct. This is the same as proving
|
||||||
|
// "m >u 0" if and only if "x & (m - 1) <u m", i.e. "m >u 0 <=> x & (m - 1) <u m"
|
||||||
|
//
|
||||||
|
// We use (Lemma 1) and (Lemma 3) from above.
|
||||||
|
//
|
||||||
|
// Case "x & (m - 1) <u m => m >u 0":
|
||||||
|
// We prove this by contradiction:
|
||||||
|
// Assume m <=u 0 which is equivalent to m == 0:
|
||||||
|
// and thus
|
||||||
|
// x & (m - 1) <u m = 0 // m == 0
|
||||||
|
// y <u 0 // y = x & (m - 1)
|
||||||
|
// by Lemma 3, this is always false, i.e. a contradiction to our assumption.
|
||||||
|
//
|
||||||
|
// Case "m >u 0 => x & (m - 1) <u m":
|
||||||
|
// x & (m - 1) <=u (m - 1) // (Lemma 1)
|
||||||
|
// x & (m - 1) <=u (m - 1) <u m // Using assumption m >u 0, no underflow of "m - 1"
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Note that the signed version of "m > 0":
|
||||||
|
// m > 0 <=> x & (m - 1) <u m
|
||||||
|
// does not hold:
|
||||||
|
// Assume m == -1 and x == -1:
|
||||||
|
// x & (m - 1) <u m
|
||||||
|
// -1 & -2 <u -1
|
||||||
|
// -2 <u -1
|
||||||
|
// UINT_MAX - 1 <u UINT_MAX // Signed to unsigned numbers
|
||||||
|
// which is true while
|
||||||
|
// m > 0
|
||||||
|
// is false which is a contradiction.
|
||||||
if (cop == Op_CmpU &&
|
if (cop == Op_CmpU &&
|
||||||
_test._test == BoolTest::lt &&
|
_test._test == BoolTest::lt &&
|
||||||
cmp1_op == Op_AndI) {
|
cmp1_op == Op_AndI) {
|
||||||
Node* l = cmp1->in(1);
|
Node* m = cmp2; // RHS: m
|
||||||
Node* r = cmp1->in(2);
|
for (int add_idx = 1; add_idx <= 2; add_idx++) { // LHS: "(m + (-1)) & x" or "x & (m + (-1))"?
|
||||||
for (int repeat = 0; repeat < 2; repeat++) {
|
Node* maybe_m_minus_1 = cmp1->in(add_idx);
|
||||||
bool match = r->Opcode() == Op_AddI && r->in(2)->find_int_con(0) == -1 &&
|
if (maybe_m_minus_1->Opcode() == Op_AddI &&
|
||||||
r->in(1) == cmp2;
|
maybe_m_minus_1->in(2)->find_int_con(0) == -1 &&
|
||||||
if (match) {
|
maybe_m_minus_1->in(1) == m) {
|
||||||
// arraylength known to be non-negative, so a (arraylength != 0) is sufficient,
|
Node* m_cmpu_0 = phase->transform(new CmpUNode(m, phase->intcon(0)));
|
||||||
// but to be compatible with the array range check pattern, use (arraylength u> 0)
|
return new BoolNode(m_cmpu_0, BoolTest::gt);
|
||||||
Node* ncmp = cmp2->Opcode() == Op_LoadRange
|
|
||||||
? phase->transform(new CmpUNode(cmp2, phase->intcon(0)))
|
|
||||||
: phase->transform(new CmpINode(cmp2, phase->intcon(0)));
|
|
||||||
return new BoolNode(ncmp, BoolTest::gt);
|
|
||||||
} else {
|
|
||||||
// commute and try again
|
|
||||||
l = cmp1->in(2);
|
|
||||||
r = cmp1->in(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -384,7 +384,7 @@ public final class RSACipher extends CipherSpi {
|
|||||||
byte[] decryptBuffer = RSACore.convert(buffer, 0, bufOfs);
|
byte[] decryptBuffer = RSACore.convert(buffer, 0, bufOfs);
|
||||||
paddingCopy = RSACore.rsa(decryptBuffer, privateKey, false);
|
paddingCopy = RSACore.rsa(decryptBuffer, privateKey, false);
|
||||||
result = padding.unpad(paddingCopy);
|
result = padding.unpad(paddingCopy);
|
||||||
if (result == null && !forTlsPremasterSecret) {
|
if (!forTlsPremasterSecret && result == null) {
|
||||||
throw new BadPaddingException
|
throw new BadPaddingException
|
||||||
("Padding error in decryption");
|
("Padding error in decryption");
|
||||||
}
|
}
|
||||||
@@ -404,6 +404,34 @@ public final class RSACipher extends CipherSpi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TLS master secret decode version of the doFinal() method.
|
||||||
|
private byte[] doFinalForTls(int clientVersion, int serverVersion)
|
||||||
|
throws BadPaddingException, IllegalBlockSizeException {
|
||||||
|
if (bufOfs > buffer.length) {
|
||||||
|
throw new IllegalBlockSizeException("Data must not be longer "
|
||||||
|
+ "than " + buffer.length + " bytes");
|
||||||
|
}
|
||||||
|
byte[] paddingCopy = null;
|
||||||
|
byte[] result = null;
|
||||||
|
try {
|
||||||
|
byte[] decryptBuffer = RSACore.convert(buffer, 0, bufOfs);
|
||||||
|
|
||||||
|
paddingCopy = RSACore.rsa(decryptBuffer, privateKey, false);
|
||||||
|
result = padding.unpadForTls(paddingCopy, clientVersion,
|
||||||
|
serverVersion);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
} finally {
|
||||||
|
Arrays.fill(buffer, 0, bufOfs, (byte)0);
|
||||||
|
bufOfs = 0;
|
||||||
|
if (paddingCopy != null
|
||||||
|
&& paddingCopy != buffer // already cleaned
|
||||||
|
&& paddingCopy != result) { // DO NOT CLEAN, THIS IS RESULT
|
||||||
|
Arrays.fill(paddingCopy, (byte)0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// see JCE spec
|
// see JCE spec
|
||||||
protected byte[] engineUpdate(byte[] in, int inOfs, int inLen) {
|
protected byte[] engineUpdate(byte[] in, int inOfs, int inLen) {
|
||||||
update(in, inOfs, inLen);
|
update(in, inOfs, inLen);
|
||||||
@@ -476,38 +504,34 @@ public final class RSACipher extends CipherSpi {
|
|||||||
byte[] encoded = null;
|
byte[] encoded = null;
|
||||||
|
|
||||||
update(wrappedKey, 0, wrappedKey.length);
|
update(wrappedKey, 0, wrappedKey.length);
|
||||||
try {
|
|
||||||
encoded = doFinal();
|
|
||||||
} catch (BadPaddingException | IllegalBlockSizeException e) {
|
|
||||||
// BadPaddingException cannot happen for TLS RSA unwrap.
|
|
||||||
// In that case, padding error is indicated by returning null.
|
|
||||||
// IllegalBlockSizeException cannot happen in any case,
|
|
||||||
// because of the length check above.
|
|
||||||
throw new InvalidKeyException("Unwrapping failed", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (isTlsRsaPremasterSecret) {
|
if (isTlsRsaPremasterSecret) {
|
||||||
if (!forTlsPremasterSecret) {
|
if (!forTlsPremasterSecret) {
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"No TlsRsaPremasterSecretParameterSpec specified");
|
"No TlsRsaPremasterSecretParameterSpec specified");
|
||||||
}
|
}
|
||||||
|
TlsRsaPremasterSecretParameterSpec parameterSpec =
|
||||||
// polish the TLS premaster secret
|
(TlsRsaPremasterSecretParameterSpec) spec;
|
||||||
encoded = KeyUtil.checkTlsPreMasterSecretKey(
|
encoded = doFinalForTls(parameterSpec.getClientVersion(),
|
||||||
((TlsRsaPremasterSecretParameterSpec) spec).getClientVersion(),
|
parameterSpec.getServerVersion());
|
||||||
((TlsRsaPremasterSecretParameterSpec) spec).getServerVersion(),
|
} else {
|
||||||
random, encoded, encoded == null);
|
encoded = doFinal();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ConstructKeys.constructKey(encoded, algorithm, type);
|
return ConstructKeys.constructKey(encoded, algorithm, type);
|
||||||
|
|
||||||
|
} catch (BadPaddingException | IllegalBlockSizeException e) {
|
||||||
|
// BadPaddingException cannot happen for TLS RSA unwrap.
|
||||||
|
// Neither padding error nor server version error is indicated
|
||||||
|
// for TLS, but a fake unwrapped value is returned.
|
||||||
|
// IllegalBlockSizeException cannot happen in any case,
|
||||||
|
// because of the length check above.
|
||||||
|
throw new InvalidKeyException("Unwrapping failed", e);
|
||||||
} finally {
|
} finally {
|
||||||
if (encoded != null) {
|
if (encoded != null) {
|
||||||
Arrays.fill(encoded, (byte) 0);
|
Arrays.fill(encoded, (byte) 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// see JCE spec
|
// see JCE spec
|
||||||
protected int engineGetKeySize(Key key) throws InvalidKeyException {
|
protected int engineGetKeySize(Key key) throws InvalidKeyException {
|
||||||
RSAKey rsaKey = RSAKeyFactory.toRSAKey(key);
|
RSAKey rsaKey = RSAKeyFactory.toRSAKey(key);
|
||||||
|
|||||||
@@ -424,7 +424,8 @@ class JarFile extends ZipFile {
|
|||||||
jv = new JarVerifier(manEntry.getName(), b);
|
jv = new JarVerifier(manEntry.getName(), b);
|
||||||
} else {
|
} else {
|
||||||
if (JarVerifier.debug != null) {
|
if (JarVerifier.debug != null) {
|
||||||
JarVerifier.debug.println("Multiple MANIFEST.MF found. Treat JAR file as unsigned");
|
JarVerifier.debug.println(
|
||||||
|
JarVerifier.MULTIPLE_MANIFEST_WARNING);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,7 +98,17 @@ class JarInputStream extends ZipInputStream {
|
|||||||
jv = new JarVerifier(e.getName(), bytes);
|
jv = new JarVerifier(e.getName(), bytes);
|
||||||
mev = new ManifestEntryVerifier(man, jv.manifestName);
|
mev = new ManifestEntryVerifier(man, jv.manifestName);
|
||||||
}
|
}
|
||||||
return (JarEntry)super.getNextEntry();
|
JarEntry nextEntry = (JarEntry)super.getNextEntry();
|
||||||
|
if (nextEntry != null &&
|
||||||
|
JarFile.MANIFEST_NAME.equalsIgnoreCase(nextEntry.getName())) {
|
||||||
|
if (JarVerifier.debug != null) {
|
||||||
|
JarVerifier.debug.println(JarVerifier.MULTIPLE_MANIFEST_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
jv = null;
|
||||||
|
mev = null;
|
||||||
|
}
|
||||||
|
return nextEntry;
|
||||||
}
|
}
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -44,6 +44,9 @@ import sun.security.util.Debug;
|
|||||||
*/
|
*/
|
||||||
class JarVerifier {
|
class JarVerifier {
|
||||||
|
|
||||||
|
public static final String MULTIPLE_MANIFEST_WARNING =
|
||||||
|
"WARNING: Multiple MANIFEST.MF found. Treat JAR file as unsigned.";
|
||||||
|
|
||||||
/* Are we debugging ? */
|
/* Are we debugging ? */
|
||||||
static final Debug debug = Debug.getInstance("jar");
|
static final Debug debug = Debug.getInstance("jar");
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,26 @@ import java.io.IOException;
|
|||||||
*/
|
*/
|
||||||
public
|
public
|
||||||
class DeflaterOutputStream extends FilterOutputStream {
|
class DeflaterOutputStream extends FilterOutputStream {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The default size of the output buffer
|
||||||
|
*/
|
||||||
|
static final int DEFAULT_BUF_SIZE = 512;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When calling Deflater.deflate() with Deflater.SYNC_FLUSH or Deflater.FULL_FLUSH,
|
||||||
|
* the callers are expected to ensure that the size of the buffer is greater than 6.
|
||||||
|
* This expectation comes from the underlying zlib library which in its zlib.h
|
||||||
|
* states:
|
||||||
|
* "If deflate returns with avail_out == 0, this function must be called again
|
||||||
|
* with the same value of the flush parameter and more output space (updated
|
||||||
|
* avail_out), until the flush is complete (deflate returns with non-zero
|
||||||
|
* avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
|
||||||
|
* avail_out is greater than six when the flush marker begins, in order to avoid
|
||||||
|
* repeated flush markers upon calling deflate() again when avail_out == 0."
|
||||||
|
*/
|
||||||
|
private static final int SYNC_FLUSH_MIN_BUF_SIZE = 7;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compressor for this stream.
|
* Compressor for this stream.
|
||||||
*/
|
*/
|
||||||
@@ -124,7 +144,7 @@ class DeflaterOutputStream extends FilterOutputStream {
|
|||||||
public DeflaterOutputStream(OutputStream out,
|
public DeflaterOutputStream(OutputStream out,
|
||||||
Deflater def,
|
Deflater def,
|
||||||
boolean syncFlush) {
|
boolean syncFlush) {
|
||||||
this(out, def, 512, syncFlush);
|
this(out, def, DEFAULT_BUF_SIZE, syncFlush);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -139,7 +159,7 @@ class DeflaterOutputStream extends FilterOutputStream {
|
|||||||
* @param def the compressor ("deflater")
|
* @param def the compressor ("deflater")
|
||||||
*/
|
*/
|
||||||
public DeflaterOutputStream(OutputStream out, Deflater def) {
|
public DeflaterOutputStream(OutputStream out, Deflater def) {
|
||||||
this(out, def, 512, false);
|
this(out, def, DEFAULT_BUF_SIZE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean usesDefaultDeflater = false;
|
boolean usesDefaultDeflater = false;
|
||||||
@@ -159,7 +179,7 @@ class DeflaterOutputStream extends FilterOutputStream {
|
|||||||
* @since 1.7
|
* @since 1.7
|
||||||
*/
|
*/
|
||||||
public DeflaterOutputStream(OutputStream out, boolean syncFlush) {
|
public DeflaterOutputStream(OutputStream out, boolean syncFlush) {
|
||||||
this(out, new Deflater(), 512, syncFlush);
|
this(out, new Deflater(), DEFAULT_BUF_SIZE, syncFlush);
|
||||||
usesDefaultDeflater = true;
|
usesDefaultDeflater = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,6 +202,7 @@ class DeflaterOutputStream extends FilterOutputStream {
|
|||||||
* @param b the byte to be written
|
* @param b the byte to be written
|
||||||
* @exception IOException if an I/O error has occurred
|
* @exception IOException if an I/O error has occurred
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void write(int b) throws IOException {
|
public void write(int b) throws IOException {
|
||||||
byte[] buf = new byte[1];
|
byte[] buf = new byte[1];
|
||||||
buf[0] = (byte)(b & 0xff);
|
buf[0] = (byte)(b & 0xff);
|
||||||
@@ -196,6 +217,7 @@ class DeflaterOutputStream extends FilterOutputStream {
|
|||||||
* @param len the length of the data
|
* @param len the length of the data
|
||||||
* @exception IOException if an I/O error has occurred
|
* @exception IOException if an I/O error has occurred
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void write(byte[] b, int off, int len) throws IOException {
|
public void write(byte[] b, int off, int len) throws IOException {
|
||||||
if (def.finished()) {
|
if (def.finished()) {
|
||||||
throw new IOException("write beyond end of stream");
|
throw new IOException("write beyond end of stream");
|
||||||
@@ -239,6 +261,7 @@ class DeflaterOutputStream extends FilterOutputStream {
|
|||||||
* underlying stream.
|
* underlying stream.
|
||||||
* @exception IOException if an I/O error has occurred
|
* @exception IOException if an I/O error has occurred
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
if (!closed) {
|
if (!closed) {
|
||||||
try {
|
try {
|
||||||
@@ -278,13 +301,20 @@ class DeflaterOutputStream extends FilterOutputStream {
|
|||||||
*
|
*
|
||||||
* @since 1.7
|
* @since 1.7
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void flush() throws IOException {
|
public void flush() throws IOException {
|
||||||
if (syncFlush && !def.finished()) {
|
if (syncFlush && !def.finished()) {
|
||||||
int len = 0;
|
int len = 0;
|
||||||
while ((len = def.deflate(buf, 0, buf.length, Deflater.SYNC_FLUSH)) > 0)
|
// For SYNC_FLUSH, the Deflater.deflate() expects the callers
|
||||||
{
|
// to use a buffer whose length is greater than 6 to avoid
|
||||||
out.write(buf, 0, len);
|
// flush marker (5 bytes) being repeatedly output to the output buffer
|
||||||
if (len < buf.length)
|
// every time it is invoked.
|
||||||
|
final byte[] flushBuf = buf.length < SYNC_FLUSH_MIN_BUF_SIZE
|
||||||
|
? new byte[DEFAULT_BUF_SIZE]
|
||||||
|
: buf;
|
||||||
|
while ((len = def.deflate(flushBuf, 0, flushBuf.length, Deflater.SYNC_FLUSH)) > 0) {
|
||||||
|
out.write(flushBuf, 0, len);
|
||||||
|
if (len < flushBuf.length)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ class GZIPOutputStream extends DeflaterOutputStream {
|
|||||||
* @exception IOException If an I/O error has occurred.
|
* @exception IOException If an I/O error has occurred.
|
||||||
*/
|
*/
|
||||||
public GZIPOutputStream(OutputStream out) throws IOException {
|
public GZIPOutputStream(OutputStream out) throws IOException {
|
||||||
this(out, 512, false);
|
this(out, DeflaterOutputStream.DEFAULT_BUF_SIZE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -129,7 +129,7 @@ class GZIPOutputStream extends DeflaterOutputStream {
|
|||||||
public GZIPOutputStream(OutputStream out, boolean syncFlush)
|
public GZIPOutputStream(OutputStream out, boolean syncFlush)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
this(out, 512, syncFlush);
|
this(out, DeflaterOutputStream.DEFAULT_BUF_SIZE, syncFlush);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -327,48 +327,103 @@ public final class RSAPadding {
|
|||||||
* Note that we want to make it a constant-time operation
|
* Note that we want to make it a constant-time operation
|
||||||
*/
|
*/
|
||||||
private byte[] unpadV15(byte[] padded) {
|
private byte[] unpadV15(byte[] padded) {
|
||||||
int k = 0;
|
int paddedLength = padded.length;
|
||||||
boolean bp = false;
|
|
||||||
|
|
||||||
if (padded[k++] != 0) {
|
if (paddedLength < 2) {
|
||||||
bp = true;
|
return null;
|
||||||
}
|
}
|
||||||
if (padded[k++] != type) {
|
|
||||||
bp = true;
|
// The following check ensures that the lead byte is zero and
|
||||||
}
|
// the second byte is equivalent to the padding type. The
|
||||||
int p = 0;
|
// bp (bad padding) variable throughout this unpadding process will
|
||||||
while (k < padded.length) {
|
// be updated and remain 0 if good padding, 1 if bad.
|
||||||
|
int p0 = padded[0];
|
||||||
|
int p1 = padded[1];
|
||||||
|
int bp = (-(p0 & 0xff) | ((p1 - type) | (type - p1))) >>> 31;
|
||||||
|
|
||||||
|
int padLen = 0;
|
||||||
|
int k = 2;
|
||||||
|
// Walk through the random, nonzero padding bytes. For each padding
|
||||||
|
// byte bp and padLen will remain zero. When the end-of-padding
|
||||||
|
// byte (0x00) is reached then padLen will be set to the index of the
|
||||||
|
// first byte of the message content.
|
||||||
|
while (k < paddedLength) {
|
||||||
int b = padded[k++] & 0xff;
|
int b = padded[k++] & 0xff;
|
||||||
if ((b == 0) && (p == 0)) {
|
padLen += (k * (1 - ((-(b | padLen)) >>> 31)));
|
||||||
p = k;
|
if (k == paddedLength) {
|
||||||
|
bp = bp | (1 - ((-padLen) >>> 31));
|
||||||
}
|
}
|
||||||
if ((k == padded.length) && (p == 0)) {
|
bp = bp | (1 - (-(((type - PAD_BLOCKTYPE_1) & 0xff) |
|
||||||
bp = true;
|
padLen | (1 - ((b - 0xff) >>> 31))) >>> 31));
|
||||||
}
|
|
||||||
if ((type == PAD_BLOCKTYPE_1) && (b != 0xff) &&
|
|
||||||
(p == 0)) {
|
|
||||||
bp = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int n = padded.length - p;
|
|
||||||
if (n > maxDataSize) {
|
|
||||||
bp = true;
|
|
||||||
}
|
}
|
||||||
|
int n = paddedLength - padLen;
|
||||||
|
// So long as n <= maxDataSize, bp will remain zero
|
||||||
|
bp = bp | ((maxDataSize - n) >>> 31);
|
||||||
|
|
||||||
// copy useless padding array for a constant-time method
|
// copy useless padding array for a constant-time method
|
||||||
byte[] padding = new byte[p];
|
byte[] padding = new byte[padLen + 2];
|
||||||
System.arraycopy(padded, 0, padding, 0, p);
|
for (int i = 0; i < padLen; i++) {
|
||||||
|
padding[i] = padded[i];
|
||||||
|
}
|
||||||
|
|
||||||
byte[] data = new byte[n];
|
byte[] data = new byte[n];
|
||||||
System.arraycopy(padded, p, data, 0, n);
|
for (int i = 0; i < n; i++) {
|
||||||
|
data[i] = padded[padLen + i];
|
||||||
|
}
|
||||||
|
|
||||||
if (bp) {
|
if ((bp | padding[bp]) != 0) {
|
||||||
|
// using the array padding here hoping that this way
|
||||||
|
// the compiler does not eliminate the above useless copy
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public byte[] unpadForTls(byte[] padded, int clientVersion,
|
||||||
|
int serverVersion) {
|
||||||
|
int paddedLength = padded.length;
|
||||||
|
|
||||||
|
// bp is positive if the padding is bad and 0 if it is good so far
|
||||||
|
int bp = (((int) padded[0] | ((int)padded[1] - PAD_BLOCKTYPE_2)) &
|
||||||
|
0xFFF);
|
||||||
|
|
||||||
|
int k = 2;
|
||||||
|
while (k < paddedLength - 49) {
|
||||||
|
int b = padded[k++] & 0xFF;
|
||||||
|
bp = bp | (1 - (-b >>> 31)); // if (padded[k] == 0) bp |= 1;
|
||||||
|
}
|
||||||
|
bp |= ((int)padded[k++] & 0xFF);
|
||||||
|
int encodedVersion = ((padded[k] & 0xFF) << 8) | (padded[k + 1] & 0xFF);
|
||||||
|
|
||||||
|
int bv1 = clientVersion - encodedVersion;
|
||||||
|
bv1 |= -bv1;
|
||||||
|
int bv3 = serverVersion - encodedVersion;
|
||||||
|
bv3 |= -bv3;
|
||||||
|
int bv2 = (0x301 - clientVersion);
|
||||||
|
|
||||||
|
bp |= ((bv1 & (bv2 | bv3)) >>> 28);
|
||||||
|
|
||||||
|
byte[] data = Arrays.copyOfRange(padded, paddedLength - 48,
|
||||||
|
paddedLength);
|
||||||
|
if (random == null) {
|
||||||
|
random = JCAUtil.getSecureRandom();
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] fake = new byte[48];
|
||||||
|
random.nextBytes(fake);
|
||||||
|
|
||||||
|
bp = (-bp >> 24);
|
||||||
|
|
||||||
|
// Now bp is 0 if the padding and version number were good and
|
||||||
|
// -1 otherwise.
|
||||||
|
for (int i = 0; i < 48; i++) {
|
||||||
|
data[i] = (byte)((~bp & data[i]) | (bp & fake[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PKCS#1 v2.0 OAEP padding (MGF1).
|
* PKCS#1 v2.0 OAEP padding (MGF1).
|
||||||
* Paragraph references refer to PKCS#1 v2.1 (June 14, 2002)
|
* Paragraph references refer to PKCS#1 v2.1 (June 14, 2002)
|
||||||
|
|||||||
@@ -288,19 +288,31 @@ public final class KeyUtil {
|
|||||||
tmp = encoded;
|
tmp = encoded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// At this point tmp.length is 48
|
||||||
int encodedVersion =
|
int encodedVersion =
|
||||||
((tmp[0] & 0xFF) << 8) | (tmp[1] & 0xFF);
|
((tmp[0] & 0xFF) << 8) | (tmp[1] & 0xFF);
|
||||||
int check1 = 0;
|
|
||||||
int check2 = 0;
|
// The following code is a time-constant version of
|
||||||
int check3 = 0;
|
// if ((clientVersion != encodedVersion) ||
|
||||||
if (clientVersion != encodedVersion) check1 = 1;
|
// ((clientVersion > 0x301) && (serverVersion != encodedVersion))) {
|
||||||
if (clientVersion > 0x0301) check2 = 1;
|
// return replacer;
|
||||||
if (serverVersion != encodedVersion) check3 = 1;
|
// } else { return tmp; }
|
||||||
if ((check1 & (check2 | check3)) == 1) {
|
int check1 = (clientVersion - encodedVersion) |
|
||||||
return replacer;
|
(encodedVersion - clientVersion);
|
||||||
} else {
|
int check2 = 0x0301 - clientVersion;
|
||||||
return tmp;
|
int check3 = (serverVersion - encodedVersion) |
|
||||||
|
(encodedVersion - serverVersion);
|
||||||
|
|
||||||
|
check1 = (check1 & (check2 | check3)) >> 24;
|
||||||
|
|
||||||
|
// Now check1 is either 0 or -1
|
||||||
|
check2 = ~check1;
|
||||||
|
|
||||||
|
for (int i = 0; i < 48; i++) {
|
||||||
|
tmp[i] = (byte) ((tmp[i] & check2) | (replacer[i] & check1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -501,6 +501,8 @@ public class SignatureFileVerifier {
|
|||||||
boolean attrsVerified = true;
|
boolean attrsVerified = true;
|
||||||
// If only weak algorithms are used.
|
// If only weak algorithms are used.
|
||||||
boolean weakAlgs = true;
|
boolean weakAlgs = true;
|
||||||
|
// If only unsupported algorithms are used.
|
||||||
|
boolean unsupportedAlgs = true;
|
||||||
// If a ATTR_DIGEST entry is found.
|
// If a ATTR_DIGEST entry is found.
|
||||||
boolean validEntry = false;
|
boolean validEntry = false;
|
||||||
|
|
||||||
@@ -525,6 +527,7 @@ public class SignatureFileVerifier {
|
|||||||
|
|
||||||
MessageDigest digest = getDigest(algorithm);
|
MessageDigest digest = getDigest(algorithm);
|
||||||
if (digest != null) {
|
if (digest != null) {
|
||||||
|
unsupportedAlgs = false;
|
||||||
ManifestDigester.Entry mde = md.getMainAttsEntry(false);
|
ManifestDigester.Entry mde = md.getMainAttsEntry(false);
|
||||||
if (mde == null) {
|
if (mde == null) {
|
||||||
throw new SignatureException("Manifest Main Attribute check " +
|
throw new SignatureException("Manifest Main Attribute check " +
|
||||||
@@ -567,12 +570,22 @@ public class SignatureFileVerifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (validEntry) {
|
||||||
// If there were only weak algorithms entries used, throw an exception.
|
// If there were only weak algorithms entries used, throw an exception.
|
||||||
if (validEntry && weakAlgs) {
|
if (weakAlgs) {
|
||||||
throw new SignatureException("Manifest Main Attribute check " +
|
throw new SignatureException(
|
||||||
"failed (" + ATTR_DIGEST + "). " +
|
"Manifest Main Attribute check "
|
||||||
"Disabled algorithm(s) used: " +
|
+ "failed (" + ATTR_DIGEST + "). "
|
||||||
getWeakAlgorithms(ATTR_DIGEST));
|
+ "Disabled algorithm(s) used: "
|
||||||
|
+ getWeakAlgorithms(ATTR_DIGEST));
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there were only unsupported algorithms entries used, throw an exception.
|
||||||
|
if (unsupportedAlgs) {
|
||||||
|
throw new SignatureException(
|
||||||
|
"Manifest Main Attribute check failed ("
|
||||||
|
+ ATTR_DIGEST + "). Unsupported algorithm(s) used");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// this method returns 'true' if either:
|
// this method returns 'true' if either:
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -69,6 +69,22 @@ enum CADistrustPolicy {
|
|||||||
}
|
}
|
||||||
EntrustTLSPolicy.checkDistrust(chain);
|
EntrustTLSPolicy.checkDistrust(chain);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Distrust TLS Server certificates anchored by a CAMERFIRMA root CA and
|
||||||
|
* issued after April 15, 2025. If enabled, this policy is currently
|
||||||
|
* enforced by the PKIX and SunX509 TrustManager implementations
|
||||||
|
* of the SunJSSE provider implementation.
|
||||||
|
*/
|
||||||
|
CAMERFIRMA_TLS {
|
||||||
|
void checkDistrust(String variant, X509Certificate[] chain)
|
||||||
|
throws ValidatorException {
|
||||||
|
if (!variant.equals(Validator.VAR_TLS_SERVER)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CamerfirmaTLSPolicy.checkDistrust(chain);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||||
|
* or visit www.oracle.com if you need additional information or have any
|
||||||
|
* questions.
|
||||||
|
*/
|
||||||
|
package sun.security.validator;
|
||||||
|
|
||||||
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.Month;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import sun.security.util.Debug;
|
||||||
|
import sun.security.x509.X509CertImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class checks if Camerfirma issued TLS Server certificates should be
|
||||||
|
* restricted.
|
||||||
|
*/
|
||||||
|
final class CamerfirmaTLSPolicy {
|
||||||
|
|
||||||
|
private static final Debug debug = Debug.getInstance("certpath");
|
||||||
|
|
||||||
|
// SHA-256 certificate fingerprint of distrusted root for TLS
|
||||||
|
// cacerts alias: camerfirmachambersca
|
||||||
|
// DN: CN=Chambers of Commerce Root - 2008,
|
||||||
|
// O=AC Camerfirma S.A., SERIALNUMBER=A82743287,
|
||||||
|
// L=Madrid (see current address at www.camerfirma.com/address),
|
||||||
|
// C=EU
|
||||||
|
private static final String FINGERPRINT =
|
||||||
|
"063E4AFAC491DFD332F3089B8542E94617D893D7FE944E10A7937EE29D9693C0";
|
||||||
|
|
||||||
|
// Any TLS Server certificate that is anchored by one of the Camerfirma
|
||||||
|
// roots above and is issued after this date will be distrusted.
|
||||||
|
private static final LocalDate APRIL_15_2025 =
|
||||||
|
LocalDate.of(2025, Month.APRIL, 15);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method assumes the eeCert is a TLS Server Cert and chains back to
|
||||||
|
* the anchor.
|
||||||
|
*
|
||||||
|
* @param chain the end-entity's certificate chain. The end entity cert
|
||||||
|
* is at index 0, the trust anchor at index n-1.
|
||||||
|
* @throws ValidatorException if the certificate is distrusted
|
||||||
|
*/
|
||||||
|
static void checkDistrust(X509Certificate[] chain)
|
||||||
|
throws ValidatorException {
|
||||||
|
X509Certificate anchor = chain[chain.length-1];
|
||||||
|
String fp = fingerprint(anchor);
|
||||||
|
if (fp == null) {
|
||||||
|
throw new ValidatorException("Cannot generate fingerprint for "
|
||||||
|
+ "trust anchor of TLS server certificate");
|
||||||
|
}
|
||||||
|
if (FINGERPRINT.equalsIgnoreCase(fp)) {
|
||||||
|
Date notBefore = chain[0].getNotBefore();
|
||||||
|
LocalDate ldNotBefore = LocalDate.ofInstant(notBefore.toInstant(),
|
||||||
|
ZoneOffset.UTC);
|
||||||
|
// reject if certificate is issued after April 15, 2025
|
||||||
|
checkNotBefore(ldNotBefore, APRIL_15_2025, anchor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String fingerprint(X509Certificate cert) {
|
||||||
|
return X509CertImpl.getFingerprint("SHA-256", cert);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void checkNotBefore(LocalDate notBeforeDate,
|
||||||
|
LocalDate distrustDate, X509Certificate anchor)
|
||||||
|
throws ValidatorException {
|
||||||
|
if (notBeforeDate.isAfter(distrustDate)) {
|
||||||
|
throw new ValidatorException
|
||||||
|
("TLS Server certificate issued after " + distrustDate +
|
||||||
|
" and anchored by a distrusted legacy Camerfirma root CA: "
|
||||||
|
+ anchor.getSubjectX500Principal(),
|
||||||
|
ValidatorException.T_UNTRUSTED_CERT, anchor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private CamerfirmaTLSPolicy() {}
|
||||||
|
}
|
||||||
@@ -1290,6 +1290,9 @@ jdk.sasl.disabledMechanisms=
|
|||||||
# ENTRUST_TLS : Distrust TLS Server certificates anchored by
|
# ENTRUST_TLS : Distrust TLS Server certificates anchored by
|
||||||
# an Entrust root CA and issued after November 11, 2024.
|
# an Entrust root CA and issued after November 11, 2024.
|
||||||
#
|
#
|
||||||
|
# CAMERFIRMA_TLS : Distrust TLS Server certificates anchored by
|
||||||
|
# a Camerfirma root CA and issued after April 15, 2025.
|
||||||
|
#
|
||||||
# Leading and trailing whitespace surrounding each value are ignored.
|
# Leading and trailing whitespace surrounding each value are ignored.
|
||||||
# Unknown values are ignored. If the property is commented out or set to the
|
# Unknown values are ignored. If the property is commented out or set to the
|
||||||
# empty String, no policies are enforced.
|
# empty String, no policies are enforced.
|
||||||
@@ -1301,7 +1304,7 @@ jdk.sasl.disabledMechanisms=
|
|||||||
# jdk.certpath.disabledAlgorithms; those restrictions are still enforced even
|
# jdk.certpath.disabledAlgorithms; those restrictions are still enforced even
|
||||||
# if this property is not enabled.
|
# if this property is not enabled.
|
||||||
#
|
#
|
||||||
jdk.security.caDistrustPolicies=SYMANTEC_TLS,ENTRUST_TLS
|
jdk.security.caDistrustPolicies=SYMANTEC_TLS,ENTRUST_TLS,CAMERFIRMA_TLS
|
||||||
|
|
||||||
#
|
#
|
||||||
# FilePermission path canonicalization
|
# FilePermission path canonicalization
|
||||||
|
|||||||
@@ -211,13 +211,14 @@ final class ProcessImpl extends Process {
|
|||||||
private static final int VERIFICATION_LEGACY = 3;
|
private static final int VERIFICATION_LEGACY = 3;
|
||||||
// See Command shell overview for documentation of special characters.
|
// See Command shell overview for documentation of special characters.
|
||||||
// https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490954(v=technet.10)
|
// https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490954(v=technet.10)
|
||||||
private static final char ESCAPE_VERIFICATION[][] = {
|
private static final String ESCAPE_VERIFICATION[] = {
|
||||||
// We guarantee the only command file execution for implicit [cmd.exe] run.
|
// We guarantee the only command file execution for implicit [cmd.exe] run.
|
||||||
// http://technet.microsoft.com/en-us/library/bb490954.aspx
|
// http://technet.microsoft.com/en-us/library/bb490954.aspx
|
||||||
{' ', '\t', '\"', '<', '>', '&', '|', '^'},
|
// All space characters require quoting are checked in needsEscaping().
|
||||||
{' ', '\t', '\"', '<', '>'},
|
"\"<>&|^",
|
||||||
{' ', '\t', '\"', '<', '>'},
|
"\"<>",
|
||||||
{' ', '\t'}
|
"\"<>",
|
||||||
|
""
|
||||||
};
|
};
|
||||||
|
|
||||||
private static String createCommandLine(int verificationType,
|
private static String createCommandLine(int verificationType,
|
||||||
@@ -332,9 +333,14 @@ final class ProcessImpl extends Process {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!argIsQuoted) {
|
if (!argIsQuoted) {
|
||||||
char testEscape[] = ESCAPE_VERIFICATION[verificationType];
|
for (int i = 0; i < arg.length(); i++) {
|
||||||
for (int i = 0; i < testEscape.length; ++i) {
|
char ch = arg.charAt(i);
|
||||||
if (arg.indexOf(testEscape[i]) >= 0) {
|
if (Character.isLetterOrDigit(ch))
|
||||||
|
continue; // skip over common characters
|
||||||
|
// All space chars require quotes and other mode specific characters
|
||||||
|
if (Character.isSpaceChar(ch) ||
|
||||||
|
Character.isWhitespace(ch) ||
|
||||||
|
ESCAPE_VERIFICATION[verificationType].indexOf(ch) >= 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -486,6 +486,8 @@ GetJavaProperties(JNIEnv* env)
|
|||||||
* where (buildNumber > 17762)
|
* where (buildNumber > 17762)
|
||||||
* Windows Server 2022 10 0 (!VER_NT_WORKSTATION)
|
* Windows Server 2022 10 0 (!VER_NT_WORKSTATION)
|
||||||
* where (buildNumber > 20347)
|
* where (buildNumber > 20347)
|
||||||
|
* Windows Server 2025 10 0 (!VER_NT_WORKSTATION)
|
||||||
|
* where (buildNumber > 26039)
|
||||||
*
|
*
|
||||||
* This mapping will presumably be augmented as new Windows
|
* This mapping will presumably be augmented as new Windows
|
||||||
* versions are released.
|
* versions are released.
|
||||||
@@ -569,7 +571,10 @@ GetJavaProperties(JNIEnv* env)
|
|||||||
case 0:
|
case 0:
|
||||||
/* Windows server 2019 GA 10/2018 build number is 17763 */
|
/* Windows server 2019 GA 10/2018 build number is 17763 */
|
||||||
/* Windows server 2022 build number is 20348 */
|
/* Windows server 2022 build number is 20348 */
|
||||||
if (buildNumber > 20347) {
|
/* Windows server 2025 Preview build is 26040 */
|
||||||
|
if (buildNumber > 26039) {
|
||||||
|
sprops.os_name = "Windows Server 2025";
|
||||||
|
} else if (buildNumber > 20347) {
|
||||||
sprops.os_name = "Windows Server 2022";
|
sprops.os_name = "Windows Server 2022";
|
||||||
} else if (buildNumber > 17676) {
|
} else if (buildNumber > 17676) {
|
||||||
sprops.os_name = "Windows Server 2019";
|
sprops.os_name = "Windows Server 2019";
|
||||||
|
|||||||
@@ -39,6 +39,9 @@
|
|||||||
// keyboard layout
|
// keyboard layout
|
||||||
static NSString *kbdLayout;
|
static NSString *kbdLayout;
|
||||||
|
|
||||||
|
// Constant for keyman layouts
|
||||||
|
#define KEYMAN_LAYOUT "keyman"
|
||||||
|
|
||||||
@interface AWTView()
|
@interface AWTView()
|
||||||
@property (retain) CDropTarget *_dropTarget;
|
@property (retain) CDropTarget *_dropTarget;
|
||||||
@property (retain) CDragSource *_dragSource;
|
@property (retain) CDragSource *_dragSource;
|
||||||
@@ -281,7 +284,7 @@ static BOOL shouldUsePressAndHold() {
|
|||||||
|
|
||||||
- (void) keyDown: (NSEvent *)event {
|
- (void) keyDown: (NSEvent *)event {
|
||||||
fProcessingKeystroke = YES;
|
fProcessingKeystroke = YES;
|
||||||
fKeyEventsNeeded = YES;
|
fKeyEventsNeeded = ![(NSString *)kbdLayout containsString:@KEYMAN_LAYOUT];
|
||||||
|
|
||||||
// Allow TSM to look at the event and potentially send back NSTextInputClient messages.
|
// Allow TSM to look at the event and potentially send back NSTextInputClient messages.
|
||||||
[self interpretKeyEvents:[NSArray arrayWithObject:event]];
|
[self interpretKeyEvents:[NSArray arrayWithObject:event]];
|
||||||
@@ -989,7 +992,7 @@ static jclass jc_CInputMethod = NULL;
|
|||||||
|
|
||||||
if ((utf16Length > 2) ||
|
if ((utf16Length > 2) ||
|
||||||
((utf8Length > 1) && [self isCodePointInUnicodeBlockNeedingIMEvent:codePoint]) ||
|
((utf8Length > 1) && [self isCodePointInUnicodeBlockNeedingIMEvent:codePoint]) ||
|
||||||
((codePoint == 0x5c) && ([(NSString *)kbdLayout containsString:@"Kotoeri"]))) {
|
[(NSString *)kbdLayout containsString:@KEYMAN_LAYOUT]) {
|
||||||
aStringIsComplex = YES;
|
aStringIsComplex = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
## The FreeType Project: Freetype v2.13.2
|
## The FreeType Project: Freetype v2.13.3
|
||||||
|
|
||||||
|
|
||||||
### FreeType Notice
|
### FreeType Notice
|
||||||
@@ -21,23 +21,23 @@ which fits your needs best.
|
|||||||
### FreeType License
|
### FreeType License
|
||||||
```
|
```
|
||||||
|
|
||||||
Copyright (C) 1996-2023 by David Turner, Robert Wilhelm, and Werner Lemberg.
|
Copyright (C) 1996-2024 by David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
Copyright (C) 2007-2023 by Dereg Clegg and Michael Toftdal.
|
Copyright (C) 2007-2024 by Dereg Clegg and Michael Toftdal.
|
||||||
Copyright (C) 1996-2023 by Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
|
Copyright (C) 1996-2024 by Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
Copyright (C) 2022-2023 by David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and
|
Copyright (C) 2022-2024 by David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and
|
||||||
Copyright (C) 2004-2023 by Masatake YAMATO and Redhat K.K.
|
Copyright (C) 2004-2024 by Masatake YAMATO and Redhat K.K.
|
||||||
Copyright (C) 2007-2023 by Derek Clegg and Michael Toftdal.
|
Copyright (C) 2007-2024 by Derek Clegg and Michael Toftdal.
|
||||||
Copyright (C) 2003-2023 by Masatake YAMATO, Red Hat K.K.,
|
Copyright (C) 2003-2024 by Masatake YAMATO, Red Hat K.K.,
|
||||||
Copyright (C) 1996-2023 by David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches.
|
Copyright (C) 1996-2024 by David Turner, Robert Wilhelm, Werner Lemberg, and Dominik Röttsches.
|
||||||
Copyright (C) 2007-2023 by David Turner.
|
Copyright (C) 2007-2024 by David Turner.
|
||||||
Copyright (C) 2022-2023 by David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti.
|
Copyright (C) 2022-2024 by David Turner, Robert Wilhelm, Werner Lemberg, and Moazin Khatti.
|
||||||
Copyright (C) 2007-2023 by Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
|
Copyright (C) 2007-2024 by Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.com>.
|
||||||
Copyright (C) 2008-2023 by David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.
|
Copyright (C) 2008-2024 by David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.
|
||||||
Copyright (C) 2013-2023 by Google, Inc.
|
Copyright (C) 2013-2024 by Google, Inc.
|
||||||
Copyright (C) 2019-2023 by Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
|
Copyright (C) 2019-2024 by Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
Copyright (C) 2009-2023 by Oran Agra and Mickey Gabel.
|
Copyright (C) 2009-2024 by Oran Agra and Mickey Gabel.
|
||||||
Copyright (C) 2018-2023 by David Turner, Robert Wilhelm, Dominik Röttsches, and Werner Lemberg.
|
Copyright (C) 2018-2024 by David Turner, Robert Wilhelm, Dominik Röttsches, and Werner Lemberg.
|
||||||
Copyright (C) 2004-2023 by David Turner, Robert Wilhelm, Werner Lemberg, and George Williams.
|
Copyright (C) 2004-2024 by David Turner, Robert Wilhelm, Werner Lemberg, and George Williams.
|
||||||
|
|
||||||
|
|
||||||
The FreeType Project LICENSE
|
The FreeType Project LICENSE
|
||||||
@@ -559,7 +559,7 @@ Public License instead of this License.
|
|||||||
```
|
```
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
The below license applies to the following files:
|
The below applies to the following file(s):
|
||||||
libfreetype/src/psaux/psarrst.c
|
libfreetype/src/psaux/psarrst.c
|
||||||
libfreetype/src/psaux/psarrst.h
|
libfreetype/src/psaux/psarrst.h
|
||||||
libfreetype/src/psaux/psblues.c
|
libfreetype/src/psaux/psblues.c
|
||||||
@@ -582,7 +582,7 @@ libfreetype/src/psaux/psstack.c
|
|||||||
libfreetype/src/psaux/psstack.h
|
libfreetype/src/psaux/psstack.h
|
||||||
libfreetype/src/psaux/pstypes.h
|
libfreetype/src/psaux/pstypes.h
|
||||||
|
|
||||||
Copyright 2006-2014 Adobe Systems Incorporated.
|
Copyright (C) 2006-2014 Adobe Systems Incorporated.
|
||||||
|
|
||||||
This software, and all works of authorship, whether in source or
|
This software, and all works of authorship, whether in source or
|
||||||
object code form as indicated by the copyright notice(s) included
|
object code form as indicated by the copyright notice(s) included
|
||||||
@@ -618,12 +618,12 @@ and you accept them fully.
|
|||||||
```
|
```
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
The below license applies to the following files:
|
The below applies to the following file(s):
|
||||||
libfreetype/include/freetype/internal/fthash.h
|
libfreetype/include/freetype/internal/fthash.h
|
||||||
libfreetype/src/base/fthash.c
|
libfreetype/src/base/fthash.c
|
||||||
|
|
||||||
Copyright 2000 Computing Research Labs, New Mexico State University
|
Copyright (C) 2000 Computing Research Labs, New Mexico State University
|
||||||
Copyright 2001-2015
|
Copyright (C) 2001-2015
|
||||||
|
|
||||||
Francesco Zappa Nardelli
|
Francesco Zappa Nardelli
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
## Little Color Management System (LCMS) v2.16
|
## Little Color Management System (LCMS) v2.17
|
||||||
|
|
||||||
### LCMS License
|
### LCMS License
|
||||||
<pre>
|
<pre>
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (C) 1998-2023 Marti Maria Saguer
|
Copyright (C) 1998-2025 Marti Maria Saguer
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
a copy of this software and associated documentation files (the "Software"),
|
a copy of this software and associated documentation files (the "Software"),
|
||||||
@@ -26,10 +26,10 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
The below license applies to the following files:
|
The below applies to the following file(s):
|
||||||
liblcms/cmssm.c
|
liblcms/cmssm.c
|
||||||
|
|
||||||
Copyright 2001, softSurfer (www.softsurfer.com)
|
Copyright (C) 2001, softSurfer (www.softsurfer.com)
|
||||||
|
|
||||||
This code may be freely used and modified for any purpose
|
This code may be freely used and modified for any purpose
|
||||||
providing that this copyright notice is included with it.
|
providing that this copyright notice is included with it.
|
||||||
@@ -99,5 +99,5 @@ Christian Albrecht
|
|||||||
Dimitrios Anastassakis
|
Dimitrios Anastassakis
|
||||||
Lemke Software
|
Lemke Software
|
||||||
Tim Zaman
|
Tim Zaman
|
||||||
|
Amir Montazery and Open Source Technology Improvement Fund (ostif.org), Google, for fuzzer fundings.
|
||||||
```
|
```
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
## libpng v1.6.43
|
## libpng v1.6.47
|
||||||
|
|
||||||
### libpng License
|
### libpng License
|
||||||
<pre>
|
<pre>
|
||||||
@@ -9,8 +9,8 @@ COPYRIGHT NOTICE, DISCLAIMER, and LICENSE
|
|||||||
PNG Reference Library License version 2
|
PNG Reference Library License version 2
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
Copyright (C) 1995-2024 The PNG Reference Library Authors.
|
Copyright (c) 1995-2025 The PNG Reference Library Authors.
|
||||||
Copyright (C) 2018-2024 Cosmin Truta
|
Copyright (C) 2018-2025 Cosmin Truta
|
||||||
Copyright (C) 1998-2018 Glenn Randers-Pehrson
|
Copyright (C) 1998-2018 Glenn Randers-Pehrson
|
||||||
Copyright (C) 1996-1997 Andreas Dilger
|
Copyright (C) 1996-1997 Andreas Dilger
|
||||||
Copyright (C) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
Copyright (C) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
|
||||||
@@ -170,6 +170,7 @@ Authors, for copyright and licensing purposes.
|
|||||||
* James Yu
|
* James Yu
|
||||||
* John Bowler
|
* John Bowler
|
||||||
* Kevin Bracey
|
* Kevin Bracey
|
||||||
|
* Lucas Chollet
|
||||||
* Magnus Holmgren
|
* Magnus Holmgren
|
||||||
* Mandar Sahastrabuddhe
|
* Mandar Sahastrabuddhe
|
||||||
* Mans Rullgard
|
* Mans Rullgard
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ typedef struct {
|
|||||||
|
|
||||||
#define UNSAFE_TO_SUB(a, b) \
|
#define UNSAFE_TO_SUB(a, b) \
|
||||||
(((b >= 0) && (a < 0) && (a < (INT_MIN + b))) || \
|
(((b >= 0) && (a < 0) && (a < (INT_MIN + b))) || \
|
||||||
((b < 0) && (a >= 0) && (-b > (INT_MAX - a)))) \
|
((b < 0) && (a >= 0) && (a > (INT_MAX + b)))) \
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The SurfaceDataRasInfo structure is used to pass in and return various
|
* The SurfaceDataRasInfo structure is used to pass in and return various
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@@ -68,14 +68,30 @@ Java_sun_java2d_loops_Blit_Blit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (width <= 0 || height <= 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
srcInfo.bounds.x1 = srcx;
|
srcInfo.bounds.x1 = srcx;
|
||||||
srcInfo.bounds.y1 = srcy;
|
srcInfo.bounds.y1 = srcy;
|
||||||
|
if (UNSAFE_TO_ADD(srcx, width) ||
|
||||||
|
UNSAFE_TO_ADD(srcy, height) ||
|
||||||
|
UNSAFE_TO_ADD(dstx, width) ||
|
||||||
|
UNSAFE_TO_ADD(dsty, height)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
srcInfo.bounds.x2 = srcx + width;
|
srcInfo.bounds.x2 = srcx + width;
|
||||||
srcInfo.bounds.y2 = srcy + height;
|
srcInfo.bounds.y2 = srcy + height;
|
||||||
dstInfo.bounds.x1 = dstx;
|
dstInfo.bounds.x1 = dstx;
|
||||||
dstInfo.bounds.y1 = dsty;
|
dstInfo.bounds.y1 = dsty;
|
||||||
dstInfo.bounds.x2 = dstx + width;
|
dstInfo.bounds.x2 = dstx + width;
|
||||||
dstInfo.bounds.y2 = dsty + height;
|
dstInfo.bounds.y2 = dsty + height;
|
||||||
|
if (UNSAFE_TO_SUB(srcx, dstx) ||
|
||||||
|
UNSAFE_TO_SUB(srcy, dsty)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
srcx -= dstx;
|
srcx -= dstx;
|
||||||
srcy -= dsty;
|
srcy -= dsty;
|
||||||
SurfaceData_IntersectBounds(&dstInfo.bounds, &clipInfo.bounds);
|
SurfaceData_IntersectBounds(&dstInfo.bounds, &clipInfo.bounds);
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* ANSI-specific configuration file (specification only).
|
* ANSI-specific configuration file (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Build macros of the FreeType 2 library.
|
* Build macros of the FreeType 2 library.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* User-selectable configuration macros (specification only).
|
* User-selectable configuration macros (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@@ -757,6 +757,22 @@ FT_BEGIN_HEADER
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Option `TT_CONFIG_OPTION_GPOS_KERNING` enables a basic GPOS kerning
|
||||||
|
* implementation (for TrueType fonts only). With this defined, FreeType
|
||||||
|
* is able to get kerning pair data from the GPOS 'kern' feature as well as
|
||||||
|
* legacy 'kern' tables; without this defined, FreeType will only be able
|
||||||
|
* to use legacy 'kern' tables.
|
||||||
|
*
|
||||||
|
* Note that FreeType does not support more advanced GPOS layout features;
|
||||||
|
* even the 'kern' feature implemented here doesn't handle more
|
||||||
|
* sophisticated kerning variants. Use a higher-level library like
|
||||||
|
* HarfBuzz instead for that.
|
||||||
|
*/
|
||||||
|
/* #define TT_CONFIG_OPTION_GPOS_KERNING */
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/**** ****/
|
/**** ****/
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* ANSI-specific library and header configuration file (specification
|
* ANSI-specific library and header configuration file (specification
|
||||||
* only).
|
* only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2023 by
|
* Copyright (C) 2002-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType integer types definitions.
|
* FreeType integer types definitions.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Mac/OS X support configuration header.
|
* Mac/OS X support configuration header.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Define a set of compiler macros used in public FreeType headers.
|
* Define a set of compiler macros used in public FreeType headers.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020-2023 by
|
* Copyright (C) 2020-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType high-level API and common types (specification only).
|
* FreeType high-level API and common types (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@@ -1322,9 +1322,13 @@ FT_BEGIN_HEADER
|
|||||||
* FT_FACE_FLAG_KERNING ::
|
* FT_FACE_FLAG_KERNING ::
|
||||||
* The face contains kerning information. If set, the kerning distance
|
* The face contains kerning information. If set, the kerning distance
|
||||||
* can be retrieved using the function @FT_Get_Kerning. Otherwise the
|
* can be retrieved using the function @FT_Get_Kerning. Otherwise the
|
||||||
* function always returns the vector (0,0). Note that FreeType
|
* function always returns the vector (0,0).
|
||||||
* doesn't handle kerning data from the SFNT 'GPOS' table (as present
|
*
|
||||||
* in many OpenType fonts).
|
* Note that for TrueType fonts only, FreeType supports both the 'kern'
|
||||||
|
* table and the basic, pair-wise kerning feature from the 'GPOS' table
|
||||||
|
* (with `TT_CONFIG_OPTION_GPOS_KERNING` enabled), though FreeType does
|
||||||
|
* not support the more advanced GPOS layout features; use a library
|
||||||
|
* like HarfBuzz for those instead.
|
||||||
*
|
*
|
||||||
* FT_FACE_FLAG_FAST_GLYPHS ::
|
* FT_FACE_FLAG_FAST_GLYPHS ::
|
||||||
* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT.
|
* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT.
|
||||||
@@ -3767,87 +3771,18 @@ FT_BEGIN_HEADER
|
|||||||
* pixels and use the @FT_PIXEL_MODE_LCD_V mode.
|
* pixels and use the @FT_PIXEL_MODE_LCD_V mode.
|
||||||
*
|
*
|
||||||
* FT_RENDER_MODE_SDF ::
|
* FT_RENDER_MODE_SDF ::
|
||||||
* This mode corresponds to 8-bit, single-channel signed distance field
|
* The positive (unsigned) 8-bit bitmap values can be converted to the
|
||||||
* (SDF) bitmaps. Each pixel in the SDF grid is the value from the
|
* single-channel signed distance field (SDF) by subtracting 128, with
|
||||||
* pixel's position to the nearest glyph's outline. The distances are
|
* the positive and negative results corresponding to the inside and
|
||||||
* calculated from the center of the pixel and are positive if they are
|
* the outside of a glyph contour, respectively. The distance units are
|
||||||
* filled by the outline (i.e., inside the outline) and negative
|
* arbitrarily determined by an adjustable @spread property.
|
||||||
* otherwise. Check the note below on how to convert the output values
|
|
||||||
* to usable data.
|
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* The selected render mode only affects vector glyphs of a font.
|
* The selected render mode only affects scalable vector glyphs of a font.
|
||||||
* Embedded bitmaps often have a different pixel mode like
|
* Embedded bitmaps often have a different pixel mode like
|
||||||
* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them
|
* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them
|
||||||
* into 8-bit pixmaps.
|
* into 8-bit pixmaps.
|
||||||
*
|
*
|
||||||
* For @FT_RENDER_MODE_SDF the output bitmap buffer contains normalized
|
|
||||||
* distances that are packed into unsigned 8-bit values. To get pixel
|
|
||||||
* values in floating point representation use the following pseudo-C
|
|
||||||
* code for the conversion.
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
* // Load glyph and render using FT_RENDER_MODE_SDF,
|
|
||||||
* // then use the output buffer as follows.
|
|
||||||
*
|
|
||||||
* ...
|
|
||||||
* FT_Byte buffer = glyph->bitmap->buffer;
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* for pixel in buffer
|
|
||||||
* {
|
|
||||||
* // `sd` is the signed distance and `spread` is the current spread;
|
|
||||||
* // the default spread is 2 and can be changed.
|
|
||||||
*
|
|
||||||
* float sd = (float)pixel - 128.0f;
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* // Convert to pixel values.
|
|
||||||
* sd = ( sd / 128.0f ) * spread;
|
|
||||||
*
|
|
||||||
* // Store `sd` in a buffer or use as required.
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* FreeType has two rasterizers for generating SDF, namely:
|
|
||||||
*
|
|
||||||
* 1. `sdf` for generating SDF directly from glyph's outline, and
|
|
||||||
*
|
|
||||||
* 2. `bsdf` for generating SDF from rasterized bitmaps.
|
|
||||||
*
|
|
||||||
* Depending on the glyph type (i.e., outline or bitmap), one of the two
|
|
||||||
* rasterizers is chosen at runtime and used for generating SDFs. To
|
|
||||||
* force the use of `bsdf` you should render the glyph with any of the
|
|
||||||
* FreeType's other rendering modes (e.g., `FT_RENDER_MODE_NORMAL`) and
|
|
||||||
* then re-render with `FT_RENDER_MODE_SDF`.
|
|
||||||
*
|
|
||||||
* There are some issues with stability and possible failures of the SDF
|
|
||||||
* renderers (specifically `sdf`).
|
|
||||||
*
|
|
||||||
* 1. The `sdf` rasterizer is sensitive to really small features (e.g.,
|
|
||||||
* sharp turns that are less than 1~pixel) and imperfections in the
|
|
||||||
* glyph's outline, causing artifacts in the final output.
|
|
||||||
*
|
|
||||||
* 2. The `sdf` rasterizer has limited support for handling intersecting
|
|
||||||
* contours and *cannot* handle self-intersecting contours whatsoever.
|
|
||||||
* Self-intersection happens when a single connected contour
|
|
||||||
* intersects itself at some point; having these in your font
|
|
||||||
* definitely poses a problem to the rasterizer and cause artifacts,
|
|
||||||
* too.
|
|
||||||
*
|
|
||||||
* 3. Generating SDF for really small glyphs may result in undesirable
|
|
||||||
* output; the pixel grid (which stores distance information) becomes
|
|
||||||
* too coarse.
|
|
||||||
*
|
|
||||||
* 4. Since the output buffer is normalized, precision at smaller spreads
|
|
||||||
* is greater than precision at larger spread values because the
|
|
||||||
* output range of [0..255] gets mapped to a smaller SDF range. A
|
|
||||||
* spread of~2 should be sufficient in most cases.
|
|
||||||
*
|
|
||||||
* Points (1) and (2) can be avoided by using the `bsdf` rasterizer,
|
|
||||||
* which is more stable than the `sdf` rasterizer in general.
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
typedef enum FT_Render_Mode_
|
typedef enum FT_Render_Mode_
|
||||||
{
|
{
|
||||||
@@ -4058,9 +3993,26 @@ FT_BEGIN_HEADER
|
|||||||
* out of the scope of this API function -- they can be implemented
|
* out of the scope of this API function -- they can be implemented
|
||||||
* through format-specific interfaces.
|
* through format-specific interfaces.
|
||||||
*
|
*
|
||||||
* Kerning for OpenType fonts implemented in a 'GPOS' table is not
|
* Note that, for TrueType fonts only, this can extract data from both
|
||||||
* supported; use @FT_HAS_KERNING to find out whether a font has data
|
* the 'kern' table and the basic, pair-wise kerning feature from the
|
||||||
* that can be extracted with `FT_Get_Kerning`.
|
* GPOS table (with `TT_CONFIG_OPTION_GPOS_KERNING` enabled), though
|
||||||
|
* FreeType does not support the more advanced GPOS layout features; use
|
||||||
|
* a library like HarfBuzz for those instead. If a font has both a
|
||||||
|
* 'kern' table and kern features of a GPOS table, the 'kern' table will
|
||||||
|
* be used.
|
||||||
|
*
|
||||||
|
* Also note for right-to-left scripts, the functionality may differ for
|
||||||
|
* fonts with GPOS tables vs. 'kern' tables. For GPOS, right-to-left
|
||||||
|
* fonts typically use both a placement offset and an advance for pair
|
||||||
|
* positioning, which this API does not support, so it would output
|
||||||
|
* kerning values of zero; though if the right-to-left font used only
|
||||||
|
* advances in GPOS pair positioning, then this API could output kerning
|
||||||
|
* values for it, but it would use `left_glyph` to mean the first glyph
|
||||||
|
* for that case. Whereas 'kern' tables are always advance-only and
|
||||||
|
* always store the left glyph first.
|
||||||
|
*
|
||||||
|
* Use @FT_HAS_KERNING to find out whether a font has data that can be
|
||||||
|
* extracted with `FT_Get_Kerning`.
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FT_Get_Kerning( FT_Face face,
|
FT_Get_Kerning( FT_Face face,
|
||||||
@@ -5222,7 +5174,7 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
#define FREETYPE_MAJOR 2
|
#define FREETYPE_MAJOR 2
|
||||||
#define FREETYPE_MINOR 13
|
#define FREETYPE_MINOR 13
|
||||||
#define FREETYPE_PATCH 2
|
#define FREETYPE_PATCH 3
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Quick computation of advance widths (specification only).
|
* Quick computation of advance widths (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2023 by
|
* Copyright (C) 2008-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType exact bbox computation (specification).
|
* FreeType exact bbox computation (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for accessing BDF-specific strings (specification).
|
* FreeType API for accessing BDF-specific strings (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2023 by
|
* Copyright (C) 2002-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType utility functions for bitmaps (specification).
|
* FreeType utility functions for bitmaps (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004-2023 by
|
* Copyright (C) 2004-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for accessing CID font information (specification).
|
* FreeType API for accessing CID font information (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2023 by
|
* Copyright (C) 2007-2024 by
|
||||||
* Dereg Clegg and Michael Toftdal.
|
* Dereg Clegg and Michael Toftdal.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType's glyph color management (specification).
|
* FreeType's glyph color management (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2018-2023 by
|
* Copyright (C) 2018-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for controlling driver modules (specification only).
|
* FreeType API for controlling driver modules (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2023 by
|
* Copyright (C) 2017-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@@ -817,6 +817,80 @@ FT_BEGIN_HEADER
|
|||||||
* 2.5
|
* 2.5
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @property:
|
||||||
|
* spread
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* This property of the 'sdf' and 'bsdf' renderers defines how the signed
|
||||||
|
* distance field (SDF) is represented in the output bitmap. The output
|
||||||
|
* values are calculated as follows, '128 * ( SDF / spread + 1 )', with
|
||||||
|
* the result clamped to the 8-bit range [0..255]. Therefore, 'spread'
|
||||||
|
* is also the maximum euclidean distance from the edge after which the
|
||||||
|
* values are clamped. The spread is specified in pixels with the
|
||||||
|
* default value of 8. For accurate SDF texture mapping (interpolation),
|
||||||
|
* the spread should be large enough to accommodate the target grid unit.
|
||||||
|
*
|
||||||
|
* @example:
|
||||||
|
* The following example code demonstrates how to set the SDF spread
|
||||||
|
* (omitting the error handling).
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* FT_Library library;
|
||||||
|
* FT_Int spread = 2;
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* FT_Init_FreeType( &library );
|
||||||
|
*
|
||||||
|
* FT_Property_Set( library, "sdf", "spread", &spread );
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* FreeType has two rasterizers for generating SDF, namely:
|
||||||
|
*
|
||||||
|
* 1. `sdf` for generating SDF directly from glyph's outline, and
|
||||||
|
*
|
||||||
|
* 2. `bsdf` for generating SDF from rasterized bitmaps.
|
||||||
|
*
|
||||||
|
* Depending on the glyph type (i.e., outline or bitmap), one of the two
|
||||||
|
* rasterizers is chosen at runtime and used for generating SDFs. To
|
||||||
|
* force the use of `bsdf` you should render the glyph with any of the
|
||||||
|
* FreeType's other rendering modes (e.g., `FT_RENDER_MODE_NORMAL`) and
|
||||||
|
* then re-render with `FT_RENDER_MODE_SDF`.
|
||||||
|
*
|
||||||
|
* There are some issues with stability and possible failures of the SDF
|
||||||
|
* renderers (specifically `sdf`).
|
||||||
|
*
|
||||||
|
* 1. The `sdf` rasterizer is sensitive to really small features (e.g.,
|
||||||
|
* sharp turns that are less than 1~pixel) and imperfections in the
|
||||||
|
* glyph's outline, causing artifacts in the final output.
|
||||||
|
*
|
||||||
|
* 2. The `sdf` rasterizer has limited support for handling intersecting
|
||||||
|
* contours and *cannot* handle self-intersecting contours whatsoever.
|
||||||
|
* Self-intersection happens when a single connected contour
|
||||||
|
* intersects itself at some point; having these in your font
|
||||||
|
* definitely poses a problem to the rasterizer and cause artifacts,
|
||||||
|
* too.
|
||||||
|
*
|
||||||
|
* 3. Generating SDF for really small glyphs may result in undesirable
|
||||||
|
* output; the pixel grid (which stores distance information) becomes
|
||||||
|
* too coarse.
|
||||||
|
*
|
||||||
|
* 4. Since the output buffer is normalized, precision at smaller spreads
|
||||||
|
* is greater than precision at larger spread values because the
|
||||||
|
* output range of [0..255] gets mapped to a smaller SDF range. A
|
||||||
|
* spread of~2 should be sufficient in most cases.
|
||||||
|
*
|
||||||
|
* Points (1) and (2) can be avoided by using the `bsdf` rasterizer,
|
||||||
|
* which is more stable than the `sdf` rasterizer in general.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @property:
|
* @property:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType error codes (specification).
|
* FreeType error codes (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2023 by
|
* Copyright (C) 2002-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType error code handling (specification).
|
* FreeType error code handling (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Support functions for font formats.
|
* Support functions for font formats.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2023 by
|
* Copyright (C) 2002-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Access of TrueType's 'gasp' table (specification).
|
* Access of TrueType's 'gasp' table (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2023 by
|
* Copyright (C) 2007-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType convenience functions to handle glyphs (specification).
|
* FreeType convenience functions to handle glyphs (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Gzip-compressed stream support.
|
* Gzip-compressed stream support.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2023 by
|
* Copyright (C) 2002-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* FreeType glyph image formats and default raster interface
|
* FreeType glyph image formats and default raster interface
|
||||||
* (specification).
|
* (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@@ -21,6 +21,11 @@
|
|||||||
* Note: A 'raster' is simply a scan-line converter, used to render
|
* Note: A 'raster' is simply a scan-line converter, used to render
|
||||||
* `FT_Outline`s into `FT_Bitmap`s.
|
* `FT_Outline`s into `FT_Bitmap`s.
|
||||||
*
|
*
|
||||||
|
* Note: This file can be used for `STANDALONE_` compilation of raster
|
||||||
|
* (B/W) and smooth (anti-aliased) renderers. Therefore, it must
|
||||||
|
* rely on standard variable types only instead of aliases in
|
||||||
|
* `fttypes.h`.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -318,7 +323,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* If bit~2 is set, bits 5-7 contain the drop-out mode (as defined in
|
* If bit~2 is set, bits 5-7 contain the drop-out mode (as defined in
|
||||||
* the OpenType specification; the value is the same as the argument to
|
* the OpenType specification; the value is the same as the argument to
|
||||||
* the 'SCANMODE' instruction).
|
* the 'SCANTYPE' instruction).
|
||||||
*
|
*
|
||||||
* Bits 3 and~4 are reserved for internal purposes.
|
* Bits 3 and~4 are reserved for internal purposes.
|
||||||
*
|
*
|
||||||
@@ -341,12 +346,12 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
typedef struct FT_Outline_
|
typedef struct FT_Outline_
|
||||||
{
|
{
|
||||||
short n_contours; /* number of contours in glyph */
|
unsigned short n_contours; /* number of contours in glyph */
|
||||||
short n_points; /* number of points in the glyph */
|
unsigned short n_points; /* number of points in the glyph */
|
||||||
|
|
||||||
FT_Vector* points; /* the outline's points */
|
FT_Vector* points; /* the outline's points */
|
||||||
char* tags; /* the points flags */
|
unsigned char* tags; /* the points flags */
|
||||||
short* contours; /* the contour end points */
|
unsigned short* contours; /* the contour end points */
|
||||||
|
|
||||||
int flags; /* outline masks */
|
int flags; /* outline masks */
|
||||||
|
|
||||||
@@ -356,8 +361,8 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
/* Following limits must be consistent with */
|
/* Following limits must be consistent with */
|
||||||
/* FT_Outline.{n_contours,n_points} */
|
/* FT_Outline.{n_contours,n_points} */
|
||||||
#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX
|
#define FT_OUTLINE_CONTOURS_MAX USHRT_MAX
|
||||||
#define FT_OUTLINE_POINTS_MAX SHRT_MAX
|
#define FT_OUTLINE_POINTS_MAX USHRT_MAX
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
@@ -434,8 +439,8 @@ FT_BEGIN_HEADER
|
|||||||
* rasterizer; see the `tags` field in @FT_Outline.
|
* rasterizer; see the `tags` field in @FT_Outline.
|
||||||
*
|
*
|
||||||
* Please refer to the description of the 'SCANTYPE' instruction in the
|
* Please refer to the description of the 'SCANTYPE' instruction in the
|
||||||
* OpenType specification (in file `ttinst1.doc`) how simple drop-outs,
|
* [OpenType specification](https://learn.microsoft.com/en-us/typography/opentype/spec/tt_instructions#scantype)
|
||||||
* smart drop-outs, and stubs are defined.
|
* how simple drop-outs, smart drop-outs, and stubs are defined.
|
||||||
*/
|
*/
|
||||||
#define FT_OUTLINE_NONE 0x0
|
#define FT_OUTLINE_NONE 0x0
|
||||||
#define FT_OUTLINE_OWNER 0x1
|
#define FT_OUTLINE_OWNER 0x1
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType incremental loading (specification).
|
* FreeType incremental loading (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2023 by
|
* Copyright (C) 2002-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* FreeType API for color filtering of subpixel bitmap glyphs
|
* FreeType API for color filtering of subpixel bitmap glyphs
|
||||||
* (specification).
|
* (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2023 by
|
* Copyright (C) 2006-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Generic list support for FreeType (specification).
|
* Generic list support for FreeType (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Additional debugging APIs.
|
* Additional debugging APIs.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020-2023 by
|
* Copyright (C) 2020-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Additional Mac-specific API.
|
* Additional Mac-specific API.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
|
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType Multiple Master font interface (specification).
|
* FreeType Multiple Master font interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@@ -19,8 +19,13 @@
|
|||||||
#ifndef FTMM_H_
|
#ifndef FTMM_H_
|
||||||
#define FTMM_H_
|
#define FTMM_H_
|
||||||
|
|
||||||
|
#include <freetype/freetype.h>
|
||||||
|
|
||||||
#include <freetype/t1tables.h>
|
#ifdef FREETYPE_H
|
||||||
|
#error "freetype.h of FreeType 1 has been loaded!"
|
||||||
|
#error "Please fix the directory search order for header files"
|
||||||
|
#error "so that freetype.h of FreeType 2 is found first."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
@@ -53,6 +58,30 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @enum:
|
||||||
|
* T1_MAX_MM_XXX
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* Multiple Masters limits as defined in their specifications.
|
||||||
|
*
|
||||||
|
* @values:
|
||||||
|
* T1_MAX_MM_AXIS ::
|
||||||
|
* The maximum number of Multiple Masters axes.
|
||||||
|
*
|
||||||
|
* T1_MAX_MM_DESIGNS ::
|
||||||
|
* The maximum number of Multiple Masters designs.
|
||||||
|
*
|
||||||
|
* T1_MAX_MM_MAP_POINTS ::
|
||||||
|
* The maximum number of elements in a design map.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define T1_MAX_MM_AXIS 4
|
||||||
|
#define T1_MAX_MM_DESIGNS 16
|
||||||
|
#define T1_MAX_MM_MAP_POINTS 20
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @struct:
|
* @struct:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType modules public interface (specification).
|
* FreeType modules public interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType module error offsets (specification).
|
* FreeType module error offsets (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001-2023 by
|
* Copyright (C) 2001-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* Support for the FT_Outline type used to store glyph shapes of
|
* Support for the FT_Outline type used to store glyph shapes of
|
||||||
* most scalable font formats (specification).
|
* most scalable font formats (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@@ -112,7 +112,7 @@ FT_BEGIN_HEADER
|
|||||||
* Degenerate contours, segments, and Bezier arcs may be reported. In
|
* Degenerate contours, segments, and Bezier arcs may be reported. In
|
||||||
* most cases, it is best to filter these out before using the outline
|
* most cases, it is best to filter these out before using the outline
|
||||||
* for stroking or other path modification purposes (which may cause
|
* for stroking or other path modification purposes (which may cause
|
||||||
* degenerate segments to become non-degenrate and visible, like when
|
* degenerate segments to become non-degenerate and visible, like when
|
||||||
* stroke caps are used or the path is otherwise outset). Some glyph
|
* stroke caps are used or the path is otherwise outset). Some glyph
|
||||||
* outlines may contain deliberate degenerate single points for mark
|
* outlines may contain deliberate degenerate single points for mark
|
||||||
* attachement.
|
* attachement.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for possible FT_Parameter tags (specification only).
|
* FreeType API for possible FT_Parameter tags (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2023 by
|
* Copyright (C) 2017-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType renderer modules public interface (specification).
|
* FreeType renderer modules public interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType size objects management (specification).
|
* FreeType size objects management (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
* This is _not_ used to retrieve glyph names!
|
* This is _not_ used to retrieve glyph names!
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType path stroker (specification).
|
* FreeType path stroker (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2023 by
|
* Copyright (C) 2002-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
* FreeType synthesizing code for emboldening and slanting
|
* FreeType synthesizing code for emboldening and slanting
|
||||||
* (specification).
|
* (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2000-2023 by
|
* Copyright (C) 2000-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType low-level system interface definition (specification).
|
* FreeType low-level system interface definition (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType trigonometric functions (specification).
|
* FreeType trigonometric functions (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001-2023 by
|
* Copyright (C) 2001-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType simple types definitions (specification only).
|
* FreeType simple types definitions (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* High-level 'autohint' module-specific interface (specification).
|
* High-level 'autohint' module-specific interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2023 by
|
* Copyright (C) 1996-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Basic OpenType/CFF object type definitions (specification).
|
* Basic OpenType/CFF object type definitions (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2023 by
|
* Copyright (C) 2017-2024 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user