You can almost always find out what a given command is doing by looking at your gmic file.

For example, in ~/.config/gmic/gimp_update1652.gmic , I searched for ‘[diffusion’, and found this:

#@gimp Smooth [diffusion] : gimp_diffusion_smoothing, gimp_diffusion_smoothing_preview(0) #@gimp : Sharpness = float(0.7,0,2) #@gimp : Anisotropy = float(0.3,0,1) #@gimp : Gradient smoothness = float(0.6,0,10) #@gimp : Tensor smoothness = float(1.1,0,10) #@gimp : Time step = float(15,5,50) #@gimp : Iterations = int(8,1,100) #@gimp : Sep = separator(), Channel(s) = choice("All","RGBA [all]","RGB [all]","RGB [red]","RGB [green]","RGB [blue]","RGBA [alpha]","Linear RGB [all]","Linear RGB [red]","Linear RGB [green]","Linear RGB [blue]","YCbCr [luminance]","YCbCr [blue-red chrominances]","YCbCr [blue chrominance]","YCbCr [red chrominance]","YCbCr [green chrominance]","Lab [lightness]","Lab [ab-chrominances]","Lab [a-chrominance]","Lab [b-chrominance]","Lch [ch-chrominances]","Lch [c-chrominance]","Lch [h-chrominance]","HSV [hue]","HSV [saturation]","HSV [value]","HSI [intensity]","HSL [lightness]","CMYK [cyan]","CMYK [magenta]","CMYK [yellow]","CMYK [key]") #@gimp : Sep = separator(), Parallel processing = choice("Auto","One thread","Two threads","Four threads","Eight threads","Sixteen threads"), Spatial overlap = int(24,0,256) #@gimp : Sep = separator(), Preview type = choice("Full","Forward horizontal","Forward vertical","Backward horizontal","Backward vertical","Duplicate horizontal","Duplicate vertical") #@gimp : Sep = separator(), note = note("<small>Author: <i>David Tschumperlé</i>. Latest update: <i>08/27/2013</i>.</small>") gimp_diffusion_smoothing : -ac "-gimp_parallel_overlap \"-smooth $6,$1,$2,$3,$4,$5,0 -c 0,255\",$8,$9",$7 gimp_diffusion_smoothing_preview : -gimp_split_preview "-gimp_diffusion_smoothing $*",$-1,{if(isval($GMIC_GIMP_TIMEOUT),0$GMIC_GIMP_TIMEOUT,8)}

It’s rather dense, but you can see the definition of gimp_diffusion_smoothing basically consists of

-smooth $6,$1,$2,$3,$4,$5,0 -c 0,255 .

where the $1 etc represent the parameters shown in the dialog (for example, $1 == sharpness, $2 == anisotropy); So it simply calls -smooth with specified values, and then uses -c (-cut) to limit the output values to the range 0…255.

(The rest of that line just takes care of applying it to the correct channels and calculating it in parallel.)