/ vendor / fatfs / source / 00history.txt
00history.txt
  1  ----------------------------------------------------------------------------
  2    Revision history of FatFs module
  3  ----------------------------------------------------------------------------
  4  
  5  R0.00 (February 26, 2006)
  6  
  7    Prototype.
  8  
  9  
 10  
 11  R0.01 (April 29, 2006)
 12  
 13    The first release.
 14  
 15  
 16  
 17  R0.02 (June 01, 2006)
 18  
 19    Added FAT12 support.
 20    Removed unbuffered mode.
 21    Fixed a problem on small (<32M) partition.
 22  
 23  
 24  
 25  R0.02a (June 10, 2006)
 26  
 27    Added a configuration option (_FS_MINIMUM).
 28  
 29  
 30  
 31  R0.03 (September 22, 2006)
 32  
 33    Added f_rename().
 34    Changed option _FS_MINIMUM to _FS_MINIMIZE.
 35  
 36  
 37  
 38  R0.03a (December 11, 2006)
 39  
 40    Improved cluster scan algorithm to write files fast.
 41    Fixed f_mkdir() creates incorrect directory on FAT32.
 42  
 43  
 44  
 45  R0.04 (February 04, 2007)
 46  
 47    Added f_mkfs().
 48    Supported multiple drive system.
 49    Changed some interfaces for multiple drive system.
 50    Changed f_mountdrv() to f_mount().
 51  
 52  
 53  
 54  R0.04a (April 01, 2007)
 55  
 56    Supported multiple partitions on a physical drive.
 57    Added a capability of extending file size to f_lseek().
 58    Added minimization level 3.
 59    Fixed an endian sensitive code in f_mkfs().
 60  
 61  
 62  
 63  R0.04b (May 05, 2007)
 64  
 65    Added a configuration option _USE_NTFLAG.
 66    Added FSINFO support.
 67    Fixed DBCS name can result FR_INVALID_NAME.
 68    Fixed short seek (<= csize) collapses the file object.
 69  
 70  
 71  
 72  R0.05 (August 25, 2007)
 73  
 74    Changed arguments of f_read(), f_write() and f_mkfs().
 75    Fixed f_mkfs() on FAT32 creates incorrect FSINFO.
 76    Fixed f_mkdir() on FAT32 creates incorrect directory.
 77  
 78  
 79  
 80  R0.05a (February 03, 2008)
 81  
 82    Added f_truncate() and f_utime().
 83    Fixed off by one error at FAT sub-type determination.
 84    Fixed btr in f_read() can be mistruncated.
 85    Fixed cached sector is not flushed when create and close without write.
 86  
 87  
 88  
 89  R0.06 (April 01, 2008)
 90  
 91    Added fputc(), fputs(), fprintf() and fgets().
 92    Improved performance of f_lseek() on moving to the same or following cluster.
 93  
 94  
 95  
 96  R0.07 (April 01, 2009)
 97  
 98    Merged Tiny-FatFs as a configuration option. (_FS_TINY)
 99    Added long file name feature. (_USE_LFN)
