diff --git a/manual/luatex-backend.tex b/manual/luatex-backend.tex
index 2f1742517bc4d3610b0c8fc0b82b2e88977a70d3..14183b15b6b0bcaf1e006c7d1b2271540cadd965 100644
--- a/manual/luatex-backend.tex
+++ b/manual/luatex-backend.tex
@@ -570,17 +570,18 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 
 \type {Annot} methods:
 
+
 \startfunctioncall
 <boolean>     = <Annot>:isOK()
-<Object>      = <Annot>:getAppearance()
-<AnnotBorder> = <Annot>:getBorder()
 <boolean>     = <Annot>:match(<Ref>)
+<Object>      = <Annot>:getAppearance() -- gone
+<AnnotBorder> = <Annot>:getBorder()     -- gone
 \stopfunctioncall
 
-\type {AnnotBorderStyle} methods:
+\type {AnnotBorderStyle} methods (gone):
 
 \startfunctioncall
-<number> = <AnnotBorderStyle>:getWidth()
+<number> = <AnnotBorderStyle>:getWidth() -- gone
 \stopfunctioncall
 
 \type {Annots} methods:
@@ -593,10 +594,10 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 \type {Array} methods:
 
 \startfunctioncall
-            <Array>:incRef()
-            <Array>:decRef()
+            <Array>:incRef()      -- gone
+            <Array>:decRef()      -- gone
+            <Array>:add(<Object>) -- will go
 <integer> = <Array>:getLength()
-            <Array>:add(<Object>)
 <Object>  = <Array>:get(<integer>)
 <Object>  = <Array>:getNF(<integer>)
 <string>  = <Array>:getString(<integer>)
@@ -614,11 +615,11 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 <Object>   = <Attribute>:getDefaultValue
 <string>   = <Attribute>:getName()
 <integer>  = <Attribute>:getRevision()
-             <Attribute>:setRevision(<unsigned integer>)
-<boolean>  = <Attribute>:istHidden()
-             <Attribute>:setHidden(<boolean>)
+             <Attribute>:setRevision(<unsigned integer>) -- will go
+<boolean>  = <Attribute>:isHidden()
+             <Attribute>:setHidden(<boolean>)            -- will go
 <string>   = <Attribute>:getFormattedValue()
-<string>   = <Attribute>:setFormattedValue(<string>)
+<string>   = <Attribute>:setFormattedValue(<string>)     -- will go
 \stopfunctioncall
 
 \type {Catalog} methods:
@@ -645,26 +646,37 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 \type {EmbFile} methods:
 
 \startfunctioncall
-<string>   = <EmbFile>:name()
-<string>   = <EmbFile>:description()
 <integer>  = <EmbFile>:size()
 <string>   = <EmbFile>:modDate()
 <string>   = <EmbFile>:createDate()
 <string>   = <EmbFile>:checksum()
 <string>   = <EmbFile>:mimeType()
-<Object>   = <EmbFile>:streamObject()
 <boolean>  = <EmbFile>:isOk()
+<string>   = <EmbFile>:name()         -- not (yet) implemented
+<string>   = <EmbFile>:description()  -- not (yet) implemented
+<Object>   = <EmbFile>:streamObject() -- not (yet) implemented
+<boolean>  = <EmbFile>:save()         -- will go
+\stopfunctioncall
+
+\type {FileSpec} methods:
+
+\startfunctioncall
+<boolean> = <FileSpec>:isOk()
+<string>  = <FileSpec>:getFileName()
+<string>  = <FileSpec>:getFileNameForPlatform()
+<string>  = <FileSpec>:getDescription()
+<EmbFile> = <FileSpec>:getEmbeddedFile()
 \stopfunctioncall
 
 \type {Dict} methods:
 
 \startfunctioncall
-            <Dict>:incRef()
-            <Dict>:decRef()
-<integer> = <Dict>:getLength()
-            <Dict>:add(<string>, <Object>)
-            <Dict>:set(<string>, <Object>)
+            <Dict>:incRef()                -- will go
+            <Dict>:decRef()                -- will go
+            <Dict>:add(<string>, <Object>) -- will go
+            <Dict>:set(<string>, <Object>) -- will go
             <Dict>:remove(<string>)
+<integer> = <Dict>:getLength()
 <boolean> = <Dict>:is(<string>)
 <Object>  = <Dict>:lookup(<string>)
 <Object>  = <Dict>:lookupNF(<string>)
