//////////////////////
 * Copyright (c) 2007-2012, Niclas Hedhman. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied.
 * See the License for the specific language governing permissions
 * and limitations under the License.
//////////////////////

[[core-runtime,Core Runtime]]
= Core Runtime =

[devstatus]
--------------
source=core/runtime/dev-status.xml
--------------

First of all, your code should never, ever, have a dependency on Core Runtime. If you think you need this, you should
probably contact users@zest.apache.org mailing list and see if your usecase can either be solved in a existing way or
perhaps that a new Core SPI Extension is needed.

include::../../build/docs/buildinfo/artifact.txt[]

Let's repeat that; *Never, never, ever depend on Core Runtime*. Make sure that the compile dependency does NOT include
the `org.apache.zest.core.runtime` jar.