100    Added multiple code page feature. (_CODE_PAGE)
101    Added re-entrancy for multitask operation. (_FS_REENTRANT)
102    Added auto cluster size selection to f_mkfs().
103    Added rewind option to f_readdir().
104    Changed result code of critical errors.
105    Renamed string functions to avoid name collision.
106  
107  
108  
109  R0.07a (April 14, 2009)
110  
111    Septemberarated out OS dependent code on reentrant cfg.
112    Added multiple sector size feature.
113  
114  
115  
116  R0.07c (June 21, 2009)
117  
118    Fixed f_unlink() can return FR_OK on error.
119    Fixed wrong cache control in f_lseek().
120    Added relative path feature.
121    Added f_chdir() and f_chdrive().
122    Added proper case conversion to extended character.
123  
124  
125  
126  R0.07e (November 03, 2009)
127  
128    Septemberarated out configuration options from ff.h to ffconf.h.
129    Fixed f_unlink() fails to remove a sub-directory on _FS_RPATH.
130    Fixed name matching error on the 13 character boundary.
131    Added a configuration option, _LFN_UNICODE.
132    Changed f_readdir() to return the SFN with always upper case on non-LFN cfg.
133  
134  
135  
136  R0.08 (May 15, 2010)
137  
138    Added a memory configuration option. (_USE_LFN = 3)
139    Added file lock feature. (_FS_SHARE)
140    Added fast seek feature. (_USE_FASTSEEK)
141    Changed some types on the API, XCHAR->TCHAR.
142    Changed .fname in the FILINFO structure on Unicode cfg.
143    String functions support UTF-8 encoding files on Unicode cfg.
144  
145  
146  
147  R0.08a (August 16, 2010)
148  
149    Added f_getcwd(). (_FS_RPATH = 2)
150    Added sector erase feature. (_USE_ERASE)
151    Moved file lock semaphore table from fs object to the bss.
152    Fixed f_mkfs() creates wrong FAT32 volume.
153  
154  
155  
156  R0.08b (January 15, 2011)
157  
158    Fast seek feature is also applied to f_read() and f_write().
159    f_lseek() reports required table size on creating CLMP.
160    Extended format syntax of f_printf().
161    Ignores duplicated directory separators in given path name.
162  
163  
164  
165  R0.09 (September 06, 2011)
166  
167    f_mkfs() supports multiple partition to complete the multiple partition feature.
168    Added f_fdisk().
169  
170  
171  
172  R0.09a (August 27, 2012)
173  
174    Changed f_open() and f_opendir() reject null object pointer to avoid crash.
175    Changed option name _FS_SHARE to _FS_LOCK.
176    Fixed assertion failure due to OS/2 EA on FAT12/16 volume.
177  
178  
179  
180  R0.09b (January 24, 2013)
181  
182    Added f_setlabel() and f_getlabel().
183  
184  
185  
186  R0.10 (October 02, 2013)
187  
188    Added selection of character encoding on the file. (_STRF_ENCODE)
189    Added f_closedir().
190    Added forced full FAT scan for f_getfree(). (_FS_NOFSINFO)
191    Added forced mount feature with changes of f_mount().
192    Improved behavior of volume auto detection.
193    Improved write throughput of f_puts() and f_printf().
194    Changed argument of f_chdrive(), f_mkfs(), disk_read() and disk_write().
195    Fixed f_write() can be truncated when the file size is close to 4GB.
196    Fixed f_open(), f_mkdir() and f_setlabel() can return incorrect value on error.
197  
198  
199  
200  R0.10a (January 15, 2014)
201  
202    Added arbitrary strings as drive number in the path name. (_STR_VOLUME_ID)
203    Added a configuration option of minimum sector size. (_MIN_SS)
204    2nd argument of f_rename() can have a drive number and it will be ignored.
205    Fixed f_mount() with forced mount fails when drive number is >= 1. (appeared at R0.10)
206    Fixed f_close() invalidates the file object without volume lock.
207    Fixed f_closedir() returns but the volume lock is left acquired. (appeared at R0.10)
208    Fixed creation of an entry with LFN fails on too many SFN collisions. (appeared at R0.07)
209  
210  
211  
212  R0.10b (May 19, 2014)
213  
214    Fixed a hard error in the disk I/O layer can collapse the directory entry.
215    Fixed LFN entry is not deleted when delete/rename an object with lossy converted SFN. (appeared at R0.07)
216  
217  
218  
219  R0.10c (November 09, 2014)
220  
221    Added a configuration option for the platforms without RTC. (_FS_NORTC)
222    Changed option name _USE_ERASE to _USE_TRIM.
223    Fixed volume label created by Mac OS X cannot be retrieved with f_getlabel(). (appeared at R0.09b)
224    Fixed a potential problem of FAT access that can appear on disk error.
225    Fixed null pointer dereference on attempting to delete the root direcotry. (appeared at R0.08)
226  
227  
228  
229  R0.11 (February 09, 2015)
230  
231    Added f_findfirst(), f_findnext() and f_findclose(). (_USE_FIND)
232    Fixed f_unlink() does not remove cluster chain of the file. (appeared at R0.10c)
233    Fixed _FS_NORTC option does not work properly. (appeared at R0.10c)
234  
235  
236  
237  R0.11a (September 05, 2015)
238  
239    Fixed wrong media change can lead a deadlock at thread-safe configuration.
240    Added code page 771, 860, 861, 863, 864, 865 and 869. (_CODE_PAGE)
241    Removed some code pages actually not exist on the standard systems. (_CODE_PAGE)
242    Fixed errors in the case conversion teble of code page 437 and 850 (ff.c).
243    Fixed errors in the case conversion teble of Unicode (cc*.c).
244  
245  
246  
247  R0.12 (April 12, 2016)
248  
249    Added support for exFAT file system. (_FS_EXFAT)
250    Added f_expand(). (_USE_EXPAND)
251    Changed some members in FINFO structure and behavior of f_readdir().
252    Added an option _USE_CHMOD.
253    Removed an option _WORD_ACCESS.
254    Fixed errors in the case conversion table of Unicode (cc*.c).
255  
256  
257  
258  R0.12a (July 10, 2016)
259  
260    Added support for creating exFAT volume with some changes of f_mkfs().
261    Added a file open method FA_OPEN_APPEND. An f_lseek() following f_open() is no longer needed.
262    f_forward() is available regardless of _FS_TINY.
263    Fixed f_mkfs() creates wrong volume. (appeared at R0.12)
264    Fixed wrong memory read in create_name(). (appeared at R0.12)
265    Fixed compilation fails at some configurations, _USE_FASTSEEK and _USE_FORWARD.
266  
267  
268  
269  R0.12b (September 04, 2016)
270  
271    Made f_rename() be able to rename objects with the same name but case.
272    Fixed an error in the case conversion teble of code page 866. (ff.c)
273    Fixed writing data is truncated at the file offset 4GiB on the exFAT volume. (appeared at R0.12)
274    Fixed creating a file in the root directory of exFAT volume can fail. (appeared at R0.12)
275    Fixed f_mkfs() creating exFAT volume with too small cluster size can collapse unallocated memory. (appeared at R0.12)
276    Fixed wrong object name can be returned when read directory at Unicode cfg. (appeared at R0.12)
277    Fixed large file allocation/removing on the exFAT volume collapses allocation bitmap. (appeared at R0.12)
278    Fixed some internal errors in f_expand() and f_lseek(). (appeared at R0.12)
279  
280  
281  
282  R0.12c (March 04, 2017)
283  
284    Improved write throughput at the fragmented file on the exFAT volume.
285    Made memory usage for exFAT be able to be reduced as decreasing _MAX_LFN.
286    Fixed successive f_getfree() can return wrong count on the FAT12/16 volume. (appeared at R0.12)
287    Fixed configuration option _VOLUMES cannot be set 10. (appeared at R0.10c)
288  
289  
290  
291  R0.13 (May 21, 2017)
292  
293    Changed heading character of configuration keywords "_" to "FF_".
294    Removed ASCII-only configuration, FF_CODE_PAGE = 1. Use FF_CODE_PAGE = 437 instead.
295    Added f_setcp(), run-time code page configuration. (FF_CODE_PAGE = 0)
296    Improved cluster allocation time on stretch a deep buried cluster chain.
297    Improved processing time of f_mkdir() with large cluster size by using FF_USE_LFN = 3.
298    Improved NoFatChain flag of the fragmented file to be set after it is truncated and got contiguous.
299    Fixed archive attribute is left not set when a file on the exFAT volume is renamed. (appeared at R0.12)
300    Fixed exFAT FAT entry can be collapsed when write or lseek operation to the existing file is done. (appeared at R0.12c)
301    Fixed creating a file can fail when a new cluster allocation to the exFAT directory occures. (appeared at R0.12c)
302  
303  
304  
305  R0.13a (October 14, 2017)
306  
307    Added support for UTF-8 encoding on the API. (FF_LFN_UNICODE = 2)
308    Added options for file name output buffer. (FF_LFN_BUF, FF_SFN_BUF).
309    Added dynamic memory allocation option for working buffer of f_mkfs() and f_fdisk().
310    Fixed f_fdisk() and f_mkfs() create the partition table with wrong CHS parameters. (appeared at R0.09)
311    Fixed f_unlink() can cause lost clusters at fragmented file on the exFAT volume. (appeared at R0.12c)
312    Fixed f_setlabel() rejects some valid characters for exFAT volume. (appeared at R0.12)
313  
314  
315  
316  R0.13b (April 07, 2018)
317  
318    Added support for UTF-32 encoding on the API. (FF_LFN_UNICODE = 3)
319    Added support for Unix style volume ID. (FF_STR_VOLUME_ID = 2)
320    Fixed accesing any object on the exFAT root directory beyond the cluster boundary can fail. (appeared at R0.12c)
321    Fixed f_setlabel() does not reject some invalid characters. (appeared at R0.09b)
322  
323  
324  
325  R0.13c (October 14, 2018)
326    Supported stdint.h for C99 and later. (integer.h was included in ff.h)
327    Fixed reading a directory gets infinite loop when the last directory entry is not empty. (appeared at R0.12)
328    Fixed creating a sub-directory in the fragmented sub-directory on the exFAT volume collapses FAT chain of the parent directory. (appeared at R0.12)
329    Fixed f_getcwd() cause output buffer overrun when the buffer has a valid drive number. (appeared at R0.13b)
330  
331  
332  
333  R0.14 (October 14, 2019)
334    Added support for 64-bit LBA and GUID partition table (FF_LBA64 = 1)
335    Changed some API functions, f_mkfs() and f_fdisk().
336    Fixed f_open() function cannot find the file with file name in length of FF_MAX_LFN characters.
337    Fixed f_readdir() function cannot retrieve long file names in length of FF_MAX_LFN - 1 characters.
338    Fixed f_readdir() function returns file names with wrong case conversion. (appeared at R0.12)
339    Fixed f_mkfs() function can fail to create exFAT volume in the second partition. (appeared at R0.12)
340