Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Michael Schnell

On 05/28/2014 06:09 PM, Henry Vermaak wrote:

an ifdef to call QueryPerformanceCounter/()clock_gettime() based on OS.

Things like this is why I'd rather use dVSO.

Calling the vDSO will certainly make things faster.
For me, the point is, that with vDSO, the Linux infrastructure will 
handle the dirty stuff  that is involved with such low level greatly 
arch depending things. It is supposed to work out of the box, even if 
for certain archs no support from the hardware is available and provide 
the best possible support by the Kernel software.


For C programmers, this is automatically in place, as libC and the 
Kernel are done appropriately. fpc (supposedly for good reasons) is 
determined to reduce libC dependance as much as possible. Hence the rtl 
needs to provide arch dependent low level stuff internally.


As it is provided directly by the Linux Kernel, vDSO is a way to take 
advantage of Kernel provided arch-independence without using libC.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Michael Schnell

On 05/28/2014 05:41 PM, Marco van de Voort wrote:

. But that means you need to use OS timing functions, and not ASM.


Meaning either syscalls or vDSO.

As in Linux syscalls do a usermode-Kernelmode-usermode switch, they 
introduce a huger overhead.


In Windows I suppose syscalls usually are not done directly by the rtl, 
but functions calls to a Kernel dll are done, so that that 
Windows.provide dll might decide to stay in usermode if possible.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Michael Schnell

On 05/28/2014 06:03 PM, Henry Vermaak wrote:
Blindly making assumptions about TSC stability can get you into 
trouble. Microsoft advises against this, too: 
http://msdn.microsoft.com/en-gb/library/windows/desktop/ee417693%28v=vs.85%29.aspx



As my Target is Linux, this does not help with the implementation. But 
the warning not to use TSC holds, anyway !


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Michael Schnell

