<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Separate compiled code: possible regression in LabVIEW 2012? in LabVIEW Development Best Practices Discussions</title>
    <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432122#M596</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree that it is a sub-obtimal solution. I already plan to regroup with the appropriate internal stakeholders to discuss this further.&amp;nbsp; I'll update this thread with info as it becomes available.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 05 Dec 2012 21:19:15 GMT</pubDate>
    <dc:creator>Elijah_K</dc:creator>
    <dc:date>2012-12-05T21:19:15Z</dc:date>
    <item>
      <title>Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432117#M591</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm posting here since it's most likely to have an audience&amp;nbsp; that use source control for their LabVIEW projects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My project is source controlled, and since 2 years all VIs and CTLs have separate object code to minimize the number of changed file at each commit. This was a huge improvement for me not to have tons of VIs modified when I changed a typo in a typedef.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, I upgraded to LabVIEW 2012 in september and some time ago I realized this: if I change a typedef (for example add another control to a typedefed cluster), the VIs that use it will be saved again. This is a regression since in LV 2011 it's not the case. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Realizing this I downgraded to LV2011 &lt;IMG src="http://forums.ni.com/legacyfs/online/emoticons/sad.png" /&gt; (I had to replay all my commits made under 2012, tough stuff!). I'm wondering if there's a reason for this, or is it just a bug?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I attached a sample project that has a typedef'ed cluster used in two VIs. The project is saved both in 2011 and 2012 formats.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To reproduce the problem, simply add a control to the cluster. In LV 2011, the VIs are left unmodified. However in 2012 they show as modified when you open them, and saving them make them look modified in source control &lt;IMG src="http://forums.ni.com/legacyfs/online/emoticons/confused.png" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot for any comments on this!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 11:47:57 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432117#M591</guid>
      <dc:creator>CharlesB64</dc:creator>
      <dc:date>2012-12-05T11:47:57Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432118#M592</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Looking into it... thanks for bringing this to my attention.&amp;nbsp; I'll see what I can find out and I'll post shotly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eli&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 15:51:34 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432118#M592</guid>
      <dc:creator>Elijah_K</dc:creator>
      <dc:date>2012-12-05T15:51:34Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432119#M593</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What you've discovered was an intentional change that was made specifically for typedefs in LabVIEW 2012.&amp;nbsp; This change was made to address a rather serious issue with typedefs that occured when multiple revisions were made to the typedef without callers being loaded.&amp;nbsp; This could lead to lost changes to the typedef, among other problems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;R&amp;amp;D determined that the best way to avoid these issues was to require that calling VIs be loaded and saved.&amp;nbsp; This is the expected behavior in LabVIEW moving forward.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry I don't have better news - will you be willing / able to upgrade 2012?&amp;nbsp; Keep in mind that you may run into the issue described above in 2011,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eli&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 19:01:08 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432119#M593</guid>
      <dc:creator>Elijah_K</dc:creator>
      <dc:date>2012-12-05T19:01:08Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432120#M594</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Eli--&lt;/P&gt;&lt;P&gt;So that's it, there's no plan for improving that behavior moving forward? Seems like a sub-optimal fix to the (admittedly critical) problem. Has there been any thought to including version numbering or something similar with the typedef to ensure changes are correctly propagated (like backwards-compatibility with objects)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, given this behavior, is there any benefit in separating compiled code for *.ctl files at all?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 20:27:20 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432120#M594</guid>
      <dc:creator>TurboPhil</dc:creator>
      <dc:date>2012-12-05T20:27:20Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432121#M595</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That's dissapointing to hear. Typedef propogation changes is a plague that I hoped would be gone for good with the compile code seperation feature.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 21:17:52 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432121#M595</guid>
      <dc:creator>vishots.com</dc:creator>
      <dc:date>2012-12-05T21:17:52Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432122#M596</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree that it is a sub-obtimal solution. I already plan to regroup with the appropriate internal stakeholders to discuss this further.&amp;nbsp; I'll update this thread with info as it becomes available.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 21:19:15 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432122#M596</guid>
      <dc:creator>Elijah_K</dc:creator>
      <dc:date>2012-12-05T21:19:15Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432123#M597</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Any thoughts on separating compiled code for *.ctl files? Is that still recommended? And if so, can you explain what it buys us?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 21:35:44 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432123#M597</guid>
      <dc:creator>TurboPhil</dc:creator>
      <dc:date>2012-12-05T21:35:44Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432124#M598</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-family: &amp;amp;quot;Arial&amp;amp;quot;,&amp;amp;quot;sans-serif&amp;amp;quot;; color: #333333; font-size: 10pt;"&gt;I'm happy to hear that this bug is fixed in LV2012, since I got hit severely by this bug, I've never dared to separate the compiled code again.&lt;BR /&gt;But now I might try it again.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV class="mcePaste" id="_mcePaste" style="position: absolute; top: 0px; left: 0px;"&gt;﻿&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Dec 2012 22:01:42 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432124#M598</guid>
      <dc:creator>MikaelH</dc:creator>
      <dc:date>2012-12-05T22:01:42Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432125#M599</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Eli for this explanation. I'm staying away from 2012 because of this, it's too important for me to have clean commit history. If a VI is modified in a commit, it's because the &lt;EM&gt;code&lt;/EM&gt; in this VI has changed, not because a dependancy has changed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I put too much value in the list of changed files of a commit, it brings essential info on what happened. If it's cluttered with dependencies change this info disappears.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; This is also important&amp;nbsp; when tracking a VI's history: I want to see only commits that changed VI's code to have insights on what can happen through the time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've been also hit several times by side effects of the problem you mention: unbundle entries that are modified, and behaviour is changed.&amp;nbsp; Also typedef constants that gets re-initialized to their default value without warning.&amp;nbsp; Not really acceptable. I'm aware of this and it's good it has been had to be taken into account. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But I believe it could be better handled, at least with a dialog listing the VIs that use the typedef. Better detection of these side effects, would be perfect, in order to list only really affected VIs, since many times a typedef is referenced in VI's connector but not used in its code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt; Keep in mind that you may run into the issue described above in 2011,&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Oh, thanks for the warning, but I'm OK since I have now unit tests with 100% code coverage!&amp;nbsp; &lt;IMG src="http://forums.ni.com/legacyfs/online/emoticons/cool.png" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;...Nah it's just a dream.&lt;IMG src="http://forums.ni.com/legacyfs/online/emoticons/cry.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Dec 2012 08:18:07 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432125#M599</guid>
      <dc:creator>CharlesB64</dc:creator>
      <dc:date>2012-12-06T08:18:07Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432126#M600</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have not yet moved up to LabVIEW 2012, but have share similar concerns with Charles in terms of a commit to a source code control tools should be recording changes actually made to code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is slightly ironic that those who follow good coding practice and use TypeDef's a lot to make well structure code that is maintainable will suffer the most.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Dec 2012 08:34:22 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432126#M600</guid>
      <dc:creator>danny_t</dc:creator>
      <dc:date>2012-12-06T08:34:22Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432127#M601</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eli,&lt;/P&gt;&lt;P&gt;I'm worknig in a test development goup and we deal with test software in a regulated environment (medical business).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Therefore I'm fully with the other users here and must say, that this behaviour of LabVIEW 2012 is definitely unacceptable&lt;/P&gt;&lt;P&gt;for us. So I can only strongly emphasize the need for a fix of this typedef bug WITHOUT the VI modification propagation issue.&lt;/P&gt;&lt;P&gt;So please keep us updated, how NI plans to deal with this. &lt;/P&gt;&lt;P&gt;For us it is also very important to know, if it is possible at all doing this fix without this nasty side effect we see now.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Markus&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Dec 2012 09:31:54 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432127#M601</guid>
      <dc:creator>markus_71</dc:creator>
      <dc:date>2012-12-06T09:31:54Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432128#M602</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eli, Markus, et al.,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a suggestion for a workaround to the 2012 issue.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are using VSS (I know, hardly source control - I expect us to graduate to SVN soon) and by default, source files are read-only.&amp;nbsp;&amp;nbsp; When I try to edit a file, LV will prompt me to check it out, which I usually do.&amp;nbsp; When I save the project, I know that only the files I have actually edited are writeable so I have LabVIEW save only those (i.e., I click the "Continue without prompts" button when prompted).&amp;nbsp; This means that the calling files do not need to be modified; they get the updated type definition when they are loaded/compiled.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I believe that SVN has an option to require a lock as a general property.&amp;nbsp; I realize that this detracts from the main use models of SVN (copy-modify-merge) but this does not currently work with .lvproj, .lvlib, &amp;amp; .lvclass files anyway.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, you will need to configure source control in LV to NOT include callers when checking out files and to Prompt to checkout files when edited.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If this is a bad idea please chime in!&amp;nbsp; I would hate to discover later than I am missing some source changes with this method of working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Home this helps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jim "Stone Tools" Grady&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Dec 2012 13:21:24 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432128#M602</guid>
      <dc:creator>JimGrady</dc:creator>
      <dc:date>2012-12-06T13:21:24Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432129#M603</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: &amp;amp;quot;Calibri&amp;amp;quot;,&amp;amp;quot;sans-serif&amp;amp;quot;"&gt;Eli&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: &amp;amp;quot;Calibri&amp;amp;quot;,&amp;amp;quot;sans-serif&amp;amp;quot;"&gt;Here in the nuclear sector I have to concur with others that are in regulatory environments.&amp;nbsp; This undermines expansion of LabVIEW into some of our laboratory areas where source control is mandatory.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: &amp;amp;quot;Calibri&amp;amp;quot;,&amp;amp;quot;sans-serif&amp;amp;quot;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: &amp;amp;quot;Calibri&amp;amp;quot;,&amp;amp;quot;sans-serif&amp;amp;quot;"&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="MsoNormal" style="margin: 0cm 0cm 0pt;"&gt;&lt;SPAN style="font-size: 11pt; color: #1f497d; font-family: &amp;amp;quot;Calibri&amp;amp;quot;,&amp;amp;quot;sans-serif&amp;amp;quot;"&gt;Blair Smith&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV class="mcePaste" id="_mcePaste" style="left: 0px; position: absolute; top: 0px;"&gt;﻿&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Dec 2012 16:28:38 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432129#M603</guid>
      <dc:creator>GuessWho</dc:creator>
      <dc:date>2012-12-10T16:28:38Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432130#M604</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This problem doesn't stop you from doing source code control.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Dec 2012 17:32:53 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432130#M604</guid>
      <dc:creator>vishots.com</dc:creator>
      <dc:date>2012-12-10T17:32:53Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432131#M605</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin-bottom: .0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;Hi All,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;I want to point you to the other side of Eli comment.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;I am working mostly with LabVIEW FPGA. In LabVIEW 2011 I had couple of times cases that I change something and it looks like the VI haven't changed. LabVIEW writes "bitfile up to date" when you check the FPGA compiled code for changes.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;But the code wouldn't run. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;When forcing recompile the code execute normally.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;For me this behavior is much more of concern. Codes look OK when you open it / test it. But it doesn't run on the machine is much more of concern.&amp;nbsp; I hope that in LabVIEW 2012 this wouldn't happen. Seems that in LabVIEW 2012 this issues are fixed. I don’t want those issues back.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;Thanks - Amit,&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Dec 2012 17:36:11 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432131#M605</guid>
      <dc:creator>AmitShachaf</dc:creator>
      <dc:date>2012-12-10T17:36:11Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432132#M606</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Amit - &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't think anyone doubts the severity of the bug or the necessity of fixing it; rather, the choice of how to fix it resulted in deprecating a feature that developers in many industries rely critically upon. Hopefully NI can find a way to fix the bug without having to conflate one file's changes with several other files that weren't changed (by the user).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Dec 2012 17:44:01 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432132#M606</guid>
      <dc:creator>David_Staab</dc:creator>
      <dc:date>2012-12-10T17:44:01Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432133#M607</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Michael&lt;/P&gt;&lt;P&gt;Thanks, knew that.&amp;nbsp; We seem to have lost track of the original post - to quote,&lt;/P&gt;&lt;P&gt;"My project is source controlled, and since 2 years all VIs and CTLs have separate object code to minimize the number of changed file at each commit. This was a huge improvement for me not to have tons of VIs modified when I changed a &lt;SPAN style="text-decoration: underline;"&gt;typo in a typedef&lt;/SPAN&gt;."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;His issue seems to be just the overhead of changed files at commit.&amp;nbsp; I'm coming at it from a slightly different world.&amp;nbsp; It's the discussion of unwarranted code change across a whole project I'd like to avoid, when nothing has changed that would affect functionality.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Change management includes predicting, accurately, which project artifacts will be modified during any change activity.&amp;nbsp; Source control is not just a cool tool to save the developer some time.&amp;nbsp; If I made the typo fix he mentions, and a file changed that was not on the list of approved deltas, then someone would have some 'splainin to do - hopefully, the analyst that made the delta list; I'd certainly be backing out the change until the change authority reviewed the problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And yes, I understand why the change was made; been there, got the bruises.&amp;nbsp; If this is the final solution, we'll have to get used to it.&amp;nbsp; But if NI can come up with an alternative, I'd like to hear about it.&amp;nbsp; Fortunately, this is not a problem for us right now; the only projects I am aware of here that are doing change management at that level are also mired three versions back.&amp;nbsp; I'm just looking to the future.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Blair&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Dec 2012 18:44:21 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432133#M607</guid>
      <dc:creator>GuessWho</dc:creator>
      <dc:date>2012-12-10T18:44:21Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432134#M608</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;TurboPhil wrote:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Has there been any thought to including version numbering or something similar with the typedef to ensure changes are correctly propagated (like backwards-compatibility with objects)?&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Adding version numbering to typedefs doesn't solve the problem.&amp;nbsp; You'd need to change the typedefs so they keep a revision history in the same way classes do.&amp;nbsp; Without a revision history, there's always a chance Labview will not mutate the bundle/unbundle node correctly because the vi's bundling/unbundling the data may not be loaded into memory when the typedef is changed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Unfortunately, adding a revision history also carries some additional costs and concerns.&amp;nbsp; Keeping a mutation history means the size of the typedef will grow over time.&amp;nbsp; That will be unacceptable in some cases, like fpga or rt code.&amp;nbsp; How do you handle runtime issues where a version 3 block of data is sent to a vi that only knows about version 2.&amp;nbsp; What if the data field the v2 vi expects doesn't exist in v3?&amp;nbsp; Even with a revision history it is all too easy for Labview to get the mutations wrong.&amp;nbsp; Imagine this scenario...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Suppose I have a typedef with a double I've labelled, "TempLimit," and I'm unbundling that in many different places in my app.&amp;nbsp; Now suppose I make the following changes:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Change the name of "TempLimit" to "TempSetpoint."&lt;/P&gt;&lt;P&gt;2. Add a new double and name it "MaxTemp."&lt;/P&gt;&lt;P&gt;3. Save and apply the edited typedef.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My intent is for the old TempLimit field to be replaced by the new MaxTemp field.&amp;nbsp; How does Labview know that's what I want to do?&amp;nbsp; I'm pretty sure LV will mutate all the TempLimit bundle/unbundle nodes to TempSetpoint nodes.&amp;nbsp; (Although the more recent versions might just leave a broken wire...)&amp;nbsp; That could have a huge impact on the safety of the system.&amp;nbsp; In this scenario it doesn't matter if the vi is loaded into memory or not when I make the edit.&amp;nbsp; With certain combinations of edits it is impossible for LV to know what the developer intended.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The more changes that are made to the typedef before those changes are applied to each vi that bundles/unbundles data, the more likely it is that LV will mutate the changes incorrectly without you being aware of it.&amp;nbsp; The best way to prevent that from happening is by resaving each vi that bundles/unbundles the data whenever the typedef is changed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;David_Staab wrote:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't think anyone doubts the severity of the bug...&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IMO, it wasn't a bug. Labview was doing exactly what it was supposed to do. It's a usability issue in that people have expectations of typedefs that go beyond what they were originally designed to be used for. Those extended use cases lead to unintended, unexpected, and unintuitive changes to other parts of the application.&amp;nbsp; The change with LV2012 is a usability improvement.&amp;nbsp; People are less likely to run into situations where those kinds of changes are made.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Typedefs work okay when *all* the vis that use it are guaranteed to be loaded into memory anytime the typedef is edited (I strongly suspect that's the reason VI Trees became the recommended best practice) and as long as the changes are applied frequently.&amp;nbsp; In environments where componentized applications or scope limiting changes are the norm, typedefs don't work well without taking extraordinary precautions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Blair Smith wrote:&lt;P&gt;&lt;/P&gt;&lt;P&gt;But if NI can come up with an alternative, I'd like to hear about it.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV class="mcePaste" id="_mcePaste" style="position: absolute; top: 0px; left: 0px;"&gt;﻿&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are a couple alternatives:&lt;/P&gt;&lt;P&gt;1. Create separate vis with the sole function of bundling/unbundling data from the typedef. Use these vis everywhere you would normally bundle/unbundle directly. Before changing a typedef, load these vis into memory. After the typedef is changed, the recompiles are restricted to that relatively small set of vis instead of spread out all over your application.&lt;/P&gt;&lt;P&gt;2. Use classes. Doing the above is the exact same thing classes do, except classes have additional benefits too and they're already built into LV.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Dec 2012 19:18:41 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432134#M608</guid>
      <dc:creator>Daklu</dc:creator>
      <dc:date>2012-12-14T19:18:41Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432135#M609</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is my use case:&lt;/P&gt;&lt;P&gt;1. I use a type def whenever two VIs share a data structure (e.g. I want to send a message over a queue, over a connector pane, via a file, via (insert any data passing scheme of your choice). Note: I also use them to pass data within a VI, but that is a "kind-a boring use case" for this thread.&lt;/P&gt;&lt;P&gt;2. When I change a type def, I expect all VIs that use that type def to be re-compiled (not necessarily on the spot - but definetly before they run).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pretty much end of story.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, there is a related feature in LabVIEW that, as best as I'm able to tell, keeps track of all external files referenced in a VI, and in addition to keeping track of their lineage (e.g. member of this lib or class) and location on disk, also keeps a timestamp. So If A.vi calls B.vi, and if I touch B.vi such that it is saved back to disk, even though I did not change any of the external properties of B (say its conpane), whenever I load A into memory, LabVIEW will state that A.vi has been modified, and will insist that I need to save it. And I did not touch it! For those of us that use source control - this is a royal pain. Back in the 8.20 days, this happened all the time when toolkits were not compiled, and all developers would end up with their own timestamps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code / Object separation did a beautiful job of addressing that issue (so that unless there is a 'code' change to A.vi, it is not flagged as 'dirty' - needing a change.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think these two issues are related. I'm not willing to give on either one.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, adding to 1 and 2 above:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. If I do not change my 'source', don't tell me that I did (because then I have to check it out of source control, save it, check it back in - even though there were no changes). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note: #3 only applies if you select to separate out the object code (if you don't, then your VI will require new object code, and will need to be saved).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And note that for #2, typedefs can be nested. A change is a change.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The recommendation that we need to get everything into memory brings back oh such fond memories of when I took all several thousand of my VIs home for the day, loaded them into memory to make certain types of changes, then tucked them back in to source control. That is not a recipe for productivity. Or determinism.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Dec 2012 23:15:17 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432135#M609</guid>
      <dc:creator>fredb</dc:creator>
      <dc:date>2012-12-14T23:15:17Z</dc:date>
    </item>
    <item>
      <title>Re: Separate compiled code: possible regression in LabVIEW 2012?</title>
      <link>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432136#M610</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN&gt;I started another thread on this topic.&amp;nbsp; &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://forums.ni.com/t5/LabVIEW/separate-compilation-in-LV12/td-p/2219922" target="_blank"&gt;http://forums.ni.com/t5/LabVIEW/separate-compilation-in-LV12/td-p/2219922&lt;/A&gt;&lt;SPAN&gt;, and someone referred me to this thread.&amp;nbsp; I'm not surprised to hear that this was an intentional change, but I'd like to reinforce remarks that this pretty much undoes all the benefit of separate compilation with respect to source control.&amp;nbsp; As I said in the post quoted below, it's a minimum requirement for source control that the comparison tool be able to detect whatever changes are made to the files.&amp;nbsp; If LVcompare says "no change" then the files should be equivalent.&amp;nbsp; Currently LVcompare is saying "no change".&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does using classes avoid this problem?&amp;nbsp; I haven't used classes so far because they seem to be overkill for what I need.&amp;nbsp; Also many of my typedefs are more or less pieces of user interface where at some point the cluster is presented for manual data entry, and I seem to recall from what I read on classes that there isn't any comparable straightforward way to enter class values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Rob&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;I've verified that redefining strict type defs did not cause the referencing VI to change in LV11, and I have submitted this as a bug report.&amp;nbsp; It's obviously a work in progress what it means to have "separate compilation" in labview, but by comparison to ordinary text-based programming languages, what it ideally ought to mean is that the "source code" only contains a "name" for the referenced entities, and so need not be changed (automatically or otherwise) when the semantic associations of that name change in a way that is semantically compatible with that individual reference.&amp;nbsp; I understand that this is very different from how labview has worked in the past, but it is a much better fit for source control systems. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would also say that a minimum invariant that is needed for sane source control is that when a VI is is modified, then the before and after VIs should be &lt;EM&gt;different&lt;/EM&gt; according to the comparison tool.&amp;nbsp; In LV 12, they are not different (according to the comparison tool.)&amp;nbsp; Whether this is considered a requirement for the comparison tool or a constraint on invisible piddling in the VI file is something that NI's language designers need to work out.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Dec 2012 22:52:48 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW-Development-Best/Separate-compiled-code-possible-regression-in-LabVIEW-2012/m-p/3432136#M610</guid>
      <dc:creator>robmacl</dc:creator>
      <dc:date>2012-12-17T22:52:48Z</dc:date>
    </item>
  </channel>
</rss>

