diff --git a/.gitmodules b/.gitmodules
index b0164503..64a354ac 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -10,3 +10,7 @@
path = opentofu-repo/v1.7
url = https://github.com/opentofu/opentofu
branch = v1.7
+[submodule "opentofu-repo/v1.8"]
+ path = opentofu-repo/v1.8
+ url = https://github.com/opentofu/opentofu
+ branch = v1.8
diff --git a/blog/2024-04-30-opentofu-1-7-0.md b/blog/2024-04-30-opentofu-1-7-0.md
index c938baf3..9018bb41 100644
--- a/blog/2024-04-30-opentofu-1-7-0.md
+++ b/blog/2024-04-30-opentofu-1-7-0.md
@@ -7,12 +7,12 @@ image: /img/blog/opentofu-1-7-0.png
In the last few months [since our first stable release](/blog/opentofu-is-going-ga/) the OpenTofu community and the core team have worked hand in hand to bring functionality to OpenTofu that has been requested for years. We are proud to announce the immediate availability of [OpenTofu 1.7.0](https://github.com/opentofu/opentofu/releases/tag/v1.7.0), bringing you the following highlights:
-- [**End-to-end state encryption**](/docs/intro/whats-new/#state-encryption) protects your state file from prying eyes, no matter what storage backend you use. You can provide your encryption passphrase securely using environment variables, or use a key management system such as AWS KMS, GCP KMS, or OpenBao. *This feature has been developed in collaboration with Stephan Bartels (Interhyp) and Alex Scheel from the OpenTofu community, whom we would like to thank for their work on this feature.*
-- [**Dynamic provider-defined functions**](/docs/intro/whats-new/#provider-defined-functions) let a provider not only provide resources, but also native functions you can use in your OpenTofu code. What's more, we added an OpenTofu-only feature to let providers dynamically define custom functions based on your configuration. This enhancement allows you to fully integrate other programming languages as [shown in our live stream](https://www.youtube.com/watch?v=6OXBv0MYalY). You can try out this functionality with our experimental [Lua](https://github.com/opentofu/terraform-provider-lua) and [Go](https://github.com/opentofu/terraform-provider-go) providers.
+- [**End-to-end state encryption**](/docs/v1.7/intro/whats-new/#state-encryption) protects your state file from prying eyes, no matter what storage backend you use. You can provide your encryption passphrase securely using environment variables, or use a key management system such as AWS KMS, GCP KMS, or OpenBao. *This feature has been developed in collaboration with Stephan Bartels (Interhyp) and Alex Scheel from the OpenTofu community, whom we would like to thank for their work on this feature.*
+- [**Dynamic provider-defined functions**](/docs/v1.7/intro/whats-new/#provider-defined-functions) let a provider not only provide resources, but also native functions you can use in your OpenTofu code. What's more, we added an OpenTofu-only feature to let providers dynamically define custom functions based on your configuration. This enhancement allows you to fully integrate other programming languages as [shown in our live stream](https://www.youtube.com/watch?v=6OXBv0MYalY). You can try out this functionality with our experimental [Lua](https://github.com/opentofu/terraform-provider-lua) and [Go](https://github.com/opentofu/terraform-provider-go) providers.
- [**The removed block**](/docs/intro/whats-new/#removed-block) lets you mark OpenTofu-created resources for removal from the state file, but still keep the infrastructure you created.
- [**Loopable import blocks**](/docs/intro/whats-new/#loopable-import-blocks) let you bulk-import resources declaratively in your OpenTofu code, helping with large-scale migrations.
-As with the previous version, OpenTofu remains a drop-in replacement for its predecessor Terraform™ 1.5 and has easy migration paths from later versions. Check out the overhauled [**migration guides**](/docs/intro/migration/) for detailed migration instructions. You can find the full list of changes and comprehensive examples [in the documentation](/docs/intro/whats-new/).
+As with the previous version, OpenTofu remains a drop-in replacement for its predecessor Terraform™ 1.5 and has easy migration paths from later versions. Check out the overhauled [**migration guides**](/docs/v1.7/intro/migration/) for detailed migration instructions. You can find the full list of changes and comprehensive examples [in the documentation](/docs/v1.7/intro/whats-new/).
## The OpenTofu community grew significantly
diff --git a/blog/2024-07-29-opentofu-1-8-0.md b/blog/2024-07-29-opentofu-1-8-0.md
new file mode 100644
index 00000000..b24c1c64
--- /dev/null
+++ b/blog/2024-07-29-opentofu-1-8-0.md
@@ -0,0 +1,62 @@
+---
+title: OpenTofu 1.8.0 is out with Early Evaluation, Provider Mocking, and a Coder-Friendly Future
+slug: opentofu-1-8-0
+description: OpenTofu 1.8.0 is now available with early variable/locals evaluation, provider mocking for tests, and a future that makes every-day Tofu code a lot simpler.
+image: /img/blog/opentofu-1.8.0.png
+---
+
+Since the [1.7 release](/blog/opentofu-1.7.0), the OpenTofu community and core team have been hard at work on much-requested features, making `.tf` code easier to write, reducing unnecessary boilerplate, improving performance, and more. We are happy to announce the [immediate availability of OpenTofu 1.8](https://github.com/opentofu/opentofu/releases/tag/v1.8.0) with the following main features:
+
+- [You can now use variables and locals places](/docs/intro/whats-new/#early-variablelocals-evaluation) that were not previously available, such as module sources, backend configuration and state encryption. Being able to assign variables more dynamically will eliminate code duplication and boilerplate code, making projects easier to maintain. However, we are not stopping there: future releases will see [dynamic provider configuration assignments](https://github.com/opentofu/opentofu/issues/300) and more.
+- Since Terraform doesn't support these new language features, [OpenTofu now supports the `.tofu` file extension](/docs/intro/whats-new/#override-files-for-opentofu-keeping-compatibility). When a file with the `.tofu` extension is present, OpenTofu will ignore the identically named `.tf` file. Using this new file extension, module authors can use the new features of OpenTofu and still keep older code around for compatibility.
+- You can now use [provider mocking](/docs/intro/whats-new/#provider-mocking-in-tofu-test) as well as [resource overrides]( /docs/intro/whats-new/#resource-overrides-in-tofu-test) with `tofu test`. This allows for more flexible testing similar to traditional software testing methods.
+
+You can find the full list of improvements and changes on the [What's new in OpenTofu 1.8?](/docs/intro/whats-new/) page.
+
+## Growth continues: ~30% increase in registry traffic
+
+While we don't believe in tracking our users and OpenTofu does not have phone-home telemetry, we can observe a trajectory based on registry usage. In our [last release post](/blog/opentofu-1.7.0) 3 months ago we recorded a peak of roughly 1.4 million daily requests to the registry. We are happy to report that this number has increased by roughly 30% to almost 1.8 million peak daily requests.
+
+![A graph showing the OpenTofu registry requests per day.](/img/blog/opentofu-registry-july-2024.svg)
+
+As before, the OpenTofu community is very active in reporting and voting on issues, fixing bugs, and helping out with testing. The number of GitHub stars grew by ~10% to almost 22.000, the [top-voted issues](https://github.com/opentofu/opentofu/issues/1496) received hundreds of votes and quite a few comments in the discussions. This release has also seen significant contributions from outside the core team, ranging from small fixes to large performance overhaul PRs. In total, over 100 issues and over 150 pull requests were opened since the last release. 26 people contributed to this release on the main repository alone, with several significant contributions added to other repositories as well.
+
+Finally, we'd like to direct your attention to [Awesome OpenTofu](https://awesome-opentofu.com/), a community page containing a host of tools, platforms, registry implementations and learning material for OpenTofu.
+
+## Better documentation for the future: the new RFC process
+
+As the community kept working hand-in-hand with the core team it became clear that our previous RFC process based on GitHub Issues wasn't detailed enough. The linear nature of issue comments didn't encourage discussing specific parts of an RFC and the RFCs themselves did not contain enough context for someone in a few months or years to fully understand why the change was necessary.
+
+Our [new pull request-based RFC process](https://github.com/opentofu/opentofu/tree/main/rfc) fills this gap by using PR reviews to discuss parts of a document and the document itself encourages creating a historical record. We have trialled this process during the development of the [early (static) evaluation feature](https://github.com/opentofu/opentofu/blob/main/rfc/20240513-static-evaluation.md) and also the upcoming [dynamic provider assignment](https://github.com/opentofu/opentofu/blob/main/rfc/20240513-static-evaluation-providers.md) functionality. We hope that these documents will provide a better view into the new features coming to OpenTofu and also help create a historical record on why engineering decision were made the way they were.
+
+## Coming soon: the OpenTofu Registry UI
+
+In parallel to this release, we have been hard at work on a web-based user interface for the OpenTofu Registry. This user interface will allow you to browse and search for providers, resources and modules and read their documentation in a convenient format. We are aiming to release this user interface in the next few weeks.
+
+![A preview screenshot of the OpenTofu Registry UI](/img/blog/opentofu-registry-preview.png)
+
+## Fulfilling promises: our first Go libraries
+
+OpenTofu was founded on the principle of openness and modularity. While it is not always easy to modularize a codebase with a long history, we have released our first Go libraries for interoperability.
+
+[TofuDL](https://github.com/opentofu/tofudl) encodes the process of fetching the latest version of OpenTofu, verifying the signature and extracting the binary for local use into an easy-to-use Go library. Tool authors can use this library to cut down on the complexity of downloading the Tofu binary when needed. Furthermore, this library contains a full release mirroring tool, allowing you to build a release server with OpenTofu releases for air-gapped infrastructure that TofuDL-based tools can use to obtain the mirrored binaries.
+
+The currently experimental [libregistry](https://github.com/opentofu/libregistry) provides structured access to the data stored in the OpenTofu registry using the metadata API. In the future, we will transition the processes currently written for GitHub Actions into this library, allowing you to execute all registry processes independently of GitHub. You can use this library as a basis for writing your own registry, although the batteries are definitely not included.
+
+Please give these libraries a go (pun totally intended) and let us know what functionality you would like to see in them.
+
+## The future: more dynamic functionality, even more community-focussed development
+
+Ever since we created our [top-ranking issues](https://github.com/opentofu/opentofu/issues/1496) list, new votes from the community started pouring in, giving us a strong signal on where you want us to take OpenTofu. By a large margin, the top-requested issue was one we partly solved in this release by introducing early evaluation for variables and locals. However, this is only the first step. As you helped us test the early alpha and beta of this release, one of the most commonly asked questions was: *“When can I use early evaluation to dynamically configure providers?”*
+
+The top-voted enhancement reflects a similar sentiment. In 1.9 and beyond, we aim to bring you dynamic provider assignments and more early-evaluation features, which let you cut down on the unnecessary code repetition even further. If you are interested in this topic, give the [corresponding RFC a read](https://github.com/opentofu/opentofu/blob/main/rfc/20240513-static-evaluation-providers.md).
+
+## An ask for help: GPG keys for providers
+
+Finally, we have a favor to ask. The OpenTofu registry currently contains GPG signing keys only for a small number of providers as these keys are not publicly available on GitHub. If you are a provider author, [please submit your signing key here](https://github.com/opentofu/registry/issues/new/choose). It takes only a few minutes and does not require you to sign any legal documents or grant us access to your GitHub organization. If you are an OpenTofu user and you see that your providers are not signed, please let your provider author know that they can submit their keys and help secure the OpenTofu ecosystem.
+
+You can identify a missing signing key by running `tofu init` and keeping an eye out for the following message:
+
+> Signature validation was skipped due to the registry not containing GPG keys for this provider
+
+Thank you for your help!
\ No newline at end of file
diff --git a/docusaurus.config.ts b/docusaurus.config.ts
index 3522d23e..d96f29a1 100644
--- a/docusaurus.config.ts
+++ b/docusaurus.config.ts
@@ -102,7 +102,7 @@ const config: Config = {
},
docs: {
includeCurrentVersion: false,
- lastVersion: 'v1.7',
+ lastVersion: 'v1.8',
docVersionRootComponent: "@theme/DocVersionRoot",
versions: {
"v1.6": {
@@ -112,6 +112,11 @@ const config: Config = {
},
"v1.7": {
label: "1.7.x",
+ path: "v1.7",
+ banner: "none",
+ },
+ "v1.8": {
+ label: "1.8.x",
path: "",
},
"main": {
@@ -206,7 +211,7 @@ const config: Config = {
announcementBar: {
id: "opentofu-ga",
content:
- 'OpenTofu 1.7.0 is now available with full state encryption, dynamic provider-defined functions, and much more. Read the blog post »',
+ 'OpenTofu 1.8.0 is out with early variables/locals evaluation, .tofu file support and provider mocking. Read the blog post »',
backgroundColor: "#ffda18",
textColor: "#1b1d20",
isCloseable: false,
@@ -275,9 +280,13 @@ const config: Config = {
position: "left",
items: [
{
- label: "v1.7.x (current)",
+ label: "v1.8.x (current)",
href: "/docs/"
},
+ {
+ label: "v1.7.x",
+ href: "/docs/v1.7/"
+ },
{
label: "v1.6.x",
href: "/docs/v1.6/"
diff --git a/opentofu-repo/main b/opentofu-repo/main
index 3b3822d7..d2b603c8 160000
--- a/opentofu-repo/main
+++ b/opentofu-repo/main
@@ -1 +1 @@
-Subproject commit 3b3822d770ec30ce38c0c5d23c490886bfae37ae
+Subproject commit d2b603c8b2fedc7db878036c48ac8f7f77da84ae
diff --git a/opentofu-repo/v1.8 b/opentofu-repo/v1.8
new file mode 160000
index 00000000..b1834a29
--- /dev/null
+++ b/opentofu-repo/v1.8
@@ -0,0 +1 @@
+Subproject commit b1834a291027c5d4f14ca6e6acd4152bb42b6c65
diff --git a/static/img/blog/opentofu-1.8.0.png b/static/img/blog/opentofu-1.8.0.png
new file mode 100644
index 00000000..e29c2628
Binary files /dev/null and b/static/img/blog/opentofu-1.8.0.png differ
diff --git a/static/img/blog/opentofu-registry-july-2024-src.svg b/static/img/blog/opentofu-registry-july-2024-src.svg
new file mode 100644
index 00000000..0a1ca4b5
--- /dev/null
+++ b/static/img/blog/opentofu-registry-july-2024-src.svg
@@ -0,0 +1,6178 @@
+
+
diff --git a/static/img/blog/opentofu-registry-july-2024.svg b/static/img/blog/opentofu-registry-july-2024.svg
new file mode 100644
index 00000000..9a2baa98
--- /dev/null
+++ b/static/img/blog/opentofu-registry-july-2024.svg
@@ -0,0 +1,6080 @@
+
+
diff --git a/static/img/blog/opentofu-registry-preview-src.png b/static/img/blog/opentofu-registry-preview-src.png
new file mode 100644
index 00000000..76a872cf
Binary files /dev/null and b/static/img/blog/opentofu-registry-preview-src.png differ
diff --git a/static/img/blog/opentofu-registry-preview.png b/static/img/blog/opentofu-registry-preview.png
new file mode 100644
index 00000000..722dfd55
Binary files /dev/null and b/static/img/blog/opentofu-registry-preview.png differ
diff --git a/versioned_docs/version-v1.8 b/versioned_docs/version-v1.8
new file mode 120000
index 00000000..ddd54824
--- /dev/null
+++ b/versioned_docs/version-v1.8
@@ -0,0 +1 @@
+../opentofu-repo/v1.8/website/docs
\ No newline at end of file
diff --git a/versioned_sidebars/version-v1.8-sidebars.json b/versioned_sidebars/version-v1.8-sidebars.json
new file mode 100644
index 00000000..27854635
--- /dev/null
+++ b/versioned_sidebars/version-v1.8-sidebars.json
@@ -0,0 +1,8 @@
+{
+ "docs": [
+ {
+ "type": "autogenerated",
+ "dirName": "."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/versions.json b/versions.json
index 06503268..5912d453 100644
--- a/versions.json
+++ b/versions.json
@@ -1,4 +1,5 @@
[
+ "v1.8",
"v1.7",
"v1.6",
"main"