|
| 1 | +# **Liaison Subcommittee Meeting on 2025-10-02 @ 1600 BST / 1700 CEST / 1100 EDT** |
| 2 | + |
| 3 | +[Link](https://www.worldtimebuddy.com/?qm=1&lid=14,12,1850147,5&h=14&date=2025-10-2&sln=16-17&hf=1) to meeting time in common time zones. |
| 4 | + |
| 5 | +| Search Key | Description | |
| 6 | +| ----- | ----- | |
| 7 | +| \[todo\] | Action Item | |
| 8 | +| \[decision\] | Something decided on | |
| 9 | +| \[important\] | Key information | |
| 10 | + |
| 11 | +## **“ISO26262 and Rust”** |
| 12 | + |
| 13 | +## **Agenda** |
| 14 | + |
| 15 | +1. Solicitation of notetaker |
| 16 | +2. Introduction of speaker |
| 17 | +3. Broad scope introduction: |
| 18 | + * What is functional safety? |
| 19 | + * What are the basics of achieving functional safety for a product? |
| 20 | + * Including ASILs |
| 21 | + * How tools can assist |
| 22 | + * Why they need to be certified |
| 23 | +4. Question and answers |
| 24 | +5. Round table |
| 25 | + |
| 26 | +## **Check-in area** |
| 27 | + |
| 28 | +**Please add your name, and an emoji that describes your day.** |
| 29 | + |
| 30 | +* Andrew Fernandes ☕ |
| 31 | +* Tshepang 🙂 |
| 32 | +* Samuel Wright |
| 33 | +* Oreste Bernardi 🛟 |
| 34 | +* Douglas Deslauriers 😷 |
| 35 | +* Pete LeVasseur 🚗🦺 |
| 36 | +* Car |
| 37 | +* Joni Pelham ✈️ safety |
| 38 | +* José Rui Simões 🚘 |
| 39 | +* Sabah Kabbou ![Veste de sécurité][image1]![Automobile en approche][image2] |
| 40 | +* John Vishnefske🚀 |
| 41 | +* Félix Fischer ☕ |
| 42 | +* Xander Cesari 🍳 |
| 43 | +* Will Cunningham ☕ |
| 44 | +* Ana Hobden |
| 45 | +* Christof Petig 🚲 |
| 46 | +* Manuel Hatzl |
| 47 | +* Max Jacinto 🍀 |
| 48 | +* Olivier PHILIPPE 🚘 |
| 49 | +* Samuel Preston 🐱🐉 |
| 50 | +* Orson Pessin🍺 |
| 51 | +* David Wood 🦀 |
| 52 | +* Tiago Silva ☕ |
| 53 | +* Nicholas R. Smith ⚡🔌 |
| 54 | +* Niko Matsakis 🎃 |
| 55 | +* Alex Celeste ☕ |
| 56 | +* Gideon Mueller |
| 57 | +* David VomLehn 🚀 |
| 58 | +* Daniel Szucs 🌀👽 |
| 59 | + |
| 60 | +**Notetaker:** |
| 61 | + |
| 62 | +* Alex Celeste ☕ |
| 63 | + |
| 64 | +For tips on how we take notes in the Safety-Critical Rust Consortium, please see the [Meeting Notetaker Role](https://github.com/rustfoundation/safety-critical-rust-consortium/blob/main/docs/notetaker-role.md) doc. |
| 65 | + |
| 66 | +## **Tasks** |
| 67 | + |
| 68 | +* Search for the \[todo\] markers |
| 69 | + |
| 70 | +## **Meeting Minutes** |
| 71 | + |
| 72 | +* Solicitation of notetaker (Alex); introduction of Jill Britton |
| 73 | +* Jill to introduce herself and the talk: starting at a basic level in order to ensure level field |
| 74 | +* Starting with What is meant by Functional Safety |
| 75 | + * Protective measures between system, users, and hazards caused by failure of system |
| 76 | + * Many industry-specific standards: |
| 77 | + * IEC 61508 is the parent ISO standard for functional safety, with industry-specific child standards: |
| 78 | + * ISO 26262 for Automotive, well-known, main subject of this presentation |
| 79 | + * IEC 62279 for rail |
| 80 | + * IEC 61511 for industrial processes |
| 81 | + * IEC 61513 for nuclear power plants |
| 82 | + * IEC 62061 for other machinery |
| 83 | + * DO 178B/C \- Aerospace, independent of ISO |
| 84 | + * Same fundamental core used for analysis of all of these except Aerospace: software and tools used must be shown to be safe to a similar end |
| 85 | + * *Anything* used in development is a “tool” |
| 86 | +* How we go about achieving FS |
| 87 | + * Using ISO 26262 as an example (because the basics are the same) \- find *evidence* that the requirements of a Standard have been followed |
| 88 | + * “Principle” is a statement of a requirement; ASILs list whether a requirement is highly recommended, recommended, or not applicable |
| 89 | + * Most such standards are language-oriented and look like they were designed by C users (because they were) |
| 90 | + * *“No unconditional jumps”* and |
| 91 | + * *“Restricted use of pointers”*, for example |
| 92 | + * Many asterisks on certain requirements: justifications can be provided for different approaches to meeting or not meeting |
| 93 | + * These requirements apply to a product rather than to a tool, e.g. a braking system in automotive meets these in order to certify compliance; a tool does not comply to the standard, but helps users write product code which complies |
| 94 | + * “The language handles this automatically” can be one piece of evidence of meeting a requirement, but there must be some kind of evidence |
| 95 | + * Safety Integrity Level / ASIL applies to most of these standards, ranked by criticality: D for a braking system, B for something less critical |
| 96 | + * Safety standards *do not* specify a particular language (do not mandate C despite history) |
| 97 | + * MISRA etc exist to mitigate insufficiencies of the language \- these would not be needed if the insufficiencies did not exist at all |
| 98 | + * Static analysis is recommended (but not compulsory) in order to both: |
| 99 | + * Automate compliance with Guidelines, *and* |
| 100 | + * To check quality of the code |
| 101 | + * Standards *do not* mandate full compliance to Guidelines |
| 102 | + * You don’t have to enforce guidelines that are not relevant, but in that case, **you do have to prove they are not relevant** |
| 103 | + * “Strong typing” is an example of a requirement that can easily be determined to be provided by a language because it is usually a language feature. |
| 104 | +* How tools can assist |
| 105 | + * Compilers, static analysis tools, and similar; are *certified* to meeting FS requirements |
| 106 | + * Users need to provide the evidence tables of meeting the process: certifying the tooling means the user does not need to re-demonstrate the process requirement is being met; a product developer *can* re-do this for any tool including a non-certified tool, but would have to prove it fulfils the process requirement |
| 107 | + * Tools are classified within 26262 according to impact and error detection, giving a “tool confidence”: a static analysis tool cannot introduce errors, but may miss existing ones, and these are reflected in the impact and detection |
| 108 | + * Users can add additional checking to make up for any deficiencies \- the individual tool will remain at the given TD level, but the overall system will become more robust. Using two tools is a common practice though is still not mandatory |
| 109 | + * “Confidence through use” is one possible measure of tool quality |
| 110 | + * To certify a tool: need a certification body, usually TUV or similar, who will need to assess it if new, or examine what has changed |
| 111 | + * For instance: for a static analysis tool, the whole tool could be assessed, or just some of the checkers |
| 112 | + * Certification applies to a specific version, although there is some flexibility for point-releases |
| 113 | + * Requires evidence of testing that the tool behaves as documented |
| 114 | + * Creation of a Safety Manual |
| 115 | + * “Are these manual processes or can they be automated e.g. by CI/CD?” recording this is exactly what the documentation should include \- this is how “we” do it and are recorded as doing so; how *the user* runs it is up to them to integrate |
| 116 | + * In Aerospace: lower toolchain qualification for a tool that is operated by a human running a checklist, higher threshold for an automated tool \- so that human signoff remains a part of the process (this can be counterintuitive to the mindset of a software engineer, and where the appropriate level of automation is) |
| 117 | + |
| 118 | +## **Questions** |
| 119 | + |
| 120 | +* What parts of the language should a Guidelines document talk about? |
| 121 | + * Every part? Can we explicitly not consider parts of the language during Guidelines development? |
| 122 | + * Yes\! **Subsetting**[^1] is encouraged |
| 123 | +* Safety elements out of context? |
| 124 | + * \[conversation moved on\] |
| 125 | +* When an element has changed how much needs to be re-certified? |
| 126 | + * Depends very much on the part of the system that is being modified (colour of vehicle vs. new engine) |
| 127 | + * For example, QAC was re-certified after adding support for MISRA C++ |
| 128 | +* Automated tests \- what matters is not *how* but the result of the test? Could it happen that different approaches that result in testing incorrectly give wrong results (e.g. difference between development and production)? Does there need to be validation for the test cases themselves to ensure consistency of results? AN audit system associated with testing? |
| 129 | + * There is a requirement in DO to split responsibility between writer of test cases and requirements for them, ensuring multiple pairs of eyes |
| 130 | + * Need to specify the configuration very tightly \- should not be able to be different from production if that is what is to be tested |
| 131 | + * Needs to be repeatable |
| 132 | +* State of the art and of acceptance in the safety community? Not all guidelines are the same \- say an original set of guidelines for C that are *not* MISRA and are homegrown \- is this accepted by the community? Can it fulfil the ISO requirement? |
| 133 | + * If you write your own guidelines, they need to help to meet the listed requirements |
| 134 | + * It is OK to write new guidelines but they need to explain evidence for how they help with that; something someone has already written will already demonstrate this |
| 135 | +* Assessors like TUV-SUD are not a government agency \- they are a third-party; DO-178 is government-regulated (FAA et al) and is mandatory for aircraft at all |
| 136 | + * You do need to meet ISO26262 to put a vehicle on the road, but the auditing of that fact is independent |
| 137 | + * DO-178C is itself recommended *by* the FAA; the FAA accredits designated representatives who approve your process \- it is theoretically possible to not follow DO-178C although not very feasible |
| 138 | +* As this applies to Rust and use in Safety Critical? |
| 139 | + * The important thing remains to know what its limitations are and where they are, you still need the solid background, still need support from the community and integration into the pipeline |
| 140 | +* Rust is thinking a lot about language specification at the moment, where does a language Standard fit in, and how does its evolution over time affect this process? |
| 141 | + * This will need an entire separate hourlong meeting\! |
| 142 | + * \[TODO\] follow up on this |
| 143 | +* “Has anyone found openly available examples of Safety Manuals and accompanying documents? In my experience that is usually NDA'd” |
| 144 | + * https://public-docs.ferrocene.dev/main/safety-manual/index.html |
| 145 | + |
| 146 | +## **Additional links** |
| 147 | + |
| 148 | +* Article with flowchart, explaining how a tool becomes determined to be at a certain ISO 26262 Tool Confidence Level: [ISO 26262 tool qualification \- When and how to perform it](https://www.btc-embedded.com/when-and-how-to-qualify-tools-according-to-iso-26262/) |
| 149 | +* [Ferrocene Documentation › Safety Manual](https://public-docs.ferrocene.dev/main/safety-manual/index.html) |
| 150 | + |
| 151 | + |
| 152 | +[^1]: **Subsetting** a language here means to define and use a specific subset of a larger language. Safe Rust is a subset of Unsafe Rust. MISRA C, for example, specifically asks users to subset C in order to more easily (and decidably) satisfy their safety requirements. |
| 153 | + |
| 154 | +[image1]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAC4UlEQVR4Xn2U30tTYRjHLeg/6CqLSOgHtUCbPxtTR+rmnNbcZrP0KMtpRqVYuDLtooIo6MKCyIvoqoSomyDKq0IpHTp/EGgm/shKBKVmhEVz59v7PNtx5+js4st7znk/7+d5zst5T4K50ZagzszVhi00Bp1Zm/8XNauO5mbRfXzTRKulZWxkcnRasgwMG6XeIUN1b8BQ9V6dIbvZTwweFDxR5HGFlNCVxNCY/zfw2I05qRyj6V58SKvFcJoXfXoPXmTqIfuSMD38F3h4FBsKqbtP9y5uJZiFAiapIhxIrcGbFAnfapNYONkfBu5bgacVdvWra7qb9JkWcDk5Imw3A51e7kzp7tmeMiy36GRiWHj7CPDcg7gdUpWfF/aB4Im+lQjccRKBlDIW9hyqwqOdRTyvCMPXcrho0OvRa4S0D4oMvsOR6q1G4I6TF9HrvtSdwETJDp7XMHfLWboqpL2j7kKNB1bhqX5Erm+Ucpe0d9RdqG4v0GTUMPJ1G0vlzqpd1Bh3N37J+hpnDUBzHi9gmBa2ljA8J+nRbdiNcL0uvI7x2SKF2+09LKQOp+rMgyxssoBGhvm+mGHqfj5/G1CTEYexRArftA6RKyYkuD4fqMvGzAB4xPlCoM3Jr8rCikzBFPIcCxXGZ48jZFgIPTkRoRhxWlT2udYL1Qzdk7BNJaRjBreYrBTtV0ZhMeKUEDa5sCLpMG/cDjiyxLM4zDmR5qLBOEKxwe4o7M6LL2QmL8pEhWdcWmFX57vAx7d/MOsHh+Cv0XwfB750B9F1qwsjr5ZkNUOjwvyYl2PCWYcpgNxkGcXidKyN6Chk2Y/Fg4nYmLHQVkSE9O18dpr7kSu+Kas4WrYSbTwulXADptwRE9IpCTrMHbKhAMgWkya7NqXH8Cs3GQsZJjCzdp4iipCDXKtneSld6ljWS/7lVGkslurRKXeDiyoTR9f0TMOINbRW+S9q/jZrf5bK83jXSmiN+vk/0ICjr06GXDcAAAAASUVORK5CYII=> |
| 155 | + |
| 156 | +[image2]: <data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAB7klEQVR4XmNwL/BhoCbGEKAUYwhQijEEKMUYApRiDAFKMYYADE/ydmdEFyNGDkMAhC/5+jJdMXM58d3M4/83M3cw/mziBse/3EJPgNSg68NpYPaUMyyKc///k5/1/z8My039B8cgOXQ9OA0EGWay5d9i9c3//yuvx41BakBq0fVjGKgia5ftcf//f4+bEOx2BRW7XkBgkFp0/RgGmk3f+tnr4///3l///wfRIOzxDgm/hGKgpSC16PrhjI25HcyXvAp0X5kF/39uHf4fRr9xiPr/yR6C3zvEgPkgORAN4oP0gPRiGAjCf+4Vv/3zIOH/R838/6/OfPv/3L3sv7ygNxhrcLv+l+c2+/8joun/q5u///9zzv//5Urwf5AerC4E4f/vi////5X6/65s9f/3rz/9v+rb919JK/S/uorvfzV5t/9SfLr/Pxcu+w8CX4y6gWQhGOM08Jh587/Lyh3/L+v2/IfRzwwn/n9uNu3/O8vZYAxig8ReO84E8x9a9uI2UEXU5n9L3GIUXBs5+//snnW/QbgjZdl/GO7JWg7GRqouuA0EhZEOp+d/eV6jD8jiUxs3bgNhZDElfov3ILWgYMBqICgrOWslhtoIxW73Vsh2QFaEDXvL59mD1IL0IGdDFEX6qv7MMIxuADrGpRYAivZitRBTt4cAAAAASUVORK5CYII=> |
0 commit comments