Topic: Fornux C++ Superset


Author: Phil Bouchard <philippeb8@gmail.com>
Date: Sun, 22 Apr 2018 21:33:41 -0700 (PDT)
Raw View
------=_Part_23348_1586649490.1524458021269
Content-Type: multipart/alternative;
 boundary="----=_Part_23349_1747290290.1524458021269"

------=_Part_23349_1747290290.1524458021269
Content-Type: text/plain; charset="UTF-8"

Greetings,

Because there was a conflict of interests in the past then I feel obliged
to give an update regarding the status of the "Fornux C++ Superset"
(formerly "Fornux C Leak Detector"). This way corporations will not claim
ownership of the idea.

- Fornux C++ Superset harnesses the power of Clang.
- It now supports, as you have guessed, C++98 syntax.
- It's deterministic so it will not slow down your application randomly
like with Java.
- You can see attached examples memory leaks in C & C++ with cyclic
references which are correctly handled and the memory usage never increases.

Like I mentioned previously, I am working hard on a free version I will be
able to share in a month or two.


Regards,
Phil Bouchard
www.fornux.com

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/275992cb-a80b-41bf-a0d4-d9c05ade603b%40isocpp.org.

------=_Part_23349_1747290290.1524458021269
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Greetings,<div><br></div><div>Because there was a conflict=
 of interests in the past then I feel obliged to give an update regarding t=
he status of the &quot;Fornux C++ Superset&quot; (formerly &quot;Fornux C L=
eak Detector&quot;). This way corporations will not claim ownership of the =
idea.</div><div><br></div><div>- Fornux C++ Superset harnesses the power of=
 Clang.</div><div>- It now supports, as you have guessed, C++98 syntax.</di=
v><div>- It&#39;s deterministic so it will not slow down your application r=
andomly like with Java.</div><div>- You can see attached examples memory le=
aks in C &amp; C++ with cyclic references which are correctly handled and t=
he memory usage never increases.</div><div><br></div><div>Like I mentioned =
previously, I am working hard on a free version I will be able to share in =
a month or two.</div><div><br></div><div><br></div><div>Regards,</div><div>=
Phil Bouchard</div><div>www.fornux.com</div><div><br></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/275992cb-a80b-41bf-a0d4-d9c05ade603b%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/275992cb-a80b-41bf-a0d4-d9c05ade603b=
%40isocpp.org</a>.<br />

------=_Part_23349_1747290290.1524458021269--

------=_Part_23348_1586649490.1524458021269
Content-Type: text/x-c++src; charset=US-ASCII; name=memoryleak.cpp
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=memoryleak.cpp
X-Attachment-Id: 812b8956-2ac2-4277-8b2b-e25fc4969a8b
Content-ID: <812b8956-2ac2-4277-8b2b-e25fc4969a8b>

/**

    Fornux C++ Superset -- Example.

    Outputs:

    Speed: 16043.546433 loops / s; Memory usage: 4552 kilobytes

 */


#include <stdlib.h>
#include <unistd.h>
#include <sys/resource.h>

#include <chrono>
#include <iostream>
#include <iomanip>


using namespace std;
using namespace std::chrono;


struct A
{
    int x;

    int i;
    int j;
};

struct B : virtual A
{
    int k;
    int l;
};

struct C : virtual A
{
    int m;
    int n;
};

struct D : B
{
    int o;
    int p;
};

struct E : C
{
    int o;
    int p;
};

struct list_node : D, E
{
    int q;
    int r;

    list_node * p;
};


int main()
{
    milliseconds before, after;

    before = duration_cast<milliseconds>(system_clock::now().time_since_epoch());

    for (int i = 0; ; ++ i)
    {
        // cycle
        struct list_node * p = new list_node;
        p->p = new list_node;
        p->p->p = new list_node;
        p->p->p->p = p;

        // stats
        after = duration_cast<milliseconds>(system_clock::now().time_since_epoch());
        struct rusage r_usage;
        getrusage(RUSAGE_SELF, & r_usage);
        cout << "\rSpeed: " << setprecision(11) << i * 1000.0 / (after - before).count() << " loops / s; Memory usage: " << r_usage.ru_maxrss << " kilobytes" << flush;
        usleep(1);
    }

    return 0;
}

------=_Part_23348_1586649490.1524458021269
Content-Type: text/x-csrc; charset=US-ASCII; name=memoryleak.c
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=memoryleak.c
X-Attachment-Id: a0338cc0-16ad-4bed-9341-ae5a6fbde47b
Content-ID: <a0338cc0-16ad-4bed-9341-ae5a6fbde47b>

/**

    Fornux C++ Superset -- Example.

    Outputs:

    Speed: 16563.387712 loops / s; Memory usage: 4544 kilobytes

 */


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/resource.h>


double time_diff(struct timeval x , struct timeval y);

struct list_node
{
    struct list_node * p;
};