@@ -675,12 +687,12 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 <boolean> = <Dict>:hasKey(<string>)
 \stopfunctioncall
 
-\type {Link} methods:
+% \type {Link} methods:
 
-\startfunctioncall
-<boolean>  = <Link>:isOK()
-<boolean>  = <Link>:inRect(<number>, <number>)
-\stopfunctioncall
+% \startfunctioncall
+% <boolean>  = <Link>:isOK()
+% <boolean>  = <Link>:inRect(<number>, <number>)
+% \stopfunctioncall
 
 \type {LinkDest} methods:
 
@@ -703,27 +715,29 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 
 \type {Links} methods:
 
+% <Link>     = <Links>:getLink(<integer>)
+
 \startfunctioncall
 <integer>  = <Links>:getNumLinks()
-<Link>     = <Links>:getLink(<integer>)
 \stopfunctioncall
 
 \type {Object} methods:
 
 \startfunctioncall
-            <Object>:initBool(<boolean>)
-            <Object>:initInt(<integer>)
-            <Object>:initReal(<number>)
-            <Object>:initString(<string>)
-            <Object>:initName(<string>)
-            <Object>:initNull()
-            <Object>:initArray(<XRef>)
-            <Object>:initDict(<XRef>)
-            <Object>:initStream(<Stream>)
-            <Object>:initRef(<integer> object number, <integer> object generation)
-            <Object>:initCmd(<string>)
-            <Object>:initError()
-            <Object>:initEOF()
+            <Object>:initBool(<boolean>)              -- will go
+            <Object>:initInt(<integer>)               -- will go
+            <Object>:initReal(<number>)               -- will go
+            <Object>:initString(<string>)             -- will go
+            <Object>:initName(<string>)               -- will go
+            <Object>:initNull()                       -- will go
+            <Object>:initArray(<XRef>)                -- will go
+            <Object>:initDict(<XRef>)                 -- will go
+            <Object>:initStream(<Stream>)             -- will go
+            <Object>:initRef(<integer> object number,
+                <integer> object generation)          -- will go
+            <Object>:initCmd(<string>)                -- will go
+            <Object>:initError()                      -- will go
+            <Object>:initEOF()                        -- will go
 <Object>  = <Object>:fetch(<XRef>)
 <integer> = <Object>:getType()
 <string>  = <Object>:getTypeName()
@@ -756,19 +770,19 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 <integer> = <Object>:getRefGen()
 <string>  = <Object>:getCmd()
 <integer> = <Object>:arrayGetLength()
-          = <Object>:arrayAdd(<Object>)
+          = <Object>:arrayAdd(<Object>)               -- will go
 <Object>  = <Object>:arrayGet(<integer>)
 <Object>  = <Object>:arrayGetNF(<integer>)
 <integer> = <Object>:dictGetLength(<integer>)
-          = <Object>:dictAdd(<string>, <Object>)
-          = <Object>:dictSet(<string>, <Object>)
+          = <Object>:dictAdd(<string>, <Object>)      -- will go
+          = <Object>:dictSet(<string>, <Object>)      -- will go
 <Object>  = <Object>:dictLookup(<string>)
 <Object>  = <Object>:dictLookupNF(<string>)
 <string>  = <Object>:dictgetKey(<integer>)
 <Object>  = <Object>:dictgetVal(<integer>)
 <Object>  = <Object>:dictgetValNF(<integer>)
 <boolean> = <Object>:streamIs(<string>)
-          = <Object>:streamReset()
+          = <Object>:streamReset()                    -- will go
 <integer> = <Object>:streamGetChar()
 <integer> = <Object>:streamLookChar()
 <integer> = <Object>:streamGetPos()
@@ -820,7 +834,8 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 <integer>  = <PDFDoc>:getNumPages()
 <string>   = <PDFDoc>:readMetadata()
 <Object>   = <PDFDoc>:getStructTreeRoot()
-<integer>  = <PDFDoc>:findPage(<integer> object number, <integer> object generation)
+<integer>  = <PDFDoc>:findPage(<integer> object number,
+                <integer> object generation)
 <Links>    = <PDFDoc>:getLinks(<integer>)
 <LinkDest> = <PDFDoc>:findDest(<string>)
 <boolean>  = <PDFDoc>:isEncrypted()
@@ -838,7 +853,7 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 \type {PDFRectangle} methods:
 
 \startfunctioncall
-<boolean>  = <PDFRectangle>:isValid()
+<boolean>  = <PDFRectangle>:isValid() -- setindex/newindex will go
 \stopfunctioncall
 
 %\type {Ref} methods:
