sharjeelyunus/github-issues-dataset huggingface dataset:
Repository: transformers
Issue: [Benchmarks] index
Labels: Benchmarks,WIP

This issue is to document the important `transformers` benchmarks in one place, so that they are easy to find.

To add a new benchmark entry post it in an Issue (separately or as a comment in an existing issue) and then link from here. If you have edit rights please add a link directly to this post, otherwise please add a note in the comments and I will update this post. 

Please do not post actual benchmarks in the comments of this Issue. This is only an index. 

Thank you!


## Fastest speed combinations
- [RTX-3090](https://github.com/huggingface/transformers/issues/14608#issuecomment-1005229426)
- [A100](https://github.com/huggingface/transformers/issues/15026#issuecomment-1005227577)


## Precision: fp16 vs bf16 vs tf32 vs fp32
- [RTX-3090](https://github.com/huggingface/transformers/issues/14608#issuecomment-1004390803)
- [A100](https://github.com/huggingface/transformers/issues/15026#issuecomment-1004543189)


## Batch size / gradient accumulation steps 
-  gradient accumulation steps: [RTX-3090](https://github.com/huggingface/transformers/issues/14608#issuecomment-1004392537), [A100](https://github.com/huggingface/transformers/issues/15026#issuecomment-1004592231)
- batch size [RTX-3090](https://github.com/huggingface/transformers/issues/14608#issuecomment-1004470417), [A100](https://github.com/huggingface/transformers/issues/15026#issuecomment-1005033957)
 


## Gradient checkpointing
- [RTX-3090](https://github.com/huggingface/transformers/issues/14608#issuecomment-1004422281)
- [A100](https://github.com/huggingface/transformers/issues/15026#issuecomment-1005034578)


## Optimizers:
- Adam torch vs. apex vs HF vs adafactor: [RTX-3090](https://github.com/huggingface/transformers/issues/14608#issuecomment-1005219385), [A100](https://github.com/huggingface/transformers/issues/15026#issuecomment-1005220263)
- re-run the above a year later with the same list of optimizers, plus BNB's 8bit optimizer and fused torch AdamW [PCIe 80GB A100](https://github.com/huggingface/transformers/issues/22101)

## Network / Interconnects:
- [DP/DDP/NVLink](https://github.com/huggingface/transformers/issues/9371#issuecomment-768656711)
Repository: create-react-app
Issue: Use of deprecated webpack DevServer onBeforeSetupMiddleware and onAfterSetupMiddleware options
Labels: needs triage,issue: bug report

### Steps to reproduce

```
npx create-react-app my-app
cd my-app
npm start
```

### Unexpected output

```
(node:22848) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:22848) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option.
```

### My environment

* create-react-app 5.0.0
* node 16.13.1
* Windows 10
Repository: pytorch
Issue: cumcount / cumulative count
Labels: triaged,enhancement

### 🚀 The feature, motivation and pitch

Hi~
Is there any api achieve that:
`tensor([[3, 1, 2, 2, 1, 2],
               [2, 2, 1, 1, 3, 2]])`
to
`tensor([[0, 0, 0, 1, 1, 2],
                [0, 1, 0, 1, 0, 2]])`
like count-format **torch.cumsum**

or some efficient implementation of current pytorch api for batch cumulative count?
sincerely thx～

### Alternatives

_No response_

### Additional context

_No response_
Repository: react
Issue: [DevTools Bug]: React Dev Tools fails to render props and state of component.
Labels: Type: Bug,Status: Unconfirmed,Component: Developer Tools

### Website or app

https://elisavidera.com/

### Repro steps

1. Goto https://elisavidera.com/
2. Start inspecting component
3. Issue happens on some components not all [https://static.elisa.com/v2/image/2tqybbhjs47b/3OvazhdGhnIeotXQqSB9ZK/Screenshot from 2021-12-31 13-28-10.png?w=800](url)
4. Also in browser console this gets reported
5. react_devtools_backend.js:12847 Uncaught DOMException: Blocked a frame with origin "https://elisavidera.com" from accessing a cross-origin frame.
    at exports.isElement (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:12847:51)
    at getDataType (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:1051:65)
    at dehydrate (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:3487:82)
    at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:3639:26
    at Set.forEach (<anonymous>)
    at dehydrate (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:3637:91)
    at chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:3639:26
    at Set.forEach (<anonymous>)
    at dehydrate (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:3637:91)
    at cleanForBridge (chrome-extension://fmkadmapgofadopljbjfkapdkoienihi/build/react_devtools_backend.js:1506:93)

### How often does this bug happen?

Every time

### DevTools package (automated)

_No response_

### DevTools version (automated)

_No response_

### Error message (automated)

_No response_

### Error call stack (automated)

_No response_

### Error component stack (automated)

_No response_

### GitHub query string (automated)

_No response_
Repository: youtube-dl
Issue: TikTok Error
Labels: duplicate

```
~/files/Tiktok $ youtube-dl --verbose https://vm.tiktok.com/ZM8Kf5sqY/
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', 'https://vm.tiktok.com/ZM8Kf5sqY/']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Python version 3.10.1 (CPython) - Linux-4.14.87+-armv8l-with-libc
[debug] exe versions: ffmpeg 4.4.1, ffprobe 4.4.1
[debug] Proxy map: {}
[generic] ZM8Kf5sqY: Requesting header
[redirect] Following redirect to https://www.tiktok.com/@elektrokurzschluss/video/7042661503035526406?_d=secCgwIARCbDRjEFSACKAESPgo8Py%2BWHrKmQ8k916xwcDBjDWlzWI3uyW3d84Z2wwgZBwA6dO9mCxynY1r%2BVVrZKE4rOvdHB5S4NR7cJt0sGgA%3D&language=de&preview_pb=0&sec_user_id=MS4wLjABAAAAwkLYynP5HnlwKtmz4yBJ6cCjmTTfkDfupLpi6htOTGYDBqQw03ruYBKCSem4mD-x&share_app_id=1233&share_item_id=7042661503035526406&share_link_id=5391ca27-a864-405f-84d3-8fec6466ad88&source=h5_m&timestamp=1640954903&u_code=de7i359c99ad13&user_id=6866698620222948358&utm_campaign=client_share&utm_medium=android&utm_source=copy&_r=1
[TikTok] Setting up session
[TikTok] 7042661503035526406: Downloading webpage
ERROR: Unable to extract data; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 815, in wrapper
    return func(self, *args, **kwargs)
  File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/youtube_dl/YoutubeDL.py", line 836, in __extract_info
    ie_result = ie.extract(url)
  File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/youtube_dl/extractor/common.py", line 534, in extract
    ie_result = self._real_extract(url)
  File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/youtube_dl/extractor/tiktok.py", line 110, in _real_extract
    page_props = self._parse_json(self._search_regex(
  File "/data/data/com.termux/files/usr/lib/python3.10/site-packages/youtube_dl/extractor/common.py", line 1012, in _search_regex
    raise RegexNotFoundError('Unable to extract %s' % _name)
youtube_dl.utils.RegexNotFoundError: Unable to extract data; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
```
Repository: godot
Issue: Set V Scroll Bar content_margin_* properties: content goes below the ScrollBar itself
Labels: bug,topic:gui

### Godot version

3.3.4.stable

### System information

Ubuntu

### Issue description

Setting `V Scroll Bar` `content_margin_*` properties in the theme resource resizes the scrollbar so you can e.g. make it wider. However, it does not resize the content of the parent of the scrollbar.
This means that e.g. the text of a `TextEdit` will end up below the scrollbar itself:
![scrollbar_theme_bug](https://user-images.githubusercontent.com/10872697/147834146-d4ed0222-8b75-46d6-8ad6-1a7e14e65f79.png)



### Steps to reproduce

* Create a `theme`
* Change the `content_margin_*` properties of the `V Scroll Bar` to make the scrollbar wider.
* Apply the theme to the whole project.
* Use any `Control` which when contains enough content will display a vertical scrollbar.
* Notice that the content goes below the scrollbar itself.

### Minimal reproduction project

[ScrollBarMargins.zip](https://github.com/godotengine/godot/files/7796775/ScrollBarMargins.zip)
Repository: vscode
Issue: When characters are typed at a rapid rate, textDocument/onTypeFormatting fails to fire
Labels: formatting,under-discussion

<!-- ⚠️⚠️ Do Not Delete This! bug_report_template ⚠️⚠️ -->
<!-- Please read our Rules of Conduct: https://opensource.microsoft.com/codeofconduct/ -->
<!-- 🕮 Read our guide about submitting issues: https://github.com/microsoft/vscode/wiki/Submitting-Bugs-and-Suggestions -->
<!-- 🔎 Search existing issues to avoid creating duplicates. -->
<!-- 🧪 Test using the latest Insiders build to see if your issue has already been fixed: https://code.visualstudio.com/insiders/ -->
<!-- 💡 Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. -->
<!-- 🔧 Launch with `code --disable-extensions` to check. -->
Does this issue occur when all extensions are disabled?: Yes/No

<!-- 🪓 If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. -->
<!-- 📣 Issues caused by an extension need to be reported directly to the extension publisher. The 'Help > Report Issue' dialog can assist with this. -->
- VS Code Version:
- OS Version:

Steps to Reproduce:

1. enable onTypeFormatting in any language server.
2. quickly type some code that would trigger onTypeFomatting, but rapidly type additional characters after the trigger character
3. didChange notifications will be gathered together to minimize traffic to the language server.
4. If the trigger character was present in one of the changes that were subsumed in follow-on messages, then the onTypeFormatting message is never sent to the language server.
Repository: storybook
Issue: Storybook preact remounts the story when controls are used 
Labels: bug,preact,addon: controls

**Describe the bug**
When a control's value is changed, the story's component should not be completely **remounted**, but rather the component should be _updated_ with new props. I'm seeing only remounts happening with storybook/preact and a boolean control.

**To Reproduce**
GitHub Pages site: https://matthias-ccri.github.io/storybook-bug-preact-remount/

Repo: 
https://github.com/matthias-ccri/storybook-bug-preact-remount

To see the bug, open the browser console and see a "Mounted" message. Then use the boolean control, and see "Mounted" logged each time. This means the component has been remounted each time it's used. This only happens in the Canvas view, not Docs.

The "Mounted" message is logged by a `useEffect` hook with empty depends array.

Note: Chromatic doesn't show the "Controls" panel so it's impossible to repro on Chromatic. So I made a GitHub pages site.

**System**
```Environment Info:

  System:
    OS: Linux 4.15 Ubuntu 18.04.6 LTS (Bionic Beaver)
    CPU: (4) x64 Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz
  Binaries:
    Node: 14.18.2 - ~/.nvm/versions/node/v14.18.2/bin/node
    Yarn: 3.1.1 - ~/.yarn/bin/yarn
    npm: 6.14.15 - ~/.nvm/versions/node/v14.18.2/bin/npm
  Browsers:
    Chrome: 96.0.4664.110
    Firefox: 95.0.1
  npmPackages:
    @storybook/addon-actions: ^6.5.0-alpha.5 => 6.5.0-alpha.5 
    @storybook/addon-docs: ^6.5.0-alpha.5 => 6.5.0-alpha.5 
    @storybook/addon-essentials: ^6.5.0-alpha.5 => 6.5.0-alpha.5 
    @storybook/addon-links: ^6.5.0-alpha.5 => 6.5.0-alpha.5 
    @storybook/preact: ^6.5.0-alpha.5 => 6.5.0-alpha.5 
```
Repository: pytorch
Issue: Tensor loses `bool` method during scripting
Labels: oncall: jit

### 🐛 Describe the bug

When scripting a class which relies on `torch.Tensor.bool`, the method is not found and errors out with `'Tensor' object has no attribute or method 'bool'.`.

```python
import torch

class Bar:
    def __init__(self, x: torch.Tensor):
        self.x = x.bool()

f = Bar(torch.tensor(1))
torch.jit.script(f)
```

Error:

```
Traceback (most recent call last):
  File "test.py", line 19, in <module>
    torch.jit.script(f)
  File "/Users/erip/opt/miniconda3/envs/tmp/lib/python3.8/site-packages/torch/jit/_script.py", line 1318, in script
    return torch.jit._recursive.create_script_class(obj)
  File "/Users/erip/opt/miniconda3/envs/tmp/lib/python3.8/site-packages/torch/jit/_recursive.py", line 419, in create_script_class
    _compile_and_register_class(type(obj), rcb, qualified_class_name)
  File "/Users/erip/opt/miniconda3/envs/tmp/lib/python3.8/site-packages/torch/jit/_recursive.py", line 44, in _compile_and_register_class
    script_class = torch._C._jit_script_class_compile(qualified_name, ast, defaults, rcb)
RuntimeError:
'Tensor' object has no attribute or method 'bool'.:
  File "test.py", line 16
    def __init__(self, x: torch.Tensor):
        self.x = x.bool()
                 ~~~~~~ <--- HERE
```

As a workaround, one can use `self.x = x.to(torch.bool)`

### Versions

```markdown
PyTorch version: 1.10.1
Is debug build: False
CUDA used to build PyTorch: None
ROCM used to build PyTorch: N/A

OS: macOS 10.15.7 (x86_64)
GCC version: Could not collect
Clang version: 12.0.0 (clang-1200.0.32.29)
CMake version: version 3.22.1
Libc version: N/A

Python version: 3.8.12 (default, Oct 12 2021, 06:23:56)  [Clang 10.0.0 ] (64-bit runtime)
Python platform: macOS-10.15.7-x86_64-i386-64bit
Is CUDA available: False
CUDA runtime version: No CUDA
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA
HIP runtime version: N/A
MIOpen runtime version: N/A

Versions of relevant libraries:
[pip3] mypy-extensions==0.4.3
[pip3] numpy==1.21.2
[pip3] torch==1.10.1
[pip3] torchtext==0.11.1
[conda] blas                      1.0                         mkl
[conda] cpuonly                   2.0                           0    pytorch
[conda] mkl                       2021.4.0           hecd8cb5_637
[conda] mkl-service               2.4.0            py38h9ed2024_0
[conda] mkl_fft                   1.3.1            py38h4ab4a9b_0
[conda] mkl_random                1.2.2            py38hb2f4e1b_0
[conda] mypy-extensions           0.4.3                    pypi_0    pypi
[conda] numpy                     1.21.2           py38h4b4dc7a_0
[conda] numpy-base                1.21.2           py38he0bd621_0
[conda] pytorch                   1.10.1                  py3.8_0    pytorch
[conda] pytorch-mutex             1.0                         cpu    pytorch
[conda] torchtext                 0.11.1                     py38    pytorch
```
Repository: godot
Issue: RESET track is still created after unchecking "Create RESET track"
Labels: bug,discussion,topic:editor,topic:animation

### Godot version

3.4.2.stable

### System information

Windows 10

### Issue description

When a track is created in an AnimationPlayer, and "Create RESET track" is unchecked in the prompt, adding a second key to the same track will create a RESET track anyway.  My expectation is for the RESET track to be ignored for keys on that track permanently, since the prompt is only displayed when the track is created.  If the prompt was displayed every time you added a key to each track, that would be more consistent for the user, however laborious.

### Steps to reproduce

1. Create an AnimationPlayer and any other node to animate.
2. Create a new animation for the node.
3. Click the key button on a property to add a key to the animation, and when the prompt for a new track appears, uncheck "Create RESET track".  
_It doesn't seem to matter what property you animate.  I was able to reproduce this with a basic Transform property track, a Sprite's frame property, as well as custom exported variables from scripts._
4. There should be no RESET track created yet.  Add another key to the same track the same way.
5. The RESET track is created silently (without a prompt).

### Minimal reproduction project

_No response_
Repository: go
Issue: testing/fstest, os: TestFS fails on os.DirFS if it contains any symlinks to directories
Labels: NeedsInvestigation

<!--
Please answer these questions before submitting your issue. Thanks!
-->

### What version of Go are you using (`go version`)?

<pre>
$ go version
go version go1.17.5 linux/amd64
</pre>

I also tried with:

<pre>
$ PATH=$HOME/.local/go1.18beta1/bin:$PATH
$ go version
go version go1.18beta1 linux/amd64
</pre>

### Does this issue reproduce with the latest release?

Yes, 1.17.5 is the latest release. It also reproduces with go1.18beta1.

### What operating system and processor architecture are you using (`go env`)?

<details><summary><code>go env</code> Output</summary><br><pre>
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/lukeshu/.cache/go-build"
GOENV="/home/lukeshu/.config/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/lukeshu/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/lukeshu/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GOVCS=""
GOVERSION="go1.17.5"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/run/user/1000/tmpdir/go-build139097469=/tmp/go-build -gno-record-gcc-switches"
</pre></details>

### What did you do?

<!--
If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on go.dev/play is best.
-->

I ran this test (closely based on `testing/fstest`'s `TestSymlink`):

```go
package x_test

import (
	"os"
	"path/filepath"
	"testing"
	"testing/fstest"
)

func TestSymlinkDir(t *testing.T) {
	tmp := t.TempDir()
	tmpfs := os.DirFS(tmp)

	if err := os.Mkdir(filepath.Join(tmp, "subdir"), 0755); err != nil {
		t.Fatal(err)
	}

	if err := os.Symlink(filepath.Join(tmp, "subdir"), filepath.Join(tmp, "subdir.link")); err != nil {
		t.Fatal(err)
	}

	if err := fstest.TestFS(tmpfs, "subdir", "subdir.link"); err != nil {
		t.Fatal(err)
	}
}
```

### What did you expect to see?

I expected the test to pass.

### What did you see instead?

```console
$ go test -v .
=== RUN   TestSymlinkDir
    x_test.go:27: TestFS found errors:
        subdir.link: Open+ReadAll: read /run/user/1000/tmpdir/TestSymlinkDir3706588029/001/subdir.link: is a directory
--- FAIL: TestSymlinkDir (0.00s)
```

I am not sure whether the problem is with `os.DirFS` or with `fstest.TestFS`.  See also:
- https://github.com/golang/go/issues/44113 (similar ticket for symlinks to regular files)
- https://github.com/golang/go/issues/45470 (ticket asking for docs on what the correct behavior of an `fs.FS` is in this situation)
Repository: flutter
Issue: `InteractiveViewer.builder` does not function if built widget is small
Labels: framework,f: material design,has reproducible steps,found in release: 2.8,found in release: 2.9,team-design,triaged-design

## Steps to Reproduce

Dartpad: https://dartpad.dev/?id=77e94340a3cc00f254831939b9d0a88e

**Expected results:**

I expected to be able to move the viewport and receive coordinates

Or, `InteractiveViewer` throws an error for having a child too small

**Actual results:**

Viewport does not move on gestures, except for one initial jump (unclear as to why the jump)

Viewport operates fine if size of container is increased

<details>
<summary>Code sample</summary>

Dartpad: https://dartpad.dev/?id=77e94340a3cc00f254831939b9d0a88e

```dart
import 'package:flutter/material.dart';
import 'package:vector_math/vector_math_64.dart' show Quad, Vector3;

void main() => runApp(IVWidgetExample());

class IVWidgetExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return InteractiveViewer.builder(
      builder: (BuildContext context, Quad viewport) {
        Vector3 p0 = viewport.point0;
        Vector3 p1 = viewport.point1;
        Vector3 p2 = viewport.point2;
        Vector3 p3 = viewport.point3;

        print("Quad: $p0 $p1 $p2 $p3");
        return Container(
            height: 200,
            width: 300,
            decoration: const BoxDecoration(
              color: Colors.cyan,
              shape: BoxShape.circle,
            ));
      },
    );
  }
}
```

</details>

Apologies if I'm just generally doing something wrong, wasn't quite sure if this was an actual issue.
Repository: rust
Issue: Uses non-existent FreeBSD 11 syscall ABI for FreeBSD RISC-V
Labels: O-freebsd,C-bug,O-riscv

All FreeBSD targets are currently hard-coded to use the FreeBSD 11 syscall ABI. For most targets this is "fine", since the default kernel configs include COMPAT_FREEBSD11. However, the current RISC-V FreeBSD port post-dates FreeBSD 11 (see https://www.freebsd.org/cgi/man.cgi?query=arch), so the syscalls that were removed in FreeBSD 12 never existed for RISC-V, and so the kernel does not, and should not (as one of the primary RISC-V developers I will veto any such change), enable COMPAT_FREEBSD11. Any attempt to use them will deliver a fatal-by-default SIGSYS to the process, and given FreeBSD 11->12 was the ino64 transition, this affects basically anything you could actually want to do.

As well as multiple places hard-coding the FreeBSD ABI version, this information is not communicated to other crates. Notably FreeBSD 12 added the ext field to struct kevent, which breaks mio's kqueue.rs, as I discovered when I hacked up rustc and libc to hard-code FreeBSD 12 for RISC-V (and thus ended up with https://reviews.freebsd.org/P525 to make it work). Ideally this information would be communicated to build.rs somehow, if not available as default cfg predicates.

This was all totally glossed over when the changes were upstreamed, despite my cries within FreeBSD to engage with you all upstream and sort this mess out. I still don't have time to do that engaging myself, but at least this makes you aware of the actual problem. Maybe you have ideas for a decent way to communicate the FreeBSD version to crates so we can at least just hard-code RISC-V as minimum FreeBSD 12 in rustc and have that propagate everywhere; it's not ideal, but at least then it'd be centralised.

For what it's worth, https://reviews.freebsd.org/P522, https://reviews.freebsd.org/P523, https://reviews.freebsd.org/P524 and https://reviews.freebsd.org/P525 is the complete set of patches I hacked up to get a working rustc+cargo capable of compiling a hello world natively on a stock RISC-V GENERIC kernel, that then got picked up by others and had the FreeBSD 12 ABI parts dropped from.