Parcourir la source

m1 report update

Evgeny Grin (Karlson2k) il y a 1 an
Parent
commit
963295add6
1 fichiers modifiés avec 31 ajouts et 9 suppressions
  1. 31 9
      doc/m1.txt

+ 31 - 9
doc/m1.txt

@@ -3,22 +3,24 @@ Dear all,
 We're happy to announce reaching the first milestone for the
 STF MHD 2.0 project, which is completing the MHD HTTP header
 and thus the design for the next generation API.  We have now
-spent several months iterating between discussing, editing,
-and testing details and are finally happy with the result.
+spent several months iterating between discussing, designing,
+optimising, editing, and testing details and are finally
+happy with the result.
 
 Key objectives for us were:
 
 - simplify application code that uses MHD
 - keep the API and the MHD code size small
 - ensure the API is extensible
-- enable use of different TLS backends
+- enable use of different TLS backends, avoid backend-specific
+  settings to use backends in the same way.
 - make API work with HTTP 1.x, HTTP/2 and HTTP/3
 - preserve or improve portability across platforms
 - stay compatible to a wide range of C and C++ compilers
 
 The main changes these objectives inspired are to:
 
-- Split the MHD_AccesSHandlerCallback functionality into
+- Split the MHD_AccessHandlerCallback functionality into
   various separate callbacks to keep the API simple for
   simple requests while allowing complex logic to be
   incrementally introduced via the new "struct MHD_Action".
@@ -45,6 +47,8 @@ The main changes these objectives inspired are to:
   of using well-typed functions, while no such functions
   actually exist in the library, keeping the code size
   minimal, especially if features are not even used :-).
+- Unified the way how settings are used for daemon,
+  connection and response objects.
 - Removed the separation of options and flags and
   made it harder to pass inconsistent options
 - improved terminology across the API, in particular by
@@ -57,6 +61,19 @@ The main changes these objectives inspired are to:
   Also changed the API to use more consistent
   prefixes for related functions by using
   "MHD_subject_verb_object" naming convention
+- significantly simplified for application processing of
+  client's upload. Removed the need for troublesome (for
+  application) incremental processing (especially problematic
+  for forms processing), while keeping automatic limits
+  for memory allocations, preventing by design wide range
+  of remote attacks
+- Added unified and detailed introspection API for library,
+  daemon, connection, stream and request objects.
+  The API is designed in the same way for all object, simplifying 
+  use for the application. The new API is detailed and allow
+  application to extract any required information in a simple
+  way. Also separated "fixed" and "dynamic" properties of objects
+  for letting compiler optimise application code better.
 - Integrated HTTP status into the response object, as
   this is way more logical and we are aware of various
   implementations being forced to basically pass them
@@ -74,11 +91,11 @@ The main changes these objectives inspired are to:
   does not fit into main memory. This both simplifies usage
   in the common case where uploaded data is small, while also
   nicely supporting use-cases with large data streams.
-- Made responses unmodifiable after first use. This would not be thread-safe.
-  However, MHD-generated headers (Date, Connection/Keep-Alive) are
-  part of the *request* and do not count as part of the
-  immutable "response" here.  Removed "footers" from responses.
-  With unmodifiable responses everything should be "headers".
+- Made responses unmodifiable after first use. Modifiable responses
+  are not be thread-safe. However, MHD-generated headers (Date,
+  Connection/Keep-Alive) are part of the *request* and do not count
+  as part of the immutable "response" here.  Removed "footers" from
+  responses.  With unmodifiable responses everything should be "headers".
   However, footers are supported as part of a *request* instead.
 - Move response codes from MHD_HTTP_xxx namespace to MHD_HTTP_CODE_xxx
   namespace. This avoids potential clashes with other MHD constant names.
@@ -88,6 +105,11 @@ The main changes these objectives inspired are to:
   strings (but applications may still also use the strings)
   This also includes better status codes returned from
   API calls to diagnose issues (no more just "YES/NO")
+- Let application to use request methods as a enum, avoid repeated
+  string comparison by sharing result of the already performed
+  internal detection of the request method.  Keep ability to
+  use non-standard HTTP requests methods if needed via use
+  of introspection API.
 - Introduced "MHD_APP_SOCKET_CNTX_TYPE" hack to allow
   applications to improve type-safety by overriding
   the type of "closure" arguments instead of using