@@ -884,16 +899,17 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 <string>         = <StructElement>:getID()
 <string>         = <StructElement>:getLanguage()
 <integer>        = <StructElement>:getRevision()
-                   <StructElement>:setRevision(<unsigned integer>)
+                   <StructElement>:setRevision(<unsigned integer>)   -- will go
 <string>         = <StructElement>:getTitle()
 <string>         = <StructElement>:getExpandedAbbr()
 <integer>        = <StructElement>:getNumChildren()
 <StructElement>  = <StructElement>:getChild()
-                 = <StructElement>:appendChild<StructElement>)
+                 = <StructElement>:appendChild<StructElement>)       -- will go
 <integer>        = <StructElement>:getNumAttributes()
-<Attribute>      = <StructElement>:geAttribute(<integer>)
-<string>         = <StructElement>:appendAttribute(<Attribute>)
-<Attribute>      = <StructElement>:findAttribute(<Attribute::Type>,boolean,Attribute::Owner)
+<Attribute>      = <StructElement>:getAttribute(<integer>)
+<string>         = <StructElement>:appendAttribute(<Attribute>)      -- will go
+<Attribute>      = <StructElement>:findAttribute(<Attribute::Type>,
+                        boolean,Attribute::Owner)
 <string>         = <StructElement>:getAltText()
 <string>         = <StructElement>:getActualText()
 <string>         = <StructElement>:getText(<boolean>)
@@ -909,7 +925,7 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 <Dict>          = <StructTreeRoot>:getClassMap
 <integer>       = <StructTreeRoot>:getNumChildren
 <StructElement> = <StructTreeRoot>:getChild
-                  <StructTreeRoot>:appendChild
+                  <StructTreeRoot>:appendChild       -- will go
 <StructElement> = <StructTreeRoot>:findParentElement
 \stopfunctioncall
 
@@ -934,7 +950,8 @@ The functions \type {StructElement_Type}, \type {Attribute_Type} and \type
 <boolean>  = <XRef>:okToAccessibility()
 <boolean>  = <XRef>:okToAssemble()
 <Object>   = <XRef>:getCatalog()
-<Object>   = <XRef>:fetch(<integer> object number, <integer> object generation)
+<Object>   = <XRef>:fetch(<integer> object number,
+                <integer> object generation)
 <Object>   = <XRef>:getDocInfo()
 <Object>   = <XRef>:getDocInfoNF()
 <integer>  = <XRef>:getNumObjects()
diff --git a/manual/luatex-modifications.tex b/manual/luatex-modifications.tex
index 10b4fd7a45a8e9b82bacabc0708597bb8e27e642..af2c693632bdf0d9fed3256cae4e7e22f9245f2c 100644
--- a/manual/luatex-modifications.tex
+++ b/manual/luatex-modifications.tex
@@ -1255,6 +1255,28 @@ previous code (that mostly used \type {getc} calls), it can be quite a bit faste
 
 \stopsubsection
 
+\startsubsection[title=Tabs and spaces]
+
+We conform to the way other \TEX\ engines handle trailing tabs and spaces. For
+decades trailing tabs and spaces (before a newline) were removed from the input
+but this behaviour was changed in September 2017 to only handle spaces. We are
+aware that this can introduce compatibility issues in existing workflows but
+because we don't want too many differences with upstream \TEXLIVE\ we just follow
+up on that patch (which is a functional one and not really a fix). It is up to
+macro packages maintainers to deal with possible compatibility issues and in
+\LUATEX\ they can do so via the callbacks that deal with reading from files.
+
+The previous behaviour was a known side effect and (as that kind of input
+normally comes from generated sources) it was normally dealt with by adding a
+comment token to the line in case the spaces and|/|or tabs were intentional and
+to be kept. We are aware of the fact that this contradicts some of our other
+choices but consistency with other engines and the fact that in \KPSE\ mode a
+common file \IO\ layer is used can have a side effect of breaking compatibility.
+We still stick to our view that at the log level we can (and might be) more
+incompatible.
+
+\stopsubsection
+
 \stopsection
 
 \stopchapter
diff --git a/manual/luatex.pdf b/manual/luatex.pdf
index 9c939b46b04353ca55e0f28d520d5e4d08297283..5c767470866abd94855058dd432ddceed4f03e8f 100644
Binary files a/manual/luatex.pdf and b/manual/luatex.pdf differ