-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarifications needed in FMI 1.0 to be added to FMI 1.0.1 #370
Comments
Modified by andreas.junghanns on 3 Mar 2016 16:37 UTC |
Comment by aviel on 14 Mar 2016 10:27 UTC
|
Comment by andreas.junghanns on 14 Mar 2016 14:45 UTC |
Comment by anonymous on 21 Mar 2016 14:52 UTC |
Comment by andreas.junghanns on 3 May 2016 10:50 UTC
If we want to stay compatible with version 1.0, I think we have to keep "1.0" as the version string. |
Modified by andreas.junghanns on 5 May 2016 10:47 UTC |
Modified by andreas.junghanns on 5 May 2016 10:48 UTC |
Modified by andreas.junghanns on 5 May 2016 10:52 UTC |
Modified by andreas.junghanns on 5 May 2016 12:12 UTC |
Modified by andreas.junghanns on 5 May 2016 12:14 UTC |
Modified by andreas.junghanns on 6 May 2016 08:58 UTC |
Modified by andreas.junghanns on 6 May 2016 11:43 UTC |
Modified by andreas.junghanns on 6 May 2016 11:47 UTC |
Modified by andreas.junghanns on 6 May 2016 11:55 UTC |
Modified by andreas.junghanns on 6 May 2016 12:46 UTC |
Comment by andreas.junghanns on 6 May 2016 13:05 UTC Antoine - I did not find the formula you think should be deleted (and now am running out of time). Could you please fix this yourself? Thank you! |
Modified by andreas.junghanns on 2 Aug 2016 12:56 UTC |
Modified by andreas.junghanns on 2 Aug 2016 13:07 UTC |
Comment by pierre.mai on 28 Sep 2016 09:54 UTC Another Issue: Leading prefixes on zip archive membersWhile I think the specification is clear on this, in practice we have encountered a number of implementations, which generate FMUs where the ZIP Archive contains entries of the form Proposed table entry:
|
Comment by pierre.mai on 28 Sep 2016 10:05 UTC So fixing it in this form would actually require implementations to change to a behavior that was not very helpful in the first place (FMUs would need to do their own unzipping into a temporary directory to access resources) and also differs markedly from FMI 2.0 and current behavior for those implementations. IMHO it would be better to replace the section with the FMI 2.0 section (which also contains fixes for the URI schema vs. protocol vs. authority confusion in the 1.0 text), potentially changed to let the URI point to the root of the unzipped directory and not the resources directory, thereby matching current practice for quite a number of implementations. If that is considered too major a change, then I'd consider not clarifying at all, since this clarification means breaking current practice while not enabling any new practice (in practice binary FMUs would probably perform resource lookup mostly via DLL/SO-relative lookups like they do for FMI 1.0 ME in any case, and will need to continue to do so). |
Comment by andreas.junghanns on 28 Sep 2016 10:21 UTC
With a strict formulation like that, we are - I think - breaking forward compatibility: Some FMUs perfectly legal in 1.0 will not be legal in 1.0.1. I think this would be against our development rules. |
Comment by aviel on 4 Oct 2016 09:28 UTC |
Comment by andreas.junghanns on 4 Oct 2016 09:35 UTC
Hi Antoine: Please feel free to introduce these changes to the 1.0.1 document. |
Comment by pierre.mai on 6 Oct 2016 23:01 UTC
From my point of view, those FMUs were already illegal in 1.0: The standard clearly states the directory structure of the FMU, and including additional structure components like So for me this is a pure clarification of something that the standard already specifies fairly clearly (but that can be easily violated inadvertently by using some common zip utilities with wrong arguments). However if the general agreement of everyone is that these kinds of FMUs were actually legal to begin with -- but then again, what prevents other prefixes from being valid -- I could certainly live with a softer formulation. |
Comment by andreas.junghanns on 7 Oct 2016 09:28 UTC The case of "./" seems also quite different from "../" and other clear directory prefixes as these clearly do change the location of the files, by any of the systems I know and are clearly not allowed by the standard (and little argument seems needed to agree here, I think). If we want to be clear in the standard, we would also have to be clear on similar non-canonical path variants, e.g. "binaries/win32/../win64/" (even if I have no idea how to place this into a zip file). I strongly believe that we should just clarify the expectations, but not outlaw liberal interpretation if they are consistent with most system interpretations. I suggest the following wording:
|
Comment by pierre.mai on 7 Oct 2016 20:44 UTC
Legal/Illegal is probably not a good dichotomy to apply here (since the FMI standard oviously has no legal impact by itself), so let me phrase it this way: Is there anything in the 1.0 standard(s) that can be used to argue that an FMU importing implementation is required to support such FMUs? If there is not, then, since the whole point of FMI is as an interchange standard, exporting implementations should not produce such FMUs. Or in the terms of e.g. the C standard, "." in zip archive entries currently would be implicitly undefined behavior, the clarification would make it explicitly undefined behavior. If there is something in the 1.0 standard(s) that can be used to argue that such FMUs must be supported, then I think this needs to be clarified, since otherwise importing FMUs might not support such FMUs (the fact that currently many implementations just use infozip or 7-zip internally in such a way that makes . transparent to the calling program on many platforms is just a happy accident that obscures the problem but cannot really be relied upon since ZIP implementations are not required to handle . or .. in this way, and there is an obvious security aspect to supporting .. that can lead to non-support).
Since neither the FMU standard nor the implicitly referenced ZIP APPNOTE give semantics for either . or .. it seems to me that they are identical from the POV of the standard (i.e. both . and .. are just simple text with no attached semantics).
I agree that it would be a good idea to include such variants in the clarification (as an aside: Using e.g. infozip this can be accomplished easily:
Unless there is wording in the standard to require importing implementations to support FMUs containing such entries, I do not think that exporting implementations can rely on it. And since there is really no benefit in using non-canonical names, I don't see the point. Obviously importing implementations are (and should be) free to support such FMUs if they so wish...
I can certainly live with this wording, if that is more amenable to consensous, though it should be noted that the standard currently does not as far as I can see provide a definition of what canonical means in this context... |
Comment by andreas.junghanns on 7 Oct 2016 22:17 UTC That means: We can argue a lot about what we should have done, it does not help here: If something was not explicitly forbidden, we cannot start forbidding it in a bug-fix release. For exporters it is a good idea to be as clean as possible following the standard - adding clarifications helps that. For importers, it is a quality of implementation issue to handle even liberal interpretations of the standard. About "canonical": I think we can reasonably rely on definitions that can be found (consistently) with web searches - no need to define that in the standard. |
Comment by pierre.mai on 8 Oct 2016 13:15 UTC Replying to [comment:27 andreas.junghanns]:
That is not something I am disputing. And I'm not arguing what should have been done, I'm arguing about what the standard actually states and means. While the underlying issue is not that significant, the same issues apply e.g. to the fix for the fmuLocation parameter issue... I.e. since the standard was unclear, it is allowed that FMUs relied on the URI pointing to the unpacked archive, hence we cannot now forbid this?
This blanket statement makes me somewhat unsure of the semantics of the FMI standard: If everything that is not explicitly forbidden (and is not even implicitly allowed) is allowed, and hence must be supported by implementations (which is what "allowed" in practice means, because of course everyone is allowed to do whatever they please unless they want it to actually work across implementations), then this is the reverse of any language or interchange standard that I have ever worked on or implemented: Usually only behaviour that is explicitly or at least implicitly specified is defined behavior, and only that is behavior that implementations are required to support. Or in other words: What does compliance to the FMI standard for both exporters and importers actually mean: If everything that is not explicitly forbidden is "allowed", then compliance for importers is probably not achievable (and probably not achievable for exporters, too, for issues cutting in the other direction).
It cannot be a quality of implementation issue if that is actually standard allowed, non-optional behavior, it would be a compliance issue. Otherwise compliance has no operative meaning (i.e. two implementations could both be compliant yet unable to exchange FMUs that do not use any optional features). So if the accepted position is that a FMU using ./ prefixes and other non-canonical (FWIW) paths in the zip archive is standard compliant (i.e. operating under a valid interpretation of the standard), then I think the clarification needs to point this out so that importing implementations do in fact support these FMUs, because they would otherwise not be standard compliant.
I'd at least spell out the common cases of concern, since path canonicalization also usually includes case and Unicode canonicalization and differs between OSes to a large degree and those are not issues we are concerned with. |
Modified by andreas.junghanns on 26 Jan 2017 09:56 UTC |
Modified by andreas.junghanns on 26 Jan 2017 14:11 UTC |
Comment by karl.wernersson on 10 May 2017 10:31 UTC I don’t like the changes regarding it is unclear if the importer has to call fmiEventUpdate after a discrete variable changed, or if this should be auto detectedIn the V 1.0 states (regarding what is an event) 1. At a predefined time instant ti = Tnext(ti-1) that was defined at the previous event instant ti-1 either by the FMU, or by the environment of the FMU due to a discontinuous change of a continuous input signal variable or a change of a discreteI input uj at ti. Such an event is called time event. I also has the following false footnote Input signals are defined below. In V 1.0.1 the part that considers discrete changed inputs and the footnote are removed so it now states 1. At a predefined time instant ti = Tnext(ti-1) that was defined at the previous event instant ti-1. Such an event is called time event. So we have removed the reference to discreet inputs in the event section. fmiEventUpdate() has to be called from the simulation environment after discrete input variables where changed or continuous inputs where changed discontinuously. I don’t like this change because
1. The environment of the FMU triggers an event at the current time instant because at least one My opinion is that the current text (minus the footnote) is good enough but I have a proposed change to make it slighly better. I will update the source at the end of this week if no one protests. |
Comment by andreas.junghanns on 29 May 2017 17:32 UTC |
Comment by aviel on 12 Jun 2017 16:36 UTC
|
Comment by aviel on 14 Jun 2017 14:14 UTC |
Comment by efredriksson on 20 Jun 2017 16:28 UTC |
Comment by aviel on 13 Jul 2017 07:23 UTC |
Modified by andreas.junghanns on 26 Jan 2017 14:11 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 26 Jan 2017 09:56 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 2 Aug 2016 13:07 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 2 Aug 2016 12:56 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 6 May 2016 13:05 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 6 May 2016 12:46 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 6 May 2016 11:55 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 6 May 2016 11:47 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 6 May 2016 11:43 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 6 May 2016 08:58 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 5 May 2016 12:14 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 5 May 2016 12:12 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 5 May 2016 10:48 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Modified by andreas.junghanns on 5 May 2016 10:47 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Reported by andreas.junghanns on 3 Mar 2016 16:34 UTC
This ticket is a collection of clarification needed in case we decide to have a maintenance-release of FMI 1.0.
Please add here in the ticket description your points:
Migrated-From: https://trac.fmi-standard.org/ticket/370
The text was updated successfully, but these errors were encountered: