Skip to content

Commit d250994

Browse files
committed
docs: update release notes
1 parent bbb018f commit d250994

File tree

2 files changed

+210
-1
lines changed

2 files changed

+210
-1
lines changed

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,6 @@ function detectDeprecatedOptions() {
182182
}
183183

184184
async function showWhatsNew() {
185-
const uri = vscode.Uri.file(path.join(__dirname, '../updates/RELEASE_NOTES-v3.4.md'));
185+
const uri = vscode.Uri.file(path.join(__dirname, '../updates/RELEASE_NOTES-unreleased.md'));
186186
vscode.commands.executeCommand('markdown.showPreview', uri);
187187
}

updates/RELEASE_NOTES-unreleased.md

Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
# What's New (PRE RELEASE) <!-- omit in toc -->
2+
3+
## 🎉 Modern Fortran Release Nightly 🎉! <!-- omit in toc -->
4+
5+
- [Linter](#linter)
6+
- [`fypp` support](#fypp-support)
7+
- [Improved diagnostics for GNU Fortran](#improved-diagnostics-for-gnu-fortran)
8+
- [LFortran Linter support](#lfortran-linter-support)
9+
- [Persistent Cache](#persistent-cache)
10+
- [Commands](#commands)
11+
- [User Interface (UI)](#user-interface-ui)
12+
- [Run and Debug individual files](#run-and-debug-individual-files)
13+
- [Log Channel improvements](#log-channel-improvements)
14+
- [Setting verbosity level](#setting-verbosity-level)
15+
- [Added Fortran Logo icon](#added-fortran-logo-icon)
16+
- [Added relative path resolution for `fortls` and formatters](#added-relative-path-resolution-for-fortls-and-formatters)
17+
- [Added variable resolution support for `fortls`](#added-variable-resolution-support-for-fortls)
18+
- [Added `fpm.toml` schema validation](#added-fpmtoml-schema-validation)
19+
- [Improved Installation of dependencies using VS Code Tasks](#improved-installation-of-dependencies-using-vs-code-tasks)
20+
- [New Commands](#new-commands)
21+
- [`Fortran: Initialize Fortran Linter`](#fortran-initialize-fortran-linter)
22+
- [`Fortran: Clean Linter generated files`](#fortran-clean-linter-generated-files)
23+
- [`Fortran: Clean All Linter Diagnostics`](#fortran-clean-all-linter-diagnostics)
24+
- [New Settings](#new-settings)
25+
- [Hide Release Notes `fortran.notifications.releaseNotes`](#hide-release-notes-fortrannotificationsreleasenotes)
26+
- [Linter Initialization `fortran.linter.initialize`](#linter-initialization-fortranlinterinitialize)
27+
- [Cleaning Diagnostics `fortran.experimental.keepInitDiagnostics`](#cleaning-diagnostics-fortranexperimentalkeepinitdiagnostics)
28+
- [Log Channel Verbosity `fortran.logging.level`](#log-channel-verbosity-fortranlogginglevel)
29+
- [Other Changes](#other-changes)
30+
- [Improved performance of the linter](#improved-performance-of-the-linter)
31+
- [Update native symbol provider](#update-native-symbol-provider)
32+
- [Changed Linter glob resolution module to `glob` from `fast-glob`](#changed-linter-glob-resolution-module-to-glob-from-fast-glob)
33+
- [🐛 Bug Fixes 🐛](#-bug-fixes-)
34+
35+
## Linter
36+
37+
### `fypp` support
38+
39+
Adds some initial support for `fypp` when using `gfortran`. More compilers will follow soon!
40+
41+
![image](https://user-images.githubusercontent.com/16143716/190215420-085043a5-8250-4777-a0f0-7a94ec740987.png)
42+
43+
### Improved diagnostics for GNU Fortran
44+
45+
Added support for parsing plain text diagnostics from `gfortran` v11+
46+
thus allowing the display of multiline diagnostics
47+
48+
```fortran
49+
module err_mod
50+
private
51+
implicit none ! <- Error here previously not shown
52+
contains
53+
subroutine foo(arg1, arg2)
54+
integer, intent(in) :: arg1, arg2
55+
print*, 'arg1:', arg1, 'arg2:', arg2
56+
end subroutine foo
57+
subroutine proc_with_err()
58+
call foo()
59+
end subroutine proc_with_err
60+
end module err_mod
61+
```
62+
63+
![image](https://user-images.githubusercontent.com/16143716/190216547-324a70c3-df57-4c13-800d-efbd57b52562.png)
64+
65+
### LFortran Linter support
66+
67+
The LFortran linter is now available in the extension. It can be enabled by setting the `fortran.linter.compiler` setting to `lfortran`.
68+
69+
### Persistent Cache
70+
71+
By default, now the linter uses a unique VS Code, workspace specific persistent cache directory to store all output files generated by the linter. This should prevent
72+
any unexpected behaviour where the linter produces unwanted `.mod` files that
73+
are then picked up by the build system.
74+
75+
You can clean the cache by running the `Fortran: Clean Linter generated files` command, see [Commands](#commands) for more details.
76+
77+
### Commands
78+
79+
A series of new commands have been added, see [**New Commands**](#new-commands) section for more details.
80+
81+
- `Fortran: Initialize Fortran Linter`
82+
- `Fortran: Clean Linter generated files`
83+
- `Fortran: Clean All Linter Diagnostics`
84+
85+
## User Interface (UI)
86+
87+
### Run and Debug individual files
88+
89+
You can now run and debug individual files. This is useful for debugging small snippets of code. To do this, right-click on the file and select `Run File` or `Debug File` from the context menu.
90+
91+
### Log Channel improvements
92+
93+
The `Modern Fortran` log channel has had a small revamp.
94+
Logs are now colourized to make reading them easier
95+
96+
![image](https://user-images.githubusercontent.com/16143716/190214202-0cce3ee4-80da-4f4a-88bb-c36abd09c8f6.png)
97+
98+
### Setting verbosity level
99+
100+
You can now choose the verbosity level of the extension by setting the following option in the settings
101+
102+
```json
103+
{
104+
"fortran.logging.level": "Error"
105+
}
106+
```
107+
108+
### Added Fortran Logo icon
109+
110+
Added a new icon for the Fortran Language files
111+
112+
![image](https://user-images.githubusercontent.com/16143716/192509653-609b25c2-f1bb-4370-ba2d-2781d7505814.png)
113+
114+
### Added relative path resolution for `fortls` and formatters
115+
116+
It is now possible to define the path to `fortls` or the formatters using relative
117+
paths to the top-most workspace folder.
118+
119+
```json
120+
"fortran.fortls.path": "./venv/bin/fortls"
121+
```
122+
123+
### Added variable resolution support for `fortls`
124+
125+
Previously, internal VS Code variables like `${workspaceFolder}` were not resolved
126+
when defining the path to `fortls`. This has now been fixed.
127+
128+
```json
129+
"fortran.fortls.path": "${workspaceFolder}/venv/bin/fortls"
130+
```
131+
132+
### Added `fpm.toml` schema validation
133+
134+
Leveraging the support for schemas from the Even Better TOML extension,
135+
Modern Fortran now provides a schema for `fpm.toml` file validation and autocompletion.
136+
137+
![fpm-toml-validation](https://user-images.githubusercontent.com/16143716/194323699-79d0e598-fdf4-4c9c-9c56-3b9201a70824.gif)
138+
139+
### Improved Installation of dependencies using VS Code Tasks
140+
141+
The extension dependencies are now installed using Visual Studio Code's Tasks. That means that the commands are run from within the VS Code terminal, inheriting any environment variables already present. Particularly useful when using Python virtual environments.
142+
143+
### New Commands
144+
145+
A series of new commands have been added for the linter
146+
147+
#### `Fortran: Initialize Fortran Linter`
148+
149+
Runs a naive mock compilation of all the Fortran source files found in the project
150+
in order to generate the `.mod` and `.smod` files necessary for the linter. This
151+
also generates all the Diagnostics for the project.
152+
153+
#### `Fortran: Clean Linter generated files`
154+
155+
Cleans all the `.mod` and `.smod` files generated by the linter that are placed
156+
in the persistent cache storage of VS Code for this workspace.
157+
158+
#### `Fortran: Clean All Linter Diagnostics`
159+
160+
Cleans all the diagnostics generated by the linter.
161+
162+
### New Settings
163+
164+
#### Hide Release Notes `fortran.notifications.releaseNotes`
165+
166+
Hide release notes when the extension in being installed or updated.
167+
168+
```json
169+
"fortran.notifications.releaseNotes": true
170+
```
171+
172+
#### Linter Initialization `fortran.linter.initialize`
173+
174+
An option, by default `true` that will attempt to initialize the linter with
175+
all the Fortran source files found in the workspace upon the extension activation.
176+
177+
Performs the same task as the `Fortran: Initialize Fortran Linter` command.
178+
179+
#### Cleaning Diagnostics `fortran.experimental.keepInitDiagnostics`
180+
181+
An option to keep or discard all the diagnostics generated by running the
182+
initialization process of the linter.
183+
184+
#### Log Channel Verbosity `fortran.logging.level`
185+
186+
An option to set the verbosity level of the extension log channel.
187+
188+
## Other Changes
189+
190+
### Improved performance of the linter
191+
192+
Converted the linter into using asynchronous processes, which should improve the overall performance and responsiveness of the diagnostics.
193+
194+
### Update native symbol provider
195+
196+
The native symbol provider (one used when `fortls` is not present) has been updated
197+
to use the new VS Code API.
198+
199+
### Changed Linter glob resolution module to `glob` from `fast-glob`
200+
201+
The `fast-glob` module was causing issues with the linter when using the `**` glob pattern. The parent directory would not be included in the results see, <https://github.com/mrmlnc/fast-glob/issues/47>.
202+
203+
This was problematic since users had to define the include directories twice,
204+
once with the glob pattern and once without it. We have switched to the `glob`,
205+
which is slower but does not suffer from this issue.
206+
207+
The cache used by the linter should help mitigate any performance issues.
208+
209+
## 🐛 Bug Fixes 🐛

0 commit comments

Comments
 (0)