)]}'
{
  "commit": "316a79f4320bbdfd7fd1eead13ea45f71bc66d5b",
  "tree": "f13af5bfd0b2bc0f6b9b10ddf81f8d3a0eae6055",
  "parents": [
    "2ebb1263e3506412889410b567fa813ca3cb5c63"
  ],
  "author": {
    "name": "Tsukasa OI",
    "email": "floss_rust@irq.a4lg.com",
    "time": "Wed Sep 17 10:54:02 2025 +0000"
  },
  "committer": {
    "name": "Tsukasa OI",
    "email": "floss_rust@irq.a4lg.com",
    "time": "Wed Sep 17 10:54:02 2025 +0000"
  },
  "message": "Stabilize 29 RISC-V target features (`riscv_ratified_v2`)\n\nThis commit stabilizes RISC-V target features with following constraints:\n\n*   Describes a ratified extension.\n*   Implemented on Rust 1.88.0 or before.\n    Waiting for four+ version cycles seems sufficient.\n*   Does not disrupt current rustc\u0027s target feature + ABI handling.\n    It excludes \"E\" and all floating point-arithmetic extensions.\n    \"Zfinx\" family does not involve floating point registers but\n    not stabilizing for now to avoid possible confusion between\n    the \"F\" extension family.\n*   Not vector-related (floating point and integer).\n    While integer vector subsets should not cause any ABI issues\n    (as they don\u0027t use ABI-dependent floating point registers),\n    we need to discuss before stabilizing them.\n*   Supported by the lowest LLVM version supported by rustc (LLVM 20).\n\nList of target features to be stabilized:\n\n1.  \"b\"\n2.  \"za64rs\"   (no-RT)\n3.  \"za128rs\"  (no-RT)\n4.  \"zaamo\"\n5.  \"zabha\"\n6.  \"zacas\"\n7.  \"zalrsc\"\n8.  \"zama16b\"  (no-RT)\n9.  \"zawrs\"\n10. \"zca\"\n11. \"zcb\"\n12. \"zcmop\"\n13. \"zic64b\"   (no-RT)\n14. \"zicbom\"\n15. \"zicbop\"   (no-RT)\n16. \"zicboz\"\n17. \"ziccamoa\" (no-RT)\n18. \"ziccif\"   (no-RT)\n19. \"zicclsm\"  (no-RT)\n20. \"ziccrse\"  (no-RT)\n21. \"zicntr\"\n22. \"zicond\"\n23. \"zicsr\"\n24. \"zifencei\"\n25. \"zihintntl\"\n26. \"zihintpause\"\n27. \"zihpm\"\n28. \"zimop\"\n29. \"ztso\"\n\nOf which, 20 of them (29 minus 9 \"no-RT\" target features) support\nruntime detection through `std::arch::is_riscv_feature_detected!()`.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "10aaadd5688a37c3f8ddc3c7f7170c8c2cd18231",
      "old_mode": 33188,
      "old_path": "compiler/rustc_codegen_ssa/src/back/metadata.rs",
      "new_id": "41b692c466c9b9ddf1e6d8d509c97c80a0a846c0",
      "new_mode": 33188,
      "new_path": "compiler/rustc_codegen_ssa/src/back/metadata.rs"
    },
    {
      "type": "modify",
      "old_id": "dc70089c385fefdd97e0cdd48ef037d7ed80d1f2",
      "old_mode": 33188,
      "old_path": "compiler/rustc_target/src/target_features.rs",
      "new_id": "f2f0802f12b20d7486d20efb8d46c44c36d8f885",
      "new_mode": 33188,
      "new_path": "compiler/rustc_target/src/target_features.rs"
    },
    {
      "type": "modify",
      "old_id": "1e57d09edb1438500d8eb45b60894cd8d2d4f188",
      "old_mode": 33188,
      "old_path": "library/std_detect/src/detect/arch/riscv.rs",
      "new_id": "f6d708dd2ee0535f718f74ec6f059fe860c288d8",
      "new_mode": 33188,
      "new_path": "library/std_detect/src/detect/arch/riscv.rs"
    }
  ]
}
