Re: [EE] Ideas about improving safety in C language

Neil <[email protected]>
Newsgroups gmane.comp.hardware.microcontrollers.pic
Message-ID <[email protected]>
I've seen similar discussions already. And AFAIK there are individual 
efforts.
I've had this open in a tab for some time now, but haven't gone through 
it yet... https://github.com/intel/safestringlib

Cheers,
-Neil.


On 4/15/2025 10:31 AM, Isaac Marino Bavaresco wrote:
> Hi folks,
>
> I was thinking about the current discussion about C/C++ language 
> safety, and I recalled an old idea I had long ago about creating a new 
> string format and library.
>
> It could be possible for one person alone to implement and use it 
> privately, but of course it would be even better if it becomes a 
> standard, perhaps with support from the compilers.
>
> I don't know whether something similar was already suggested or is 
> being used, but I would like to know your opinion about it.
>
>
> Cheers,
>
> Isaac
>
>
> Proposed New C string format:
>
> Bytes:
> <descriptor> [<references_counter>] <allocated_size_indicator> 
> [<used_size_indicator> [<number_of_characters>]] [<characters>...]
>
> Descriptor: (bits) 0aabbccr (bit seven is reserved to indicate future 
> new formats, most probably two-byte descriptors)
>
> It would be good to have an encoding field (to indicate ASCII, ANSI, 
> UTF-8, UTF-16, etc.), but there is not enough bits in a byte and the 
> fields I chose are more important. Perhaps it can be included in a 
> two-byte descriptor format.
>
> Some details like the obligatory presence of an ending '\0' character 
> or not must be discussed. If the ending '\0' is required, it would be 
> very simple to use the new format  with the traditional C library 
> functions.
>
>
> aa = Area:
> 00    Static
> 01    Stack (automatic)
> 10    Dynamic
> 11    Dynamic with references counter
>
> bb = Length Indicators Bits
> 00     8 bits
> 01    16 bits
> 10    32 bits
> 11    64 bits (perhaps this value could be used for other purpose, 
> most probably 64-bits will never be used).
>
> cc = Length Indicators Present
> 00    Only Allocated Size Indicator (used for read-only or fixed size 
> strings)
> 01    Allocated Size and Used Size Indicators
> 10    Allocated Size, Used Size and Number of Characters Indicators
> 11    *Reserved*
>
> Size Indicators: All-ones means not informed. Could be used so the 
> length is to be calculated when the string is accessed for the first 
> time, saving the need for calculating the length of every string in 
> advance. It would require '\0' ended strings. Needs more thought.
>
> r = Read Only
> 0    Read-Write
> 1    Read-Only
>
>

-- 
http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive
View/change your membership options at
https://mailman.mit.edu/mailman/listinfo/piclist
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.