c v2.



1. true string data type

2. true boolean data type

3. nested comments

4. the ability to return multiple parameters from a function

5. automatic deletion of data

6. type checking of boolean/int expressions

7. a 64-bit integer type

8. an exponentiation operator

9. improved library functions for operations on date and time values

10. range checking to ensure that pointers to not corrupt or read memory locations outside defined blocks




Notes


1.

	string s1, s2;

	s1 = "abcd";

	s2 = s1 + "abdc";

	s1 = substr( s1, 2, 1 )

	s1 = s2[1];



2.
	boolean x;

	x = true;

	if (x)				// must be boolean expr not int expr



3. 

	/* asdasd 
		/* asds */ 
	asdasda
	aksadsd
	asdasd */


4.

 	int v1( int x, int y : int a, int b )
	{
		a = 1;
		b = 2;
	}



	a and b must be variables in the calling function not expressions



5. 

	increment reference count on a memory block when

		memory block assigned to a variable


	decrement reference count on a memory block when

		some other block assigned to a variable pointing to it

		a variable pointing to it goes out of scope (local variable, exit of the function)


	when reference count reaches 0, free the memory block


	ignore 'free()' library calls


	no language changes needed to implement this


6. 

	if (x)				// must be boolean expr not int expr

	while (x)

	for (.. x .. )	

	a > b				// boolean expr

	(a > b) and (c <= d)		// boolean expr

	a > b	


7.
	int64 x;



8.

..


9.

	dmy to date value

	date value to dmy

	days between two dates

	date + x days

	leap year yes/no
	
	range at least +/- 100 years, preferably +/- 1000 yrs.
	


10.


	mem block

		2 bytes		reference count (number of pointers pointing to this block)
		4 bytes		size of the memory block
		x bytes		memory as allocated



	pointer

		4 bytes		start of the memory block being pointed to
		4 bytes		current location pointed to



	ptr++		pointer expression, check for overflow of the memory block 

	*(ptr + 10)

	etc.

			increment/decrement, or pointer value used against an arithmetic operator