int main()
{
    struct timeval before, after;

    gettimeofday(& before, (struct timezone *) NULL);

    for (int i = 0; ; ++ i)
    {
        // cycle
        struct list_node * p = malloc(sizeof(struct list_node));
        p->p = malloc(sizeof(struct list_node));
        p->p->p = malloc(sizeof(struct list_node));
        p->p->p->p = p;

        // stats
        gettimeofday(& after, (struct timezone *) NULL);
        struct rusage r_usage;
        getrusage(RUSAGE_SELF, & r_usage);
        printf("\rSpeed: %f loops / s; Memory usage: %ld kilobytes", i * 1000000.0 / time_diff(before , after), r_usage.ru_maxrss);
        fflush(stdout);
        usleep(1);
    }

    return 0;
}

double time_diff(struct timeval x , struct timeval y)
{
    double x_ms , y_ms , diff;

    x_ms = (double)x.tv_sec*1000000 + (double)x.tv_usec;
    y_ms = (double)y.tv_sec*1000000 + (double)y.tv_usec;

    diff = (double)y_ms - (double)x_ms;

    return diff;
}

------=_Part_23348_1586649490.1524458021269--

.


Author: Phil Bouchard <philippeb8@gmail.com>
Date: Tue, 6 Nov 2018 20:52:54 -0800 (PST)
Raw View
------=_Part_2658_191700534.1541566374028
Content-Type: multipart/alternative;
 boundary="----=_Part_2659_41218827.1541566374028"

------=_Part_2659_41218827.1541566374028
Content-Type: text/plain; charset="UTF-8"



Greetings,


Given the importance of memory management on embedded systems and to
quickly follow up on the deterministic memory manager I was referring to
earlier this year you are welcome to watch part of the following video:


https://youtu.be/vZL5X2FlZKU?t=84


You are welcome to try it out also, if you are interested, on your own
laptops running Linux (disconnected from the LAN) with a script you can
request from me that will pipe data through Fornux' server.


It was tested with GNU GCC 5 & 6, Clang 4 & 5.


Lastly, I already recompiled "libarchive" with minor modifications to the
original code and it works correctly:


https://github.com/philippeb8/libarchive/commit/5858b5c047301123ffdf05f247f7d191829d5a9b


Let me know what you think!



Sincerely,


--

*Phil Bouchard*
Founder

phil@fornux.com

[image: Fornux] <http://www.fornux.com>

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/6e0acf63-d78d-4418-acdb-273994a1f359%40isocpp.org.

------=_Part_2659_41218827.1541566374028
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><p>Greetings,</p><p><br></p><p>Given the importance of mem=
ory management on embedded systems and to quickly follow up on the determin=
istic memory manager I was referring to earlier this year you are welcome t=
o watch part of the following video:</p><p><br></p>
    <p><a class=3D"moz-txt-link-freetext" href=3D"https://youtu.be/vZL5X2Fl=
ZKU?t=3D84">https://youtu.be/vZL5X2FlZKU?t=3D84</a></p><p><br></p>
    <p>You are welcome to try it out also, if you are interested, on your o=
wn laptops running Linux (disconnected from the LAN) with a script you can =
request from me that will pipe data through Fornux&#39; server.</p><p><br><=
/p><p>It was tested with GNU GCC 5 &amp; 6, Clang 4 &amp; 5. <br>
    </p><p><br></p><p>Lastly, I already recompiled &quot;libarchive&quot; w=
ith minor modifications to the original code and it works correctly:</p><p>=
<br></p><p><a class=3D"moz-txt-link-freetext" href=3D"https://github.com/ph=
ilippeb8/libarchive/commit/5858b5c047301123ffdf05f247f7d191829d5a9b">https:=
//github.com/philippeb8/libarchive/commit/5858b5c047301123ffdf05f247f7d1918=
29d5a9b</a><br>
    </p><p><br></p><p>
   =20
   =20
    </p><p>Let me know what you think!</p><p><br></p><p><br></p><p>Sincerel=
y,</p><p><br></p><p>-- <br>
      <br>
      <b>Phil Bouchard</b><br>Founder</p><p>phil@fornux.com<br>
      <br>
      <a href=3D"http://www.fornux.com"><img class=3D"logo-main
          scale-with-grid" src=3D"http://www.fornux.com/wp-content/uploads/=
2017/10/memory-leak-detection-Fornux.png" data-retina=3D"http://www.fornux.=
com/wp-content/uploads/2017/10/memory-leak-detection-Fornux.png" data-heigh=
t=3D"60" alt=3D"Fornux" shrinktofit=3D"true" style=3D""></a><br></p></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/6e0acf63-d78d-4418-acdb-273994a1f359%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/6e0acf63-d78d-4418-acdb-273994a1f359=
%40isocpp.org</a>.<br />

------=_Part_2659_41218827.1541566374028--

------=_Part_2658_191700534.1541566374028--

.