# \[ANN\] Documenter 1.9 - public keyword support

**URL:** <https://discourse.julialang.org/t/ann-documenter-1-9-public-keyword-support/127021>\
**Category:** Package Announcements\
**Tags:** package, announcement, documentation, documenter\
**Created:** [March 16, 2025, 8:56pm UTC](https://discourse.julialang.org/t/ann-documenter-1-9-public-keyword-support/127021 "2025-03-16T20:56:29Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mortenpi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mortenpi/32/158_2.png) [@mortenpi](https://discourse.julialang.org/u/mortenpi)\
**Post date:** [March 16, 2025, 8:56pm UTC](https://discourse.julialang.org/t/ann-documenter-1-9-public-keyword-support/127021/1 "2025-03-16T20:56:29Z")

</div>

I am happy to announce Documenter 1.9.0! As is often the case, there’s a bunch of changes in this release, and please see the [release notes](https://documenter.juliadocs.org/v1.9.0/release-notes/) for full details. As always, thank you to everyone who contributed!

However, one particular change I want to draw attention to is that Documenter finally supports the `public` keyword (thanks to @gdalle; [#2629](https://github.com/JuliaDocs/Documenter.jl/pull/2629)), both when running the “document checks” for missing docstrings (you have to set `checkdocs = :public`), and also in `@autodocs` blocks, when using the `Public = true` option.

The latter change may be **BREAKING** your documentation build if (1) you’re building your docs on 1.11 or above, (2) are taking advantage of the `public` keyword in your package, and (3) are using `@autodocs` blocks to list public names. From the release notes:

> This is **potentially breaking** as it can cause previously working builds to fail if they are being run in strict mode. Errors can happen if there are unexported symbols marked with `public` whose docstrings are being included manually with e.g. `@docs` blocks, and there is also an `@autodocs` block including docstrings for all public symbols. The solution is to remove the duplicate inclusion.

Given the importance of `public`, we did figure that it’s better to support it properly, and it’s worth the cost of this “minor breaking change”. I do believe that _most_ documentation builds will be fine and won’t notice this. Apologies to anyone who does get hit by this though.

Happy documenting! ✍

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [March 16, 2025, 10:01pm UTC](https://discourse.julialang.org/t/ann-documenter-1-9-public-keyword-support/127021/2 "2025-03-16T22:01:16Z")

</div>

Let the mayhem begin

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [March 17, 2025, 7:02pm UTC](https://discourse.julialang.org/t/ann-documenter-1-9-public-keyword-support/127021/3 "2025-03-17T19:02:22Z")

</div>

> [@mortenpi](#):
>
> `@autodocs` blocks, when using the `Public = true` option.

Is there any intention to introduce a distinction between “exported” and “public” (not exported) in the `@autodocs` as well?

---

<div class="post-metadata">

**Author:** ![mortenpi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mortenpi/32/158_2.png) [@mortenpi](https://discourse.julialang.org/u/mortenpi)\
**Post date:** [March 17, 2025, 10:55pm UTC](https://discourse.julialang.org/t/ann-documenter-1-9-public-keyword-support/127021/4 "2025-03-17T22:55:26Z")

</div>

> [@Eben60](#):
>
> Is there any intention to introduce a distinction between “exported” and “public” (not exported) in the `@autodocs` as well?

This seems like a reasonable option to have if anyone wants to take up the implementation.