On 05/29/2014 01:17 AM, Graeme Geldenhuys wrote:
Then fork it on Github and start publishing your changes. I'll gladly 
review the suggestions and merge it what works.
OK. (Of course only after I did as much testing as possible - in fact I 
can't do by far enough.)


This discussion shows that the arch depending stuff in the 
library/packet really should be part of the rtl. There is not much 
chance to finally provide  a decent / manageable / stable arch 
independent functionality to the users.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Sven Barth
Am 02.06.2014 10:38 schrieb Michael Schnell mschn...@lumino.de:
 In Windows I suppose syscalls usually are not done directly by the rtl,
but functions calls to a Kernel dll are done, so that that Windows.provide
dll might decide to stay in usermode if possible.

On Windows the QueryPerfomanceCounter/Frequency calls always do a syscall,
because the corresponding code is implemented in the HAL which is only
accessible from kernel mode.

Regards,
Sven
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Sven Barth
Am 02.06.2014 10:38 schrieb Michael Schnell mschn...@lumino.de:
 In Windows I suppose syscalls usually are not done directly by the rtl,
but functions calls to a Kernel dll are done, so that that Windows.provide
dll might decide to stay in usermode if possible.

Addendum: yes, the RTL calls the core DLLs of the Win32 subsystem like
kernel32.dll, but they are just that: the core DLLs of the Win32 subsystem.
They don't implement any core OS functionality like hardware/device
management, because that is done by the NT kernel below it which is called
by the Win32 DLLs if needed using the ntdll.dll which acts as a gateway to
the kernel (some calls will do a Syscall then, for example hardware related
functions, while others like functions to handle list structures will stay
in the current mode). That's basically a remnant of the microkernel nature
of the NT OS.

Regards,
Sven
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Michael Schnell

On 06/02/2014 11:06 AM, Sven Barth wrote:



Addendum: yes, the RTL calls the core DLLs of the Win32 subsystem like 
kernel32.dll, but they are just that: the core DLLs of the Win32 
subsystem. They don't implement any core OS functionality like 
hardware/device management, because that is done by the NT kernel 
below it which is called by the Win32 DLLs if needed using the 
ntdll.dll which acts as a gateway to the kernel (some calls will do a 
Syscall then, for example hardware related functions, while others 
like functions to handle list structures will stay in the current 
mode). That's basically a remnant of the microkernel nature of the NT OS.





This is rather similar to  what I assumed.

Hence, if (as your other post suggests) that Kernel dll switches to 
Kernel mode to access TSC in an X86 archs while this is not necessary, 
that is a fault of Windows' and not a fault of fpc's and hence we can't 
help it. As we found, blindly reading is not a good idea, so a really 
fast rtl function would need to detect the CPU sub-arch and act 
appropriately. I understand that this is close to impossible.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Marco van de Voort
In our previous episode, Michael Schnell said:
 On 05/28/2014 05:41 PM, Marco van de Voort wrote:
  . But that means you need to use OS timing functions, and not ASM.
 
 Meaning either syscalls or vDSO.
 
 As in Linux syscalls do a usermode-Kernelmode-usermode switch, they 
 introduce a huger overhead.

Maybe, but is that relevant? We were talking about precision, not speed.
 
 In Windows I suppose syscalls usually are not done directly by the rtl, 

No. Windows calls kernel32/user32, which then mostly calls nt.dll functions
to do the actual syscalls afaik. And a lot more is userland on Windows.

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Michael Schnell

On 06/02/2014 11:49 AM, Marco van de Voort wrote:
Maybe, but is that relevant? We were talking about precision, not speed. 
I have been talking about overhead (speed) all the time. This is my 
intention to discuss the issue. Bus regarding time measurement of course 
speed and precision is highly related, so IMHO it's really decent to 
handle both aspects together.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-06-02 Thread Michael Schnell

On 06/02/2014 11:49 AM, Marco van de Voort wrote:



In Windows I suppose syscalls usually are not done directly by the rtl,

No. Windows calls kernel32/user32, which then mostly calls nt.dll functions
I feel free to translate this to: In Windows, the fpc rtl calls 
kernel32/user32, ...


Which is _exactly_ what I said.

-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-29 Thread Graeme Geldenhuys
On 28/05/14 09:32, Michael Schnell wrote:
 In fact I do want the best possible stuff and not a fork. I am just 
 trying to help (as I would like to use it in the said current project). 

Then fork it on Github and start publishing your changes. I'll gladly
review the suggestions and merge it what works.

Regards,
  Graeme

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Michael Schnell

On 05/26/2014 08:17 PM, Sven Barth wrote:
 The former is already required out of Delphi compatibility while 
TEpikTimer is not. 
(For the record: I do hate this argument. Especially regarding the 
latest moves of Delphi getting more and more incompatible to itself. fpc 
can easily be both more stringent, more versatile and more platform 
independent.)



Additionally container structures can be considered essential for 
basically every software while a timing component is not...
(For the record: I do hate this argument. fpc (and even Delphi) can very 
decently be used for embedded software and much more non-Desktop or 
special Desktop (e.g. Gaming) purposes.)




And you don't think we FPC developers have enough to do with the 
remaining RTL and FCL on all those platforms we support?
Of course you are right. I did not want to push anybody. I just see that 
here the best possible multi-platform support is provided.


Then let it be put in Lazarus in components/epiktimer ... Lazarus 
releases more often than FPC does.



Hmm.
While I personally in fact would like to _use_ it for a Lazarus 
enhancement, I would be happy to see it usable without Lazarus.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Michael Schnell

On 05/27/2014 06:45 AM, Graeme Geldenhuys wrote:

I also told Michael S. that if he does submit a patch to the FPC team (I
can't stop him), make sure it has a different name, so as not to
conflict with the official EpikTimer component.
In fact I do want the best possible stuff and not a fork. I am just 
trying to help (as I would like to use it in the said current project). 
I of course would discuss any enhancements with the original creators 
and am not at all inclined to break anything. .


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Michael Van Canneyt



On Wed, 28 May 2014, Michael Schnell wrote:


On 05/26/2014 08:17 PM, Sven Barth wrote:
 The former is already required out of Delphi compatibility while 
TEpikTimer is not. 
(For the record: I do hate this argument. Especially regarding the latest 
moves of Delphi getting more and more incompatible to itself. fpc can easily 
be both more stringent, more versatile and more platform independent.)



Additionally container structures can be considered essential for basically 
every software while a timing component is not...
(For the record: I do hate this argument. fpc (and even Delphi) can very 
decently be used for embedded software and much more non-Desktop or special 
Desktop (e.g. Gaming) purposes.)


It is not about environments for running programs. 
The classes are on a completely different level.


Lists (and containers) are general purpose, almost language-level constructs.
Timers simply are not. They may be important to you, no argument there.

And you don't think we FPC developers have enough to do with the remaining 
RTL and FCL on all those platforms we support?
Of course you are right. I did not want to push anybody. I just see that here 
the best possible multi-platform support is provided.


Then let it be put in Lazarus in components/epiktimer ... Lazarus releases 
more often than FPC does.



Hmm.
While I personally in fact would like to _use_ it for a Lazarus enhancement, 
I would be happy to see it usable without Lazarus.


It's just a source file. You cownload and compile at will.

Putting it in FPC means it puts an additional burden on FPC devs,  however you 
turn it.
This is a hobby project, still, so we put in what we feel is useful and can be 
maintained.
None seems willing to take it on, but you can stil download and compile at will.

Michael.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Michael Schnell

On 05/26/2014 01:29 PM, Graeme Geldenhuys wrote:
Plus EpikTimer (as a project) contains more than just a single .pas 
unit. It has Lazarus package files, demos etc - those don't belong in 
the FPC repository, and will only fragment tho EpikTimer codebase.

Which is really great !

But how to decently provide a fully released version of EpikTimer to not 
Lazarus enabled users of fpc ?


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Reimar Grabowski
On Wed, 28 May 2014 10:35:47 +0200
Michael Schnell mschn...@lumino.de wrote:

 But how to decently provide a fully released version of EpikTimer to not 
 Lazarus enabled users of fpc ?

https://github.com/graemeg/epiktimer/releases

Download. Extract. Copy needed file(s). Profit.

Where is the f** problem?

R. 
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Marco van de Voort
 In fact I do want the best possible stuff and not a fork. I am just 
 trying to help (as I would like to use it in the said current project). 

In that case some attention points:
- help implementing and testing fine grained timings on *nix. Now it only has a 
special
  case for linux.
- Seems high precision is not used on anything but x86.
- Is rdtsc safe for CPUs that can vary clock of cores independently like
  Core Mono? What if the process changed  CPU to a different clocked core?


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Michael Schnell

On 05/28/2014 01:47 PM, Reimar Grabowski wrote:

Where is the f** problem?


Supposedly none (as I already stated in the Lazarus list).

Thanks !
-Michael




(What I'd like to prevent is that here again the award for the best way 
to avoid ubiquitous usage of community based code is close at hand:

 - someone asks what can I use to 
 - (s)he gets the name of a perfectly working thingy
 - (s)he searches for it in the internet
 - what (s)he finds is an outdated release and documentation that does 
not easily give away it the thingy is usable for exactly this purpose

 - (s)he takes pains to install it
 - does not work
 - frustration, even though the current release would have been a 
perfectly fit.

)


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Michael Schnell

On 05/28/2014 02:00 PM, Marco van de Voort wrote:


In that case some attention points:
- help implementing and testing fine grained timings on *nix. Now it only has a 
special
   case for linux.
- Seems high precision is not used on anything but x86.
- Is rdtsc safe for CPUs that can vary clock of cores independently like
   Core Mono? What if the process changed  CPU to a different clocked core?


While I  of course see you point, besides high resolution, another 
benefit of EpikTimer (at least on X86) is low overhead access to a time 
source. And this is what makes it useful  for my needs.


Already the current version on X86 (at least on Linux 32 bit) it uses 
the appropriate ASM instruction: Perfect (but supposedly some testing 
regarding the  safety issue you state).


I suppose on any arch Linux vDSO could be used to provide both lowest 
possible overhead and highest possible resolution. So this is what I 
will try to do some day soon.


-Michael

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Henry Vermaak
On Wed, May 28, 2014 at 02:00:06PM +0200, Marco van de Voort wrote:
  In fact I do want the best possible stuff and not a fork. I am just 
  trying to help (as I would like to use it in the said current project). 
 
 In that case some attention points:
 - help implementing and testing fine grained timings on *nix. Now it only has 
 a special
   case for linux.
 - Seems high precision is not used on anything but x86.
 - Is rdtsc safe for CPUs that can vary clock of cores independently like
   Core Mono? What if the process changed  CPU to a different clocked core?

- The rdtsc instruction needs to be protected from out of order
  execution.  Some people use cpuid, which is expensive.  It looks like
  the linux kernel uses mfence or lfence/mfence depending on CPU type.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Michael Schnell

On 05/28/2014 04:26 PM, Henry Vermaak wrote:


- The rdtsc instruction needs to be protected from out of order
   execution.  Some people use cpuid, which is expensive.  It looks like
   the linux kernel uses mfence or lfence/mfence depending on CPU type.



... meaning the current version of incorrect ?!?!?

What would the effect of ignoring this = ?

Things like this is why I'd rather use dVSO.

-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Henry Vermaak
On Wed, May 28, 2014 at 02:00:06PM +0200, Marco van de Voort wrote:
 - Is rdtsc safe for CPUs that can vary clock of cores independently like
   Core Mono? What if the process changed  CPU to a different clocked core?

I've read that on recent CPUs, the TSC is unaffected by the actual clock
rate of the CPU.  On linux, The TSC gets calibrated and the
synchronisation is tested, which may result in the TSC clock source
being marked as unstable and disabled.  In this case, it will fall back
to using other clock sources (HPET is next in line on my computer).

Henry
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Marco van de Voort
In our previous episode, Henry Vermaak said:
 On Wed, May 28, 2014 at 02:00:06PM +0200, Marco van de Voort wrote:
  - Is rdtsc safe for CPUs that can vary clock of cores independently like
Core Mono? What if the process changed  CPU to a different clocked core?
 
 I've read that on recent CPUs, the TSC is unaffected by the actual clock
 rate of the CPU. 

Yes, on Nehalem and newer afaik the clock is on the uncore. But that is
still to new a requirement to assume for general purpose code like RTL and
FCL, if you agree to clip real old stuff.

Both the Core2 generations (Conroe and Wolfdale) are still too common.

 On linux, The TSC gets calibrated and the synchronisation is tested, which
 may result in the TSC clock source being marked as unstable and disabled. 
 In this case, it will fall back to using other clock sources (HPET is next
 in line on my computer).

I assume the same system underlies queryperformancecounter and family on
Windows. But that means you need to use OS timing functions, and not ASM.
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Henry Vermaak
On Wed, May 28, 2014 at 05:41:08PM +0200, Marco van de Voort wrote:
 In our previous episode, Henry Vermaak said:
  On linux, The TSC gets calibrated and the synchronisation is tested, which
  may result in the TSC clock source being marked as unstable and disabled. 
  In this case, it will fall back to using other clock sources (HPET is next
  in line on my computer).
 
 I assume the same system underlies queryperformancecounter and family on
 Windows. But that means you need to use OS timing functions, and not ASM.

I assumed that, too.  All the clocksource calibration and selection
happens at startup, so by the time you call
clock_gettime()/QueryPerformanceCounter() it knows whether to query the
TSC/HPET/whatever.

Blindly making assumptions about TSC stability can get you into trouble.
Microsoft advises against this, too:

http://msdn.microsoft.com/en-gb/library/windows/desktop/ee417693%28v=vs.85%29.aspx

Henry
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Henry Vermaak
On Wed, May 28, 2014 at 04:31:53PM +0200, Michael Schnell wrote:
 On 05/28/2014 04:26 PM, Henry Vermaak wrote:
 
 - The rdtsc instruction needs to be protected from out of order
execution.  Some people use cpuid, which is expensive.  It looks like
the linux kernel uses mfence or lfence/mfence depending on CPU type.
 
 
 ... meaning the current version of incorrect ?!?!?

Indeed.  What's worse is that it _always_ uses the TSC on x86, without
knowing whether it's actually a reliable clock source for the particular
hardware configuration.

I can only recommend to never use this component, just use an ifdef to
call QueryPerformanceCounter/()clock_gettime() based on OS.

 Things like this is why I'd rather use dVSO.

Calling the vDSO will certainly make things faster.  I don't know what
the overhead of QueryPerformanceCounter() is.

Henry
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-28 Thread Marco van de Voort
In our previous episode, Marco van de Voort said:
 still to new a requirement to assume for general purpose code like RTL and
 FCL, if you agree to clip real old stuff.

_EVEN_ if you agree to clip real old stuff (read: anything Pre core2 intel
like Pentium D and Core duo)
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-27 Thread Graeme Geldenhuys
On 26/05/14 10:14, Michael Schnell wrote:
 file epiktimer.pas that is independent of Lazarus and makes sense to 
 be use in not Lazarus based projects in the fpc RTL svn.

As I mentioned in the Lazarus mailing list. I don't believe everything
should always be dumped in the FPC repository. It adds the extra burden
for the FPC team to maintain it, makes it harder for the general public
to make/commit changes, others to experiment with new ideas etc. Plus
EpikTimer (as a project) contains more than just a single .pas unit. It
has Lazarus package files, demos etc - those don't belong in the FPC
repository, and will only fragment tho EpikTimer codebase.

Of course you are welcome to submit a patch to the FPC team (I can't
stop you), but please change the name so as not to conflict with the
official EpikTimer component.

Regards,
  Graeme



___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-27 Thread Graeme Geldenhuys
Hi Sven,

You raised all the points which I already mentioned to Michael Schnell -
why I think EpikTimer should NOT be in the FCL.

 * FPC has too a slow release cycle
 * No need to burden the FPC team with supporting yet another component
 * It will reduce the possibility for experimentation and easy
   contributions from others.
 * EpikTimer contains more than just a single unit. The other files
   don't belong in FPC. So why fragment the project's source code.

I'm perfectly happy where EpikTimer is now. If anybody wants to use it
in a project, download and use it. If anybody wants to contribute, then
send a pull request or patches.

I also told Michael S. that if he does submit a patch to the FPC team (I
can't stop him), make sure it has a different name, so as not to
conflict with the official EpikTimer component.

Just my 2c worth.

Regards,
  Graeme


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Michael Schnell

On 05/24/2014 01:55 PM, Graeme Geldenhuys wrote:

I've spoken to Tom and he agreed. We moved the EpikTimer repository to
Github. The Lazarus-CCR version will be deleted by Tom in due time.

While I am happy about your move to do an official release of 
EpikTimer. I'd like to add that IMHO it would be appropriate to have the 
file epiktimer.pas that is independent of Lazarus and makes sense to 
be use in not Lazarus based projects in the fpc RTL svn.


I did not check the latest release, yet, but I suppose there are some 
more files (that allow for visible placing of a TEpikTimer Instance on 
a form). Same should come as a Lazarus package.


Thanks for your work,
-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Reinier Olislagers
On 26/05/2014 11:14, Michael Schnell wrote:
 While I am happy about your move to do an official release of
 EpikTimer. I'd like to add that IMHO it would be appropriate to have the
 file epiktimer.pas that is independent of Lazarus and makes sense to
 be use in not Lazarus based projects in the fpc RTL svn.

I don't understand exactly what you are trying to say. Is this:
- a request to Graeme
- a promise that you are going to provide a patch to the FPC RTL
- a remark
- something else

Thanks,
Reinier

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Michael Schnell

On 05/26/2014 11:55 AM, Reinier Olislagers wrote:


I don't understand exactly what you are trying to say. Is this:
- a request to Graeme
- a promise that you are going to provide a patch to the FPC RTL
- a remark
- something else

Sorry for being unclear.

I meant this as a general request to the powers of the fpc (rtl) 
project with svn write access to allow Greame, Tom (or maybe myself) to 
include the TEpikTimer class  in the next release of the official RTL. 
(And maybe help with doing so)


In the Lazarus Forum I am trying to discuss some improvements in 
EpikTimer, I would like to introduce before that move. (I already did 
and tested this with the pre-release file that had been provided on 
Lararus CCR).


Thanks for listening,
-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Reinier Olislagers
On 26/05/2014 12:12, Michael Schnell wrote:
 On 05/26/2014 11:55 AM, Reinier Olislagers wrote:
 I meant this as a general request to the powers of the fpc (rtl)
 project with svn write access to allow Greame, Tom (or maybe myself) to
 include the TEpikTimer class  in the next release of the official RTL.

Well, the normal procedure for doing this is to submit a patch if you
want something to be added to FPC.

If you need help with that, you could put up your modified code on a
public repository.

An example is somebody who modified Lazarus to use/create other widgetsets:
https://github.com/x2nie/LiteZarus

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Michael Schnell

On 05/26/2014 12:42 PM, Reinier Olislagers wrote:
Well, the normal procedure for doing this is to submit a patch if you 
want something to be added to FPC.


Thanks for your hints.

As I locally do use svn, I suppose I will be able to do a patch for a 
not yet existing file :)


I can't do a patch that will have the file integrated in the make 
process, though.


Anyway before doing this I'd like to do some more improvements and 
tests. (including trying to use )


A big

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Michael Schnell

On 05/26/2014 12:42 PM, Reinier Olislagers wrote:

Well, the normal procedure for doing this is to submit a patch if you
want something to be added to FPC.


Thanks for your hints.

As I locally do use svn, I suppose I will be able to do a patch for a 
not yet existing file :)


I can't do a patch that will have the file integrated in the make 
process, though.


Anyway before doing this I'd like to do some more improvements and tests 
(including trying to use vDSO).


A big problem with EpikTimer is that is _should_ be decently useful with 
all archs and OSes.


This might be a nightmare to test.

-Michael

___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Tomas Hajny
On Mon, May 26, 2014 13:12, Michael Schnell wrote:
 .
 .
 A big problem with EpikTimer is that is _should_ be decently useful with
 all archs and OSes.

 This might be a nightmare to test.

You don't need to do that - the new addition may be enabled selectively
for the CPU+OS combinations for which it has been already tested
successfully (and this approach is preferred over enabling it for
everything after testing just a small subset of all targets supported by
FPC). Additional targets would then get enabled later by the individual
target maintainers as appropriate.

Tomas


___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Sven Barth
Am 26.05.2014 12:12 schrieb Michael Schnell mschn...@lumino.de:

 On 05/26/2014 11:55 AM, Reinier Olislagers wrote:


 I don't understand exactly what you are trying to say. Is this:
 - a request to Graeme
 - a promise that you are going to provide a patch to the FPC RTL
 - a remark
 - something else

 Sorry for being unclear.

 I meant this as a general request to the powers of the fpc (rtl)
project with svn write access to allow Greame, Tom (or maybe myself) to
include the TEpikTimer class  in the next release of the official RTL. (And
maybe help with doing so)

I don't see a need for this in the FCL yet. At least not until the dust
that you are whirling up has settled down as FPC has a quite slow release
cycle.

Regards,
Sven
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Michael Schnell

On 05/26/2014 02:06 PM, Tomas Hajny wrote:
You don't need to do that - the new addition may be enabled 
selectively for the CPU+OS combinations for which it has been already 
tested successfully (and this approach is preferred over enabling it 
for everything after testing just a small subset of all targets 
supported by FPC). Additional targets would then get enabled later by 
the individual target maintainers as appropriate.


In fact I would like to use EpikTimer in my upcoming ActiveNoGUI 
Lazarus WidgetType. ActiveNoGUI is especially useful with small 
Gadgets that typically don't have X32 or X64 archs.


That is why I am after multi-arch support.

And that is why I feel that it makes sense to use EpikTimer in 
ActiveNoGUI instead of directly including the timer related code. With 
EpicTimer the ActiveNoGUI implementation itself would be automatically 
arch and OS independent.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Michael Schnell

On 05/26/2014 02:23 PM, Sven Barth wrote:


I don't see a need for this in the FCL yet. At least not until the 
dust that you are whirling up has settled down as FPC has a quite slow 
release cycle.




I absolutely agree.

Nonetheless I feel that (a decently multi-arch enabled version) of 
TEpikTimer does make sense in the FCL as a courtesy class  (in fact 
TList is a courtesy class as well, as it does not support syntax candy 
but just is provided directly for the user to use). Especially as the 
multi-arch support of EpikTimer is really critical and it would be very 
helpful to know that this issue  is managed by the fpc team.


Hence including it in the svn seems nice to me, especially regarding 
that I'd like to use it in a Lazarus enhancement.


-Michael
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


Re: [fpc-pascal] EpikTimer v1.0.1 released

2014-05-26 Thread Sven Barth

On 26.05.2014 15:07, Michael Schnell wrote:

On 05/26/2014 02:23 PM, Sven Barth wrote:


I don't see a need for this in the FCL yet. At least not until the
dust that you are whirling up has settled down as FPC has a quite slow
release cycle.



I absolutely agree.

Nonetheless I feel that (a decently multi-arch enabled version) of
TEpikTimer does make sense in the FCL as a courtesy class  (in fact
TList is a courtesy class as well, as it does not support syntax candy
but just is provided directly for the user to use).


TList and TEpikTimer are two completely different things. The former is 
already required out of Delphi compatibility while TEpikTimer is not. 
Additionally container structures can be considered essential for 
basically every software while a timing component is not...



Especially as the
multi-arch support of EpikTimer is really critical and it would be very
helpful to know that this issue  is managed by the fpc team.


And you don't think we FPC developers have enough to do with the 
remaining RTL and FCL on all those platforms we support?




Hence including it in the svn seems nice to me, especially regarding
that I'd like to use it in a Lazarus enhancement.


Then let it be put in Lazarus in components/epiktimer ... Lazarus 
releases more often than FPC does.


Regards,
Sven
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal


[fpc-pascal] EpikTimer v1.0.1 released

2014-05-24 Thread Graeme Geldenhuys
Hi,

I've spoken to Tom and he agreed. We moved the EpikTimer repository to
Github. The Lazarus-CCR version will be deleted by Tom in due time.

I applied some of my changes to code in Github (more changes recently
discussed in this mailing list will follow soon), fixed the etdemo
project to be compilable again, updated the demo to use FPC Resources
instead of the old *.lrs files.

I've also bumped the version number and created a new release. Hopefully
this will resolve the issue about people downloading the 2006 old
archive version.

I've also updated the Free Pascal Wiki page with the latest information.

Wiki Page:
  http://wiki.freepascal.org/EpikTimer

Source code:
  git clone https://github.com/graemeg/epiktimer.git

Release downloads:
  https://github.com/graemeg/epiktimer/releases


Regards,
  - Graeme -

-- 
fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal
http://fpgui.sourceforge.net/
___
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal