You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(15) |
Jun
(9) |
Jul
(6) |
Aug
(6) |
Sep
(4) |
Oct
(16) |
Nov
(11) |
Dec
(4) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(9) |
Feb
(19) |
Mar
(17) |
Apr
(8) |
May
(8) |
Jun
(9) |
Jul
(6) |
Aug
(13) |
Sep
(6) |
Oct
(11) |
Nov
(8) |
Dec
(8) |
| 2002 |
Jan
(16) |
Feb
(9) |
Mar
(22) |
Apr
(15) |
May
(7) |
Jun
(3) |
Jul
(5) |
Aug
(9) |
Sep
(2) |
Oct
(11) |
Nov
(5) |
Dec
(2) |
| 2003 |
Jan
(7) |
Feb
(7) |
Mar
(4) |
Apr
(7) |
May
(4) |
Jun
(9) |
Jul
(5) |
Aug
(5) |
Sep
(4) |
Oct
(6) |
Nov
(6) |
Dec
(4) |
| 2004 |
Jan
(7) |
Feb
(5) |
Mar
(7) |
Apr
(3) |
May
(4) |
Jun
(6) |
Jul
(2) |
Aug
(3) |
Sep
(5) |
Oct
(5) |
Nov
(3) |
Dec
(5) |
| 2005 |
Jan
(6) |
Feb
(10) |
Mar
(10) |
Apr
(2) |
May
(1) |
Jun
(4) |
Jul
(2) |
Aug
(3) |
Sep
(4) |
Oct
(2) |
Nov
(3) |
Dec
(2) |
| 2006 |
Jan
(3) |
Feb
(2) |
Mar
(1) |
Apr
(6) |
May
(5) |
Jun
(1) |
Jul
(4) |
Aug
(1) |
Sep
(1) |
Oct
(3) |
Nov
(2) |
Dec
(2) |
| 2007 |
Jan
(1) |
Feb
(1) |
Mar
(6) |
Apr
(5) |
May
|
Jun
(1) |
Jul
(1) |
Aug
(2) |
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
| 2008 |
Jan
(2) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(2) |
Aug
|
Sep
(2) |
Oct
(3) |
Nov
(1) |
Dec
|
| 2009 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
(1) |
Oct
|
Nov
|
Dec
(1) |
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(1) |
Nov
(2) |
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
(1) |
Nov
|
Dec
(1) |
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
(1) |
Oct
(1) |
Nov
|
Dec
(1) |
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2016 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2017 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2021 |
Jan
|
Feb
|
Mar
(1) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
|
From: JVZ <je...@fo...> - 2025-11-20 02:48:20
|
November 19 - FOX DEVELOPMENT 1.7.87
Updated implementation of __sscanf(), __strtod(), __strtof() using Lemire's algorithm.
New closestAlongRay() API in FXVec3f, FXVec3d calculates closest point bewteen two 3D line segments.
Fast, square-rootless and division-less approximate vector fastnormalize(); plus, inlined normalize().
FXText drawing fix that will remove drawing limitations.
Inlined character classifications in fxascii.h.
Experimental FXPathBox replacing FXDirBox in FXFileDialog.
FXFileDialog not listing ".." anymore; always caused problems.
FXString wide-character unicode escaping sequences interpreted "\Uxxxxxxxx".
Out-of-bounds read in FXString fixed.
Super-accurate, branch-free setAxes() API in Quaternion classes.
Quaternion setAxisAngle() API replaced by setRotate().
Simplified (faster) setXRotate(), setYRotate(), setZRotate() APIs on Quaternion for quicker setup rotations about principle axes.
FXPath improvements for dealing with Windows pathname idiosyncracies.
FXDir listing files in a directory can return some extra information w/o need for a call to FXStat API, on filesystems where this is supported.
FXPath pathname conversion from "foreign" to "local" operating system conventions.
WIN32_LEAN_AND_MEAN prior to including windows.h.
Slightly more accurate conversions between FXVec4f, FXVec4d and FXColor.
List filename before context, and folder at the end in Adie FindInFiles.
FXExpression can now have constants as well as variables.
FXRex quick check for empty string.
Adie text editor syntax pattern for YAML added.
Syntax highlighting for Rust programming language added.
When file being editor by Adie is changed outside of editor, or removed, a message is popped. A new option can now be used to avoid future popups if some process repeatedly changes the file. Also, when exiting Adie, if file was changed externally, you get one more chance to save text buffer contents.
Added options to FXMessageBox.
ControlPanel now has control to set display resolution (dpi).
Fallback code for 64-bit leading zero count, trailing zero count on Windows.
Ability to parse hexadecimal floats added.
... and much more...
-- JVZ
--
+----------------------------------------------------------------------------+
| Copyright (C) 20:20 11/19/2025 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: Jeroen v. d. Z. <je...@fo...> - 2024-08-16 04:43:34
|
FOX DEVELOPMENT 1.7.85
New PNG image support. First, its faster! Also, it no longer requires libpng; the PNG format support is now built-in, although the libz compression library is still required [for now...].
fxsavePNG() supports some fine-control via new save-flags. You can analyze the image, and shrink output by taking advantage of image features; for example, saving opaque image means alpha-channel may be dropped. If the image is gray-levels only, the RGB may be dropped to plain gray only. Also, shrinking further by emitting colormapped [indexed-color] image is possible if only a few colors are used. Finally, pre-compression filtering, as well as desired compression level can be selected.
PNG I/O is optimized with when target ISA x86-64-v2 or higher are selected.
FXStat::isSame() checks if two files are the same (same inode).
FOX Desktop Calculator augmented with Unicode button labels (please select a font that has the math symbols!), also now supports additional functions, common physics constants, and other features.
The fxCPUFeatures now can detect AVX512 presence.
New FXPerformanceCounter and associated macros may be used to count clockcyles of critical code segments.
FXAtomic.h APIs now mostly inlined for lower overhead.
Read processor ticks on AARCH64.
Adie text editor undo buffer size and undo buffer items can now be configured.
New QOIF (Quite OK Image Format) now supported for either images (FXQOIFImage) or icons (FXQOIFIcon).
FXColor to/from FXVec3d, FXVec3f, FXVec4d, FXVec4f now using SSE if compiled for x86-64-v2 or higher.
Updated byte swap APIs in fxendian.h.
New APIs in FXMat3f, FXMat3d, etc. classes to set up mirror-matrix.
Moved new hash32() etc. functions into fxendian.h.
Bug fix in FXIODevice reading > 1GB files in one readBlock(), writeBlock() call.
Markdown syntax coloring in Adie.
Per-syntax mode setting for removing trailing spaces in Adie saving a text file.
Subtle change in operation of FXPath::relative().
Support for CRC32 calculations added.
Additional conversion options in FXString::fromFloat() and FXString::fromDouble(): thousands groupings, force decimal point, and hexadecimal float output.
FXJSON JSON loader now may report duplicate key warning reading json file.
FXMappedFile improvements.
FXString uncode escapes bug fix.
Cheers,
-- JVZ
|
|
From: Jeroen v. d. Z. <je...@fo...> - 2023-06-14 05:07:34
|
New in this release:
FXThread::current() yields thread-id.
Updated icons in FXFileDialog, PathFinder, and Adie editor.
FXPath::enquote() should also engage escaping when embedded braces found in string.
FXPath::enquote() places quotes around empty file, because it is the only way to pass empty string parameter sometimes when passing arguments to sub process.
Updated help information in Adie editor.
Adie now gives warnings if (1) file being edited is changed by another program,
(2) file being editor was removed by another program If warnings are turned off,
you will still get prompted when you're about to save or close the window.
This minimized unexpected loss of information.
X11 line width fix (needed for some broken GPU drivers).
Updated VC++ project files.
Ascii character classifications now inlined, potentially much faster. Important
for Adie regex-based syntax coloring engine, where improvement is noticable.
Adie editor search/replace now supports whole-word search option.
Adie editor now has "New File" in addition to "New". The new option prompts user
for filename immediately, and thus kicks syntax colorizer into the correct mode,
if the mode is determined by file extension. This is normally the case.
Adie word-wrap toggle on menu bar is helpful to quickly reveal long lines running past
right edge of the screen.
When you're in the middle of editing a large file, and scroll around to look at something
(e.g. a declaration), you can now quickly jump back to the last location being edited.
This is done by implicitly defined bookmark called the "Insert Point". Promise you will
find this feature quite convenient.
FXPath::title() has been renamed to FXPath::stem(). This seems to be the apropriate
name for what it does, which is to return the name less the extension and the directory-part.
Adie offers quick switching editing windows from right-mouse popup menu. Also added is
"Open Selected" which opens the selected text as a filename.
Some internal streamlining in FXRex, the regular expression engine. Also, word-mode
automatically generates begin-word, end-word around top-level match. This also works
for verbatim mode.
FindInFiles dialog also supports whole-word search option.
Incremental search looks updated, and whole-word mode added.
Adie shell-command line and shell-command filter dialogs now have scroll-back through
previously launched commands.
FXFileDialog can side-scroll using mouse wheel when in the horizontal mode.
FXScrollArea logic w.r.t. non-scrolling directions: mouse wheel is blocked from
controlling scroll bar if scrolling is off in the horizontal (vertical) direction.
Relaxed interpretation of reserved word in JSON parser: only reserved when they appear
as a "value", not when they appear as a "key". Important when e.g. loading as plain
JSON but then saving as JSON5 may be something that could break a file from being
loaded otherwise.
Checking for early end-of-file in JSON parser may yield more sensible warning messages.
Added FXPath::isRelative() API. This returns true if the path leading up to a filename
can be determined to be relative. Operates similar to FXPath::isAbsolute().
Note that it is possible both FXPath::isRelative() and FXPath::isAbsolute()
to return false. Sometimes, there just isn't enough information to decide.
Improved innards for FXPath::expand() to expand environment variables etc.
In FXRex regular expression matcher, when performing backward matching, back
references must refer forwards as the later-occuring parts of a string are matched
first.
API added to FXFontDialog to set sample text to font-display.
Enjoy,
-- JVZ
|
|
From: Jeroen v. d. Z. <je...@fo...> - 2022-10-11 05:17:57
|
October 10 - FOX DEVELOPMENT 1.7.80
New Visual C++ 2015 build project files for FOX distribution; you should be able to import them to
any post-2015 version of Visual Studio.
Conversions to smaller integer sizes in FXVariant now saturate to maximum (unsigned) values; success-
flag will be set false if saturation happens.
ControlPanel has new section for configuring "sub-pixel rendering" feature for Linux font system.
New feature in JSON parser/unparser is to allow saving in JSON5 mode; default is still regular JSON mode.
JSON unparser allow setting preferred quote type.
JSON unparser allows unicode identifiers for keys.
Minor bug in JSON parser when parsing and unescaping string: ensure we're using the correct quote type
(JSON5 allows two quote types).
Improved matrix to quaternion code.
In FXVariantMap, space reserved for 32-bit machines was updated.
FXVariant now has some API's to remove item from map (if map type), or array (if array type).
Allow for a few more items in Adie's window list and recent file list.
Minor updates to Adie man page for new commands format.
Adie FindInFiles now remembers previous search directory when scrolling back to prior search commands.
Can start Adie with given window size now.
Slightly simpler syntax is possible to open file onto given line number (and column).
Allow ascii mode when reading registry on Windows; is command line parameter in FXApp.
Silenced numerous warnings introduced enabling new compiler flags.
Small layout problem fixed in PathFinder.
Updated VC++ Studio project files: 64-bit build now default..
Some bug fixes in fxendian bit manipulation APIs.
API added to find system directory.
Also __snprintf() and __vsnprintf() now handle denormal floats even when library was compiled for release
(with FTZ/DAZ).
Bug fixes in FXText.
Minor warning fixes.
More user-friendly type-names in FXVariant.
Fixes in FXReadWriteLock for MacOS.
Calling adopt() on FXSettings sets both instances to modified, as it should have.
FXColorDialog remembers its size from last time it was used.
FXFileSelector/FXFileDialog change: in SELECTFILE_MULTIPLE and SELECTFILE_MULTIPLE_ALL more user-friendly
encoding of multiple filenames in text box using commas ','.
Adie editor Find In Files remembers search-folder as well as previous search-parameters in search-history
scrollback.
Launching Adie with not just file, but optionally line and column number as well. Handy for compiler warnings.
Also, can pass geometry specification on command-line to bring up Adie with given window size and location.
FOX applications can now load registry settings from text file on windows, thanks to new command-option
parsed by FXApp.
Use some intrinsic x86-64 (or x86) instructions for bit-manipulations where possible.
Backward scanning UTF8 API, plus many other UTF8 APIs now inlined; some macroes replaced by
inlines.
Enjoy, and please send feedback!
-- JVZ
--
+----------------------------------------------------------------------------+
| Copyright (C) 00:10 10/11/2022 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2022-02-16 03:42:29
|
Its been a while [reasons!] but here it is:
February 15 - FOX DEVELOPMENT 1.7.78
Major rewrite of FXJSON parser. Faster, stricter, better UTF8 support.
Bug fixes in FXString.
New functions added to math APIs.
Minor fixes to FXPtrList.
Better HotKey processing in FXAccelTable.
Now use nullptr in lieu of NULL (C++ compiler feature).
Julia syntax highlighting added to Adie text editor.
Drop conversion check in FXJSON parser.
FXPath::expand() recursive environment expension [up to some limit].
FXCondition can use FXScopedMutex and FXReverseMutex.
Use of static_assert() conditional upon compiler support.
URL encode should also encode @ and :.
Off-by-one bug fix in FXText.
Warning fixes.
As always, enjoy!
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 21:41 02/15/2022 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2021-04-21 01:00:28
|
A quick turnaround for some fixes for annoying bugs discovered
recently.
Subtle FXString::format() numeric rounding bugs fixed.
Adie text editor rare crash bug fixed.
FXString unicode conversion bug fixes.
Additional checking ensuring FXString::substitute() called properly.
Subtle FXString manipulation bug fixes.
Most of these things are quite subtle; please give feedback
if you run into anything else!
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 13:30 03/25/2021 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2021-04-02 01:11:29
|
April 1 - FOX DEVELOPMENT 1.7.76
Add handy icon button to Adie file list widget to hide/show hidden files.
FXText widget parameter verification improved for content-modification APIs.
FXText widget block mode replace, block insert, and other block operation regressions fixed.
FXText widget block selection issues fixed.
FXRex grammar depiction fix.
In FXJSON parser, a single bad-utf8 prefix case label was missing.
Not all systems have pthread_rwlock_setkind_np(), causing compile to fail on those systems.
New FXASSERT_STATIC macro added; it is defined for C++ language > 2011.
Scoped FXReverseSpinLock class added, similar to FXReverseMutex scoped lock.
The unixToDos() API would potentially add a second CR if input was already DOS format; now fixed.
Adie text buffer loading and saving updated.
Adie extract range selection to file, and extract block selection to file option added.
Adie replace text range from file, or replace text block from file option added.
FXString::length() now returns boolean instead of throwing exception when out of space;
internals of FXString somewhat fortified against low-memory situations (you're unlikely
to run into memory issues on FXString on modern machines, unless you're dealing with
truly gigantic strings).
A number of places are now defining specific trace topics using the new topic-tracing
implementation.
Enjoy!
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 13:30 03/25/2021 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2021-03-02 14:50:15
|
New in this release:
FXSystem::getUserDirectory() had bug on Windows with non-unicode build.
Configure scripts allows specification of freetype2 install locations.
Adie rules for C# language updated with current set of keywords.
Added TypeScript coloring rules to Adie syntax file.
FXDir::createDirectories() now insists on absolute path as input.
FXPath::upLevel() now works for relative paths as well.
FXPath::enquote() bug fix: enquoting string containing '#' was flawed.
Building using VC++ now keys on DEBUG not _DEBUG.
Adie syntax rule fix for CMake.
Some small fixes to FXPath::simplify() for path separators.
Set DPI Awareness upon launch on Windows.
Dropped unnecessary asserts in FXCursor (Windows).
Updated FXTRACE() implementation. Trace topics in addition to levels. You can change the
set of topics to trace using new -tracetopics command line parameter. The old -tracelevel
is still there, it sets a range of topics. New APIs are added to set topics programmatically:
setTraceTopic(), setTraceLevel(), setTraceTopics(). The trace topics allow dumping reduced
amounts of information when debugging a particular aspect of your program.
Removed fxstrhash() in favor of FXString::hash().
Support convert to/from Modified Rodrigues Parameter in quaternion classes.
Orthogonalize 2x2, 3x3, 4x4 matrices using Gram-Schmidt orthogonalization added.
Some further work in FXReactor, FXDispatcher.
Fix address sanitizer issues in FXDictionary, FXHash, FXReverseDictionary, FXSettings,
FXStringDictionary, FXVariantMap.
Leaked icon resource fix in Adie, ControlPanel, PathFinder Preference panel.
Fix to SUNRAS image loader loading 1-bit per pixel images.
Potential NULL cursor pointer issue during create() fixed.
Miscellaneous compiler warnings fixed here and there.
Enjoy!
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 08:40 03/ 2/2021 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2020-07-14 19:58:02
|
New for today:
Added math function Math::pow10i(). Performs integer power of 10. NOTE: function Math::pow10()
will go away as this has been deprecated; use Math::exp10() instead!
String to double conversion routines accuracy improvement fix implemented; approximately 16th
digit accuracy now.
Added %a and %A handling in fxscanf.cpp. Hex float support parsing to be switched in soon; not
yet 100% working at this time.
When parsing exponent-part of floating point number fails, properly rewind input to the part before it;
this will leave the rest of the string for another conversion specifier if there is one.
When parsing number-separator, don't allow consecutive number separators. Future implementations
may be more strict still.
FXThread thread naming update for MacOSX and other operating systems.
The math.cpp test program now implements testing functions when they are missing from the
operating system.
Cheers,
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 14:50 07/14/2020 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2020-06-28 22:06:10
|
June 28 - FOX DEVELOPMENT 1.7.70
- Changed order of paramter in FXSystem::systemTimeParse(); new order allows default parameter for time parsing format,
"%m/%d/%Y %H:%M:%S", which is very convenient .
- Added localTimeZoneName() API.
- Changed parameter order and implementation of universalTime() and localTime(); the new order now allows default parameter
("%m/%d/%Y %H:%M:%S") for time formatting and parsing. New implementation using recently added routines also allows
adjustment for time zone offset if time zone offset is parsed from time string (%Z or %z option).
- FXSystem::systemTimeParse() does not initialize FXSystem::Time struct anymore; thus, should be zeroed out prior to being called.
However, FXSystem::systemTimeParse() will assign as much as it can based on the time- and date-components being parsed.
Also note, FXSystem::systemTimeParse() can properly parse ISO week number and day, and compute proper date
from that.
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 16:40 06/28/2020 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2020-06-24 19:58:47
|
"Knee deep" in development...
June 24 - FOX DEVELOPMENT 1.7.69
More FXSystem time related API changes.
FXString 16-bit character conversion fix.
Military time zone parse.
FXFileSelector onCmdDirectoryUp() selects directory we were in before, for quick downward navigation.
FXFileList sets both current and anchor item when entering directory.
The fxprintf.cpp used in string formatting now supports %a and %A for floating point printout.
Enjoy,
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 14:30 06/24/2020 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2020-04-29 20:04:59
|
New version released today,
A long list of things that have been building up over the last
few months, and should probably have been made available earlier.
Here it goes:
- Added FXSystem::Time struct, system-independent time in parts. This comes with (at the moment) two routines,
FXSystem::systemTimeFromTime() which converts FXTime to FXSystem::Time, and FXSystem::timeFromSystemTime() which
converts time in parts to FXTime (in nanoseconds).
- New routine FXSystem::systemTimeFormat() formats FXSystem::Time to a string, similar to strftime(), with a few
extensions.
- New routine FXSystem::systemTimeParse() parses FXSystem::Time from a string, similar to strptime(), with a few
(more) extensions.
- New routine FXSystem::daysFromCivil() converts year, month, day to days since Unix Epoch in days.
- New routine FXSystem::civilFromDays() converts Unix Epoch in days to year, month, day.
- New routine FXSystem::timeFromNTPTime() Converts NTP time (64-bit ssss:ffff) to FXTime, nanoseconds since Unix Epoch).
- New routine FXSystem::ntpTimeFromTime() Converts FXTime time to NTP time (64-bit ssss:ffff).
- New routine FXSystem::leapSeconds() returns number of leap seconds since FXTime. It can be used to compute UT1 time
(plus or minus fraction of a second).
- The sysctl.h is now obsolete on Linux [still checked as not obsolete on *BSD].
- Blending on in FXGLShape.
- WM_ERASEBKGND message handler (on Windows) should return 1.
- Small default width/height size calculation bug in FXTable fixed.
- Some fixes in FXMat3d, FXMat3f with some SSE/AVX code.
- Additional routines in fxendian.h: pop64(), pop32().
- New routines in FXElement.
- Some more missing math functions added in fxmath.h.
- Fix in FXDate for pre-1970 time values (rounding wrong way).
- FXTRACE in FXMetaClass constructors/destructors.
- Some progress on new FXEventLoop/FXDispatcher/FXReactor classes.
- FXThread naming.
- Initialize FXQuatf/FXQuatd with Rodrigues angles, other APIs for Rodrigues angles added.
- FXJSON parser exponent parsing bug fix.
- FXCallback bug fixes.
- FXText bug fixes/improvements.
Enjoy, and please give feedback about problems,
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 15:00 04/29/2020 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2019-05-04 03:49:07
|
New development release out today!
FXJSON now has JSON5 JSON5 support; line-comments, multi-line comments, unquoted key names, etc.
Experimental block-selection in FXText widget.
Fixed fxscanf.cpp to be able to read NaN and Infinity/Inf.
Fixed strtod() to recognize Infinity.
The escape() of empty string returns "", not empty string.
The unescape() supports line-continuations.
Additions to Math namespace.
Additions to FXQuatd and FXQuatf.
Some missing functions added to FXExpression.
FXPath::convert() transforms foreign operating system-style paths to local conventions (path separator, path list separator, environment variable syntax).
Improved FXPath::expand().
FXThread::wakeat() now using absolute time on Windows (using undocumented API).
FXReverseDictionary class added.
FXDirWatch class added.
Lots of new goodies, so Enjoy!
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 22:20 05/ 3/2019 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2017-05-18 02:07:22
|
A new development release with some bug fixes, compiler warnings, and speedups.
May 17 - FOX DEVELOPMENT 1.7.60
Context back-up changed in incremental syntax recolorizer (Adie).
Some typos fixed here and there.
Configure script and makefile updates.
Many updates being worked on inside FXText.
Compiler warnings fixes for GCC 6.3.1, which seems to flag a few new things.
Some FXText widget speedups.
Bug fixes in FXString.
Added visiting() API to FXDirVisitor.
Disable and enable buttons in FindInFiles dialog in Adie editor when starting/stopping searches.
Brace-matching change: matching brace can now stay visible as long as cursor on a brace (if enabled).
Enabling permanent highlighting also makes the match search outside of the visible part of the text buffer,
in case the matching brace is scrolled into view later. Thus, people with slow machines may notice brace-
match could take slightly more time, when working with really large files.
Enjoy!!
-- JVZ
--
+----------------------------------------------------------------------------+
| Copyright (C) 21:00 05/17/2017 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2017-04-14 18:50:01
|
A new release today:
Changed the way bookmarks are done in Adie; you can delete them one by one.
A fair number of changes and bug-fixes in FXText widget.
Cursor doesn't blink during movement in FXText and FXTextField.
Limit accumulation of repaint-areas yields less visible flicker in some case.
Redraw of line numbers in FXText now with less flicker during resizing.
Adie text editor now supports adie, emacs, and vim modeline parsing; you can set language (syntax)
mode, tab width, wrapping, and a few other things.
Dropped jump-scroll mode support in Adie: never used by anyone.
Some extra options added to Adie Preferences Dialog.
Syntax file for Adie can now force hard-tabs, autoindent, and other attributes. This means
editing 'Makefile' will automatically switch hard-tabs on!!.
Adie on-line help updated with description of syntax for 'Adie.stx' syntax description file.
Documentation in FXAccelTable.h expanded to include syntax for accelerator keys.
Option for brace-matching added to FXText. Also, added option to keep brace highlighted forever, or
until cursor moves or a selection is made.
Show 'indeterminate' state for checkbuttons in Preferences panel, if default settings for tab-mode,
wrap-mode, auto-indent have been superceeded by attributes from the syntax-file or a parsed modeline.
Added 'SaveTo' option in File Menu of Adie text editor.
Enjoy!
-- JVZ
|
|
From: JVZ <je...@fo...> - 2017-03-14 04:50:50
|
A new development drop has been released, many changes to file dialog
widgets, predominantly; here's a list:
Adie improvement: don't clear bookmark selecting it 2nd time; now, remove bookmark by invoking "Delete Bookmark"
with the cursor on the bookmark to be deleted.
Bookmarks now at start of line; thus, only one per line.
Use __buildin_bswapXX() only for GCC 4.8 and newer; older versions buggy, apparently.
Added SaveTo option in Adie text editor.
FXText and FXTextField cursor blink fix; don't blink while moving (so user doesn't lose track of where it is!).
When multi-file mode in FXFileSelector, enquote files only when needed; and escape quotes and backslashes if they appear.
FXFileSelector now returns filenames as typed into the box in all modes, including multi-file mode.
Now allow relative search paths in Adie file search paths. This means you can list places to look for files in your project
directory subtree, regardless of where the project subtree is referenced from; for example, "../include:../lib" will let you
open a file from "../include" when you're in "lib", and vice-versa.
FXFileList properly hops back to original directory when dragging over directories.
Major speedup in FXIconList lasso-selection mode. Much, much faster when lassoing items in very large folders.
FXFileSelector's getFilename() returns first of many, if box contains multiple names.
FXFileSelector scans for first non-wildcard extension when substituting extensions when filter is changed.
FXTreeList and FXFoldingList should issue SEL_EXPANDED message as side effect of makeItemVisible expanding a subtree.
Missing setPattern(), getPattern() API's added for FXDirDialog and FXDirSelector.
Added syntax pattern for hexadecimal floating point numbers.
Please, if you encounter any issues, let us know!
-- JVZ
|
|
From: JVZ <je...@fo...> - 2016-12-03 17:34:05
|
A new update ((yes, it was too long!) has been dropped; a short list of the updates:
Use _InterlockedExchange() in FXSpinLock instead of non-inlined version.
Emulation code added for atomicBoolDCas(() if no built-in version available.
Some bug fixes in FXXML parser.
Check for decode error in XML parser.
Encode non-ascii string in FXURL.
Return original user-data pointer in addTimeout() and addDeadline(), addChore(), and removeChore(). This allows one to delete
user-objects that may be referenced by those callbacks.
Added non-wrap mode as output format in reswrap.
Split off OpenGL objects from FOX library placed into separate glviewer subdirectory.
Use nanosecond-accurate stat() output, if available, in FXStat.
In FXText and FXTextField, can now use wide-character delimiters.
Only escape left and right quotes in FXString escape() if non-zero.
Fixed a problem in FXSpinner and FXRealSpinner.
Factory function on abstract classes (FXIMPLEMENT_ABSTRACT) now yields NULL object instead of cratering program.
FXApp runWhileEvents(() blocks for just a little bit, allowing for roundtrip in case last commands caused events.
Removed FXFile::rename() and FXDir::rename() in favor of FXFile::move().
Some improvements to PathFinder file manager.
Disallow assignment to FXObjectListOf and FXPtrListOf from rvalues not type-compatible with lvalue.
Added peek() API to FXPtrQueue.
Namespace prefix needed in FXIMPLEMENT_ABSTRACT macro.
In FXDirVisitor, check both file index (inode number) and volume id, as file indexes may be same on different volumes.
In FXDirVisitor, drastically reduce number of system-calls by passing FXStat results when recursing.
Fixes to selection-tracking variables in PathFinder.
Improvements in fxscanf.cpp scanning digit groupings; not perfect yet however.
Added API in FXDirVisitor to allow access to FXStat result while in callback; this can further reduce system calls.
Some corner cases in FXPath::absolute() fixed.
Bug fixes in FXFile::copy().
Updates to Adie.stx default language syntax file.
Compiler warning fixes.
Enjoy!
-- JVZ
|
|
From: JVZ <je...@fo...> - 2016-05-24 02:23:17
|
A number of small items were reported, and have been fixed in this release:
- Removed quoted string length limitation in XML parser.
- Removed comment length limitation in XMP parser.
- Pass all text of processing instruction in one single callback from XML parser.
- XML declaration now only recognized if followed by whitespace.
- Updated Visual Studio 2008 project files to add enable intrinsics flags. This was causing problems compiling FXAtomic file.
- In FXAtomic, favor inlined x86 or x86-64 assembly over GCC builtins, due to spotty implementation of these primitives.
- Quoted string in XML could have newlines or blanks; adjusted parsing routine to not lose track of line and column
numbers while parsing over strings.
Enjoy!
-- JVZ
|
|
From: JVZ <je...@fo...> - 2016-05-20 18:40:41
|
New in this release:
Added XML Parser capability. This is a SAX parser, which generates callbacks for each XML element
encountered. There are two new classes, FXXML which is the core parser class, and FXXMLFile which
parses files or inputs from devices. The FXXML class may also be used to parse from memory buffers.
FXWSQueue implements a work-stealing queue. A Work-Stealing queue supports a single thread adding
or removing jobs from the front end, and multiple threads removing jobs from the backend.
PathFinder now has new ways to select files quickly: by means of wild-card patterns. The new selection
method is based on the list of file-patterns available from the normal filter drop-down box (which may
be configured from the Settings Panel). It can be invoked from Edit/Select Files menu.
New fxmath function fclamp() added; usually, this is implemented in terms of fmax() and fmin() which
are branch-free on many machines.
Using new Math functions in most places inside library itself.
Added line to box (2D) functions to FXExtent.
FXText shows block-cursor when in overstrike mode.
Fix in case clearElms() is used with volatile pointers.
More work done on FXDispatcher.
Dont add accelerators for strings on Bookmarks menu in Adie editor.
Escape & in FXRecentFiles to avoid accidentally installing accelerator.
Fix index type in FXGLObject.
Added new classes for generic callback infrastructure, FXCallback. To support older compilers, the
current implementation does not yet use varyadic templates (maybe at some future time, it will).
The new FXCallback mechanisms are already in use in FXXML and will soon be used in FXDispacher as well.
Some bug fixes in FXJSON.
Missing va_end() fixed in fxprintf() and fxcanf(). Not serious on most compilers, however.
Updated syntax patterns for Adie editor.
In fxscanf(), a %n does NOT increase return count.
Thousands grouping in fxprintf().
FXVariant (and other collection classes) indexed with FXival instead of FXint. Allowing for 64-bit very
large data structures.
More convenience APIs added to FXVariant.
FXVec4d and FXVec4f: lerp in two fma's when compiled with AVX2 and FMA (nice trick!).
Rare out-of-bounds memory read fixed in FXText.
Renamed clashing math functions in fxmath.h; isnan(), etc. renamed to fpNan(), etc. Problem was these
functions were sometimes macros on some operating systems; new ones are good C++ inside Math namespace.
No other clashes have been reported so far.
When going up one directory-level in PathFinder, select recent directory. Thus, keyboard directory
navigation is greatly improved.
File Dialog widgets also improved as above. This is a major keyboard navigation improvement.
Added memory fence APIs to FXAtomic. Needed for lock-free programming paradigms.
Byte swap stuff in fxendian.h.
Enjoy!
And please give feedback on any problems you may encounter in this code;
Cheers,
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 13:30 05/20/2016 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2016-01-07 02:03:10
|
January 6 - FOX DEVELOPMENT 1.7.54
New namespace Math collects most math library calls in C++ namespace; also on Windows,
implements missing math functions where needed. This includes single-precision math functions,
and thus old macros for these have been removed.
Help-file in Adie now regenerated during build from plain-text source.
Block-cursor in FXText when in overstrike mode.
Join-lines operation added to Adie.
Removed deprecated API's from FXComplexd and FXComplexf.
Updated VC++ project files.
Handle NaN and Inf on floating point string input (fxstrtod).
FXPath::isHidden() should work on Windows.
Warnings in fxstrtoll() and fxstrtoull() fixed.
Added at() API's to FXVariant, like FXDictionary and FXArray have (syntactical convenience).
Use FXival for FXVariant which allows large sizes on 64-bit machines.
Enjoy, & Happy 2016!!
-- JVZ
|
|
From: JVZ <je...@fo...> - 2015-11-25 05:39:20
|
Today a new version is available:
FXFontDialog initialized to sensible size when first-ran.
FXPath::match() algorithm major correctness improvements for nested patterns, and better error detection for broken patterns.
Fixed some layout issues in PathFinder when choosing large fonts, menubar icons were not centered vertically.
Dialog to search files for regular expression in Adie now fully functional.
Invalidated bookmark locations could cause trouble when bookmark menu popped up; now fixed.
Some functions refactored in Adie.
Minor problem in groupbox example application fixed.
Added facility to change scroll bar width in ControlPanel.
Added checkbutton to search only for first occurrence of pattern in file in FindInFiles dialog.
Pass base directory of search to FindInFiles visitor so we can relativize paths to it when recording search matches.
Zero array in FXIcon to shut up valgrind.
FXComplexf and FXComplexd APIs more compatible to standard C++ library: added norm(), abs(), arg(), exp(), log(), and conj(). The old names conjugate(), logarithm() and exponent() will probably be deprecated.
Some improvements to Adie's incremental search capability.
FXDirVisitor recursion limit added.
FXDirVisitor now has skip as well as early-out return mode.
Included paper reference motivating FXRandom shift-xor counts changes.
Change file mode improvement in PathFinder.
FXPath::isValidPath() API added.
Some fixes to PathFinder directory handling.
Expand environment variables when switching directories in PathFinder.
Some compiler warnings fixed.
FXThread priority issue fixed.
FXSettings parser issues fixed.
Incremental search history now being saved in Adie.
Backward search issue fixed in Adie.
Search and Replace Dialog fixes.
Enjoy, feedback welcome!
-- JVZ
--
+----------------------------------------------------------------------------+
| Copyright (C) 23:30 11/24/2015 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2015-07-01 16:04:20
|
New in this release:
Squeeze out useless instruction from fxgetticks().
Add adopt() of FXVariantArray API to FXVariant.
Fixes in Adie syntax parser.
Problem in FXIODevice fixed.
CMYK color conversion in JPEG image support fixed.
Improved FXRandom implementation.
Escape key to close dialogs now handled via FXAccelTable instead of hard-wired.
FXReplaceDialog search history implementation improvement.
Improvements to FXDirVisitor, and added early-out option.
Fix Adie text editor core-dumping issue with backward searches.
FXPath::match implementation improvements; more to come.
and more...
Enjoy!
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 11:00 07/ 1/2015 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2015-03-15 16:10:51
|
New in today's drop:
Syntax-colors in Adie can now be language-specific. Language families like C/C++/C#/Java
share common syntax-colors.
Syntax-colors in Adie now have initial (default) foreground color value in Adie.stx file.
End-user can change, however.
Fixed syntax-file parser in Adie: token hash incorrectly calculated.
Fixed uninitialized value issue in FXFileSelector, flagged by Valgrind.
Use thread-safe time functions on Windows, when available.
Fixed potential endless loop in FXText::findText().
Some fixes for VS2008.
Removed deprecated FXMutexLock in favor of FXScopedMutex.
Many standard clipboard types pre-registered now.
Charset conversions moved into FXWindow getDNDData(), setDNDData(). UTF8, UTF16, and
ASCII support, for FXString.
Off-by-one error fixed in fxscanf() when scanning character-sets.
Template FXHashOf added.
New class FXDispatcher being implemented (experimental).
Insertion of command output into Adie text buffer is now undo-able.
Log-window added to Adie; pops up when executing command outputs to stderr.
Implement Larsson, Moeller, Lengyel sphere-box overlap algorithm; use branch-free
fmax, fmin, fmaxf, fminf where possible.
Fix warning in fxendian.h.
Added encode/decode URL feature to Adie.
Equality operator in FXVariant has been removed.
Inherit handle option works on Windows.
Added return codes to FXIO, FXIODevice.
Added setMode() API to FXIO, FXIODevice.
Early-out in dictionary classes.
Improved speed of failed search in dictionary classes.
Better docs on FXExpression.
Execute shell commands feature added to Adie.
Scrolling Syntax menu in Adie; list of supported languages getting too big.
Added some protection to FXMessageChannel.
Enjoy!
-- JVZ
|
|
From: JVZ <je...@fo...> - 2014-11-11 01:07:00
|
November 10 - FOX DEVELOPMENT 1.7.50
Major changes in the regular expression engine. New API amatch() for anchored match, and
new API search which replaces match(). More sensible parameter order and moved some flags
from run-time to compile time.
Internals of FXRex are now ready for UTF8 matching; however parsing part will need to follow
before these new capabilities can be put to use.
FXRex::substitute() now interprets the usual escape sequences when creating replacement pattern
from regular expression match captures.
Speedup in FXText getByte(), getChar(), etc. by introduction of branch-free handling of gapped-
buffer accesses.
Moved hard-wired search and replace dialogs out of FXText and into Adie text editor; this is part
of the FXText widget slim-down program.
Adie text editor search and replace improvements. Basically, stream-lines mouse-free usability.
Adie incremental search bar now pops up at bottom of window. This is much less disruptive as text
does not get "pushed down" when this toolbar pops up.
The FXHash find() routine now returns the slot index, or -1 if not found. If you use FXHash you
should be aware that simply replacing find() by at() will fix your code to the new system.
This was done based on request from a user who noted the find() API in FXHash behaved differently
from the find() in FXDictionary.
Strip leading and trailing space from display in Adie's bookmark menu.
Added ParallelMax constant declaration for FXParallelFor.
Change to FXText findText() API. The new version can perform not only forward and backward search,
but also anchored match. The anchored match is performed if neither SEARCH_FORWARD or SEARCH_BACKWARD
flags are passed.
Goto Line dialog moved from FXText to Adie text editor proper (also part of FXText widget slimdown program).
Adie Replace Dialog now has Search button.
Adie Replace Dialog Replace function now first checks if current highlighted text is the one being searched
for, and only searches further if it isn't. This logic will therefore replace already highlighted selection,
and make it less likely you accidentally "skip" the first item in a search-and-replace session.
Also, Search and Replace dialogs stay up until explicitly closed. It was often the case that the first
search is not always the desired one, and one had to bring up the dialog a second time. Note that Escape
hides the dialog, so no mouse interaction is required for "Power Users".
Search and Replace dialog can now replace within selected text only.
Some language pattern updates in Adie syntax coloring file.
CMake coloring patterns added to syntax file.
New match modes added to FXRex: Exact, and NotEmpty. The Exact mode succeeds only if a successful match
eats the entire string. The NotEmpty mode succeeds only if the match eats at least one character.
Note these are compile time flags, and implemented through special asserts in the matching engine.
Thus, the engine will potentially backtrack earlier matches to try other possibilities!
Regular expression match engine speeded up by streamlining matcher-setup internally; this particularly
affects search().
Fixed bug in FXHash::at().
Eliminated recursion in simple possessive match in FXRex.
Added handy isNull(), isBool(), etc. APIs to FXVariant.
Made selection-changing APIs virtual in FXText, for subclassing.
Enjoy!!
-- JVZ
--
+----------------------------------------------------------------------------+
| Copyright (C) 19:00 11/10/2014 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|
|
From: JVZ <je...@fo...> - 2013-12-05 19:21:27
|
New in the "Sinterklaas Editie" FOX development release:
Updated FXJSON JavaScript Object Notation I/O class:- removed limits to token size in
both input and output operations (formerly limited to buffer size).
Minor changes to FXVariant:- added some missing API's, removed toChar() as its useless.
Added has() to determine if key is present in case FXVariant is a map.
Simplified FXFile and other FXIO subclasses a bit to remove redundant implementations.
Added FXIOBuffer, an FXIO device that serializes to/from a memory buffer.
FXRanged, FXRangef: now check intersect() results a bit differently.
Ray to FXSpheref, FXSphered intersection test changed to allow origin inside sphere possibility.
Fixed small bug in wc2nc().
Possible buffer overrun in FXDir fixed.
Added class FXStringMap.
Changed some API's in FXDictionary. Added erase() API to allow removal of slot already located.
This is faster, and needed for successful subclassing.
FXStat problem fixed on Windows.
Comments welcome!
-- JVZ
+----------------------------------------------------------------------------+
| Copyright (C) 16:10 06/28/2013 Jeroen van der Zijp. All Rights Reserved. |
+----------------------------------------------------------------------------+